Re: [Tapestry Central] Next Steps for Tapestry
Howard, why don't collaborate with Igor to have the book in Engllish? Instead of starting a new project for it you can try to have Igor book as a starting point or even better a final point and only have to translate a commonly reviewed version and publish it together . I understand you want to have T5 up to date against the competition but really the book is mandatory if you want to have people to use it consciously and having it only in German means to exclude the great majority of the web developers. If you go ahead with it I could help in reviewing it and I also suggest you try to use some list members as an help, like it was made for the web site. cuartz ha scritto: I think both are necessary to make tapestry more popular, but i think would be better if you work on code, tapestry is already known by a lot of people, i’m a 24 years old Mexican and in my 3 years of experience i already have been part of 2 tapestry 5 big projects, the first last 10 months and i’m working on the second project 3 months ago, and today when there is a discussion of which framework to use at the start of a project, tapestry 5 is consider, so now there is a matter of which framework is better, i know this from myself and from the developers i know. Also the book can be written by other people but you are the only one who can work in the code. i think that any improvement you maid (faster requests or richer web apps) is going to be great and i can’t wait to see it. cheers and sorry for my bad english. - Carlos Araham U. Bayona Smythe. -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
i18n overhead
We have about 200 properties files and 200 templates files. Adding a language (+400 files) to the project had seemingly a huge impact on the performance - to start the server at least - I'd say 50% more time required. Is there any performance impact based on the number of languages or prop/tml files? If so, is there a way (via some calls or files arrangement or...?) to optimize the multi-language functionality? We are using the version 5. -- View this message in context: http://old.nabble.com/i18n-overhead-tp26252169p26252169.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
I understand that book would be valuable addition to Tapestry, but I would also prefer you to spend your time doing the coding, and if I may add, not so much on new features (like Spring Web Flow), but more on improving already present ideas since there are many places for improvement. One thing that comes to my mind is - various ways of passing parameters between pages (for example for search form criteria etc..), Javascript support that you mentioned, etc... These things are pretty much needed in every web app out there. I just converted my first T4 app to T5, and although it was generaly better experience, I have found few places where things became harder that it was before, for eg - no properly working submit button context, no easy option to turn of sorting in grids, and similar bits and pieces... Regards, Vjeran - Original Message - From: Howard hls...@gmail.com To: users@tapestry.apache.org Sent: Saturday, November 07, 2009 7:11 PM Subject: [Tapestry Central] Next Steps for Tapestry I've been consciously letting Tapestry 5.1 sit and stabilize for a while ... a time that's stretched a few months longer than I initially intended. This is due to a number of factors: my return to independent consulting, my desire to write a definitive Tapestry 5 book, and preparations for many trips and speaking engagements. All of these factors have worked on each other: I've been improving and extending my Tapestry Workshop training materials which can be quite time consuming. I've also (over the last several months) been on the road several times, talking about Tapestry or doing Tapestry training. I do want to write a book on Tapestry but if I start writing 5.2 code, I know I'll be sucked right in ... lots of code (that darn Spring Web Flow integration for sure this time) and bug fixes. In addition, I've had an embarassment of riches: two main clients, one regular part time, and the other requesting (but not always getting) all my remaining time. I also have additional clients and training engagements waiting in the wings. I simply have a lot of draws on my time. As usual, working on real-world projects lets me experience the rough edges of Tapestry and fills me with ideas on how to address those in the next release ... often by splitting up Tapestry services into smaller, more easily overridden chunks and carefully moving internal services out into the public APIs. Finally, I've been very pleased by the fact that as I've stepped back temporarily from my normal stream of commits, the other Tapestry developers have stepped in and filled the gap. There's been quite a bit of activity especially from Igor that I've barely had a chance to keep up on. So the question is: do I wait and see if time opens up in Q1 to actually start on a T5 book ... or do I jump into 5.2 coding and leave books to others? It's much, much easier to write code than to write a book ... a book is a large amount of concentrated effort. It's very hard to accomplish anything on a book using an hour here or an evening there ... whereas Tapestry's code base lends itself to that kind of effort quite nicely. -- Posted By Howard to Tapestry Central at 11/07/2009 10:11:00 AM No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.425 / Virus Database: 270.14.53/2486 - Release Date: 11/07/09 07:38:00 - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
Howard: I agree with the posters that say refine your code-base as priority one, and I agree that writing the book is a very close priority two. So the question isn't really which should you do, as both are crucial to Tapestry the product and it's community of users. The problem is how best to leverage your knowledge. You must delegate and direct, or you become Tapestry's main growth bottleneck. You already know this, of course, so the question is how do I leverage me? Number one: find a book author that knows almost as much as you do. Maybe Igor's that person, since he both knows the product (I guess; haven't read his book) and has written a book. The question then is incentives. Writing a book is tough, and Tapestry's market is narrower (but not for long!) than other possible uses of book-writers' time. What can you do to make it economically worthwhile for that book-writer, or an existing book-writer's publisher, to write another? My next phone call would be to Igor's publisher, and say Hey, you guys just wrote a book for the German market. You already sunk all those costs, now why not make a lot more revenue from your investment? How would you like to do a good translation, and sell into the vastly larger English market (~80Mil audience .vs. 500Mil)? Tapestry is used in Europe, U.S., English-speaking Asia, Australia, U.K, etc Find out if that publisher's ready to expand into U.S. - that may be on their mind. Also, see about electronic publishing instead of hard-bound. I bought an e-book on Tapestry a while back, and it was pretty helpful. I'd do it again in a heartbeat. That'll reduce the publisher's risk a LOT. Also, there's a good UK publisher that does e-books already, and does it well. I bought a Lucene book that way not long ago, and would use them again in a heartbeat. Think reduced publisher risk, and I.T. users are ideal e-book buyers. Next: Think about the steps that the SpringSource people went through as they spun up their business. They added a consulting arm, and that generated enough revenue to do documentation - hiring a full-timer to do it right, did a really strong online reference, etc. Consulting is an excellent revenue-producer. Can you replicate you in that capacity also? Would you want to? How do you see growth and managing stuff? Some people (very logically) run screaming from the room if the subject's brought up ;) Another idea: ask your contributors here at the forum to consider writing documentation modules. Consider an annual subscription fee of $20-50 to be a member of a support system that has a bunch of contributed modules. Pro-rata distribute the subscription fee to the modules-writers based on hits. There are a number of people here that are capable, and if you provided the incentive...they might do it. If you can provide the money-channel and the set of next-most-needed topics, I bet you might find some takers. The problem is centrally a one of incentives for the right people to step up and do the work. Why would someone want to write documentation? Credit, money, resume-stuffer, book-deal...what? OK, now find a way to get them what they want in order to remove info-flow bottlenecks that are impeding Tapestry's growth. You may also consider moving away from the book format altogether and concentrate your writing onto your website. Make it a knowledge vending machine. Ask your forum of smart people this question: If I was to design a self-sustaining, revenue-producing mechanism that produced great on-line doc for Tapestry, leveraged all you brilliant people, and made it worth your while to do it, what would that design be like? I think the key is to leverage existing Tapestry knowledge, especially yours. How can that knowledge be replicated, extended, sub-classed...? How can the knowledge of your many very talented forum posters be captured, replicated, distributed...? Good luck. We all wish for your continued success. I'll be in your neck of the woods 2nd week of Dec if you want to meet for a cuppa joe and discuss it further. -- View this message in context: http://old.nabble.com/-Tapestry-Central--Next-Steps-for-Tapestry-tp26248673p26253018.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Adding XML process-instruction to tml
Hi, I would like to add a PI for xml-stylesheet to some of my pure XML pages, eg. in the tml... ?xml version=1.0 encoding=UTF-8? ?xml-stylesheet type=text/xsl href=/aggregator/stylesheet.xsl? rdf:RDF ... Tapestry (5.1.0.5) complains that PROCESSING_INSTRUCTION is unrecognised. Is there a simple workaround for this? Thanks, Alfie.
Re: i18n overhead
Why so many property files? Just curious. :) This is a big project... What exact version? 5.1.05? 5.0.18? 5.0.18 Is your question an incentive to migrate to 5.1? -- View this message in context: http://old.nabble.com/i18n-overhead-tp26252169p26253714.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
Couldn't it be a hybrid approach? One day or week coding Tapestry, then the next writing the book? By the way, I'd love write a Tapestry book. One company here at Belo Horizonte, Brazil has just contracted me to have both introductory and advanced Tapestry courses. My plans are to write the textbooks with the target of being transformed in a book later, first in Portuguese, then translated to English. The more Tapestry books, the better. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: GAE and Tapestry5 integration
Tapestry 5.1 should run on GAE 1.2.6(7) as is. I used T5.1 w/ Spring/JPA on GAE and didn't get any troubles at the cloud except some issues on development machine: http://dmitrygusev.blogspot.com/2009/10/develope-java-applications-with-gae-sdk.html http://dmitrygusev.blogspot.com/2009/08/turn-java-security-manager-off-in.html On Sun, Nov 8, 2009 at 16:51, sodium sodiu...@yahoo.com wrote: Hi, I have been using Tapestry5 for few of my projects and loving it, but i am thinking of integrating it in Google App Engine. As for Tapestry 5.0.18, i have managed to run it without jpa support by following an example of http://old.nabble.com/SUCCESSFULL-deploy-Tapestry5-on-google-appengine-ts23018048.html http://old.nabble.com/SUCCESSFULL-deploy-Tapestry5-on-google-appengine-ts23018048.html For Tapestry5.1, i still very confused about http://old.nabble.com/Tapestry-5.1-running-in-Google-App-Engine-%28GAE%29-tp24923950p24927028.html http://old.nabble.com/Tapestry-5.1-running-in-Google-App-Engine-%28GAE%29-tp24923950p24927028.html Actually my biggest concern is using jpa in GAE with Tapestry5, can anyone provide some clues on how to go about integrating Tap5 with jpa for GAE ? If someone can provide a sample project for GAE(1.2.6) Tapestry5(hopefully 5.1) integration with jpa support, i will definitely bow down to u like a slave. Been scratching my head so hard that my hair is starting to fall... I tried integration Tapestry 5.0.18 with guice2 for jpa support from http://old.nabble.com/Integration-of-T5-with-the-domain-model-ts9953748s302.html http://old.nabble.com/Integration-of-T5-with-the-domain-model-ts9953748s302.html but the EntityManager keep returning null. Sigh.. Any pointers and advice is very much appreciated. -- View this message in context: http://old.nabble.com/GAE-and-Tapestry5-integration-tp26253952p26253952.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Dmitry Gusev AnjLab Team http://anjlab.com
Re: GAE and Tapestry5 integration
Here's some examples: *ping-service\src\META-INF\persistence.xml:* ?xml version=1.0 encoding=UTF-8 ? persistence xmlns=http://java.sun.com/xml/ns/persistence; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation=http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd; version=1.0 persistence-unit name=transactions-optional providerorg.datanucleus.store.appengine.jpa.DatastorePersistenceProvider/provider properties property name=datanucleus.NontransactionalRead value=true/ property name=datanucleus.NontransactionalWrite value=true/ property name=datanucleus.ConnectionURL value=appengine/ /properties /persistence-unit /persistence *ping-service\war\WEB-INF\applicationContext.xml:* ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:aop=http://www.springframework.org/schema/aop; xmlns:tx=http://www.springframework.org/schema/tx; xmlns:context=http://www.springframework.org/schema/context; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd tx:advice id=txAdvice transaction-manager=txManager tx:attributes tx:method name=* propagation=REQUIRES_NEW / /tx:attributes /tx:advice aop:config aop:pointcut id=daoOperations expression=execution(* dmitrygusev.ping.services.dao.*.*(..)) / aop:advisor advice-ref=txAdvice pointcut-ref=daoOperations / /aop:config bean id=entityManagerFactory class=org.springframework.orm.jpa.LocalEntityManagerFactoryBean lazy-init=true property name=persistenceUnitName value=transactions-optional / /bean bean name=txManager class=org.springframework.orm.jpa.JpaTransactionManager property name=entityManagerFactory ref=entityManagerFactory / /bean context:annotation-config/ bean name=jobsDAO class=dmitrygusev.ping.services.dao.impl.JobDAOImpl/ bean name=refDAO class=dmitrygusev.ping.services.dao.impl.RefDAOImpl/ bean name=accountDAO class=dmitrygusev.ping.services.dao.impl.AccountDAOImpl/ bean name=scheduleDAO class=dmitrygusev.ping.services.dao.impl.ScheduleDAOImpl/ bean name=jobResultDAO class=dmitrygusev.ping.services.dao.impl.JobResultDAOImpl/ /beans *ping-service\src\dmitrygusev\ping\services\dao\ScheduleDAO.java :* package dmitrygusev.ping.services.dao; import com.google.appengine.api.datastore.Key; import dmitrygusev.ping.entities.Schedule; public interface ScheduleDAO { public abstract void update(Schedule schedule); public abstract void delete(Long id); public abstract Schedule createSchedule(String name); public abstract Schedule find(Key scheduleKey); } *ping-service\src\dmitrygusev\ping\services\dao\impl\ScheduleDAOImpl.java :* package dmitrygusev.ping.services.dao.impl; import static com.google.appengine.api.datastore.KeyFactory.createKey; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.google.appengine.api.datastore.Key; import dmitrygusev.ping.entities.Schedule; import dmitrygusev.ping.services.dao.ScheduleDAO; public class ScheduleDAOImpl implements ScheduleDAO { @PersistenceContext private EntityManager em; public Schedule createSchedule(String name) { Schedule schedule = new Schedule(); schedule.setName(name); em.persist(schedule); return schedule; } @Override public void update(Schedule schedule) { em.merge(schedule); } @Override public void delete(Long id) { Schedule schedule = find(createKey(Schedule.class.getSimpleName(), id)); em.remove(schedule); } @Override public Schedule find(Key scheduleKey) { return em.find(Schedule.class, scheduleKey); } } *Then inject ScheduleDAO in your page class using T5's @Inject annotation and use it.* On Sun, Nov 8, 2009 at 17:46, Dmitry Gusev dmitry.gu...@gmail.com wrote: Tapestry 5.1 should run on GAE 1.2.6(7) as is. I used T5.1 w/ Spring/JPA on GAE and didn't get any troubles at the cloud except some issues on development machine: http://dmitrygusev.blogspot.com/2009/10/develope-java-applications-with-gae-sdk.html http://dmitrygusev.blogspot.com/2009/08/turn-java-security-manager-off-in.html On Sun, Nov 8, 2009 at 16:51, sodium sodiu...@yahoo.com wrote:
Re: Adding XML process-instruction to tml
A component could do this, by outputting the ?xml-stylesheet tag using markupWriter.writeRaw(). On Sun, Nov 8, 2009 at 4:04 AM, Alfie Kirkpatrick alfie.kirkpatr...@ioko.com wrote: Hi, I would like to add a PI for xml-stylesheet to some of my pure XML pages, eg. in the tml... ?xml version=1.0 encoding=UTF-8? ?xml-stylesheet type=text/xsl href=/aggregator/stylesheet.xsl? rdf:RDF ... Tapestry (5.1.0.5) complains that PROCESSING_INSTRUCTION is unrecognised. Is there a simple workaround for this? Thanks, Alfie. -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
Well, I think you should do what you feel is best for you right now. If you need a timeout from coding then write a book. If you feel a book will take too much of your time then code again. I'm still hoping my publisher will translate my book. So maybe there will be an english book even if you decide not to write one. I asked the published several times but didn't get any feedback yet. I suppose they are not ready to make a decision right now. However, if you need some co-authors I'm ready. Not sure I'm allowed to but I can check it. I remember some clause in my contract about writing competing books. Don't get me wrong but a 5.2.0.0 release without any single commit of Howard would be something awful. :) It would be a historical event and the final prove that Tapestry is no longer a one men show. We have 29 fixed issues in current 5.2 trunk. The both most popular issues will be fixed in the next days. I'm on the verge of committing fix for http://issues.apache.org/jira/browse/TAP5-138 . Robert was going to provide a fix for https://issues.apache.org/jira/browse/TAP5-815 this weekend. JSR 303 support is almost there. On Sat, Nov 7, 2009 at 7:11 PM, Howard hls...@gmail.com wrote: I've been consciously letting Tapestry 5.1 sit and stabilize for a while ... a time that's stretched a few months longer than I initially intended. This is due to a number of factors: my return to independent consulting, my desire to write a definitive Tapestry 5 book, and preparations for many trips and speaking engagements. All of these factors have worked on each other: I've been improving and extending my Tapestry Workshop training materials which can be quite time consuming. I've also (over the last several months) been on the road several times, talking about Tapestry or doing Tapestry training. I do want to write a book on Tapestry but if I start writing 5.2 code, I know I'll be sucked right in ... lots of code (that darn Spring Web Flow integration for sure this time) and bug fixes. In addition, I've had an embarassment of riches: two main clients, one regular part time, and the other requesting (but not always getting) all my remaining time. I also have additional clients and training engagements waiting in the wings. I simply have a lot of draws on my time. As usual, working on real-world projects lets me experience the rough edges of Tapestry and fills me with ideas on how to address those in the next release ... often by splitting up Tapestry services into smaller, more easily overridden chunks and carefully moving internal services out into the public APIs. Finally, I've been very pleased by the fact that as I've stepped back temporarily from my normal stream of commits, the other Tapestry developers have stepped in and filled the gap. There's been quite a bit of activity especially from Igor that I've barely had a chance to keep up on. So the question is: do I wait and see if time opens up in Q1 to actually start on a T5 book ... or do I jump into 5.2 coding and leave books to others? It's much, much easier to write code than to write a book ... a book is a large amount of concentrated effort. It's very hard to accomplish anything on a book using an hour here or an evening there ... whereas Tapestry's code base lends itself to that kind of effort quite nicely. -- Posted By Howard to Tapestry Central at 11/07/2009 10:11:00 AM -- Best regards, Igor Drobiazko
Suggestion for instance-based authorization?
Hello all, I have a T5 app that have typical security restriction to some pages based on role, but also based on domain-specific instances that can be resolved from request parameters. For example, request to web page ShowDocument that accepts documentID as parameter can be allowed only to users with ROOT role, or user with CUSTOMER role *only if it is THE customer who created this document*, meaning, I have to resolve document's customer and compare it to logged in user inside HttpSession to check if he's authorized. Since page-specific request parameters are set inside each T5 page via activate event, the only time to perform authorization would be after that. It would be best if there can be some new event plugged in request pipeline, that would be fired right after activate event, and where I could perform some page-specific authorization, and return login page if not authorized. Is this possible to do now somehow? Or some other suggestion? BR, Vjeran - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
Igor : just an idea on the translation front. I know that the NetBeans community already did two community translated books from German, so it might be interesting if the same model is possible in the Tapestry community. I think it was mostly a volunteer effort but it got two NetBeans RCP books translated in no time. In other words, if there are half a dozen to a dozen people in the community who know both German and English and are willing to translate a chapter or two, then the publisher only needs an editor to verify that the translation is good - much less effort on their part, much faster to get the books selling in English speaking countries, much faster way to get the books into the community. On my part, although I can't offer any skills in doing the actual translation, I can offer some of my time to proof read chapters that are already translated. Luckily, code (usually) doesn't need much translating. Cheers, Alex K On Sun, Nov 8, 2009 at 10:55 AM, Igor Drobiazko igor.drobia...@gmail.comwrote: Well, I think you should do what you feel is best for you right now. If you need a timeout from coding then write a book. If you feel a book will take too much of your time then code again. I'm still hoping my publisher will translate my book. So maybe there will be an english book even if you decide not to write one. I asked the published several times but didn't get any feedback yet. I suppose they are not ready to make a decision right now. However, if you need some co-authors I'm ready. Not sure I'm allowed to but I can check it. I remember some clause in my contract about writing competing books. Don't get me wrong but a 5.2.0.0 release without any single commit of Howard would be something awful. :) It would be a historical event and the final prove that Tapestry is no longer a one men show. We have 29 fixed issues in current 5.2 trunk. The both most popular issues will be fixed in the next days. I'm on the verge of committing fix for http://issues.apache.org/jira/browse/TAP5-138 . Robert was going to provide a fix for https://issues.apache.org/jira/browse/TAP5-815 this weekend. JSR 303 support is almost there. On Sat, Nov 7, 2009 at 7:11 PM, Howard hls...@gmail.com wrote: I've been consciously letting Tapestry 5.1 sit and stabilize for a while ... a time that's stretched a few months longer than I initially intended. This is due to a number of factors: my return to independent consulting, my desire to write a definitive Tapestry 5 book, and preparations for many trips and speaking engagements. All of these factors have worked on each other: I've been improving and extending my Tapestry Workshop training materials which can be quite time consuming. I've also (over the last several months) been on the road several times, talking about Tapestry or doing Tapestry training. I do want to write a book on Tapestry but if I start writing 5.2 code, I know I'll be sucked right in ... lots of code (that darn Spring Web Flow integration for sure this time) and bug fixes. In addition, I've had an embarassment of riches: two main clients, one regular part time, and the other requesting (but not always getting) all my remaining time. I also have additional clients and training engagements waiting in the wings. I simply have a lot of draws on my time. As usual, working on real-world projects lets me experience the rough edges of Tapestry and fills me with ideas on how to address those in the next release ... often by splitting up Tapestry services into smaller, more easily overridden chunks and carefully moving internal services out into the public APIs. Finally, I've been very pleased by the fact that as I've stepped back temporarily from my normal stream of commits, the other Tapestry developers have stepped in and filled the gap. There's been quite a bit of activity especially from Igor that I've barely had a chance to keep up on. So the question is: do I wait and see if time opens up in Q1 to actually start on a T5 book ... or do I jump into 5.2 coding and leave books to others? It's much, much easier to write code than to write a book ... a book is a large amount of concentrated effort. It's very hard to accomplish anything on a book using an hour here or an evening there ... whereas Tapestry's code base lends itself to that kind of effort quite nicely. -- Posted By Howard to Tapestry Central at 11/07/2009 10:11:00 AM -- Best regards, Igor Drobiazko
Re: Suggestion for instance-based authorization?
Em Sun, 08 Nov 2009 14:22:46 -0200, Vjeran Marcinko vjeran.marci...@email.t-com.hr escreveu: Hello all, Hi! I have a T5 app that have typical security restriction to some pages based on role, but also based on domain-specific instances that can be resolved from request parameters. I implemented by inside my Tapestry CRUD (http://www.arsmachina.com.br/project/tapestrycrud) package in its 1.1 branch). Warning: very outdated documentation. Every attempt to view, edit, remove or list objects is checked against an authorization service (from my Generic Authorization Package, used in production but not released yet). -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Good news about Tapestry 5 in Google App Engine
Well, it took me longer than I wanted, but the patch has been applied. Thanks again. -- Kevin On Thu, Oct 29, 2009 at 8:47 AM, Kevin Menard nirvd...@gmail.com wrote: Thanks for opening TAP5-913, Dmitry. I'll try to apply this tonight. Unfortunately the test system for Tapestry doesn't work for Snow Leopard, so I have to run in a VM to verify everything is passing. -- Kevin On Wed, Oct 28, 2009 at 7:31 AM, Dmitry Gusev dmitry.gu...@gmail.com wrote: I've made a Pull request on github with fixes for java.lang.VerifyError. Here's the commit details: http://github.com/dmitrygusev/tapestry5/commit/35197745d13ffed1fb89d730dbc85f750bf50bb0 On Mon, Sep 14, 2009 at 07:14, Alex Kotchnev akoch...@gmail.com wrote: A follow up question to the committers on this : Is Jun's approach below something acceptable to do in the meantime ? I was trying to deploy a test 5.1 app to GAE and I ran into the same issue. As he indicated these methods had emtpy try-catch blocks, removing which is supposed to resolve the issue. THe part that worries me are the magical $ANTLR comments that I think can somehow be used by ANTLR. Any tips ? Cheers, Alex K On Fri, Sep 4, 2009 at 3:50 AM, Jun Tsai jun.t...@gmail.com wrote: I had manually fixed the problem.Remove some empty method body in PropertyExpressionLexer.java maked by antlr. // $ANTLR start INTEGER public final void mINTEGER() throws RecognitionException { } // $ANTLR end INTEGER // $ANTLR start DEREF public final void mDEREF() throws RecognitionException { } // $ANTLR end DEREF // $ANTLR start RANGEOP public final void mRANGEOP() throws RecognitionException { } // $ANTLR end RANGEOP // $ANTLR start DECIMAL public final void mDECIMAL() throws RecognitionException { } and repacked. It works fine. 2009/9/4 Jun Tsai jun.t...@gmail.com The ticket had been fixed.I had tested on GAE using 1.2.5 SDK. But when I write simple pagelink t:pagelink page=about about/t:pagelink ,some exception thrown. java.lang.VerifyError: (class: org/apache/tapestry5/internal/antlr/PropertyExpressionLexer, method: mRANGEOP signature: ()V) Stack size too large at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.parse(PropertyConduitSourceImpl.java:1229) at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1124) at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.create(PropertyConduitSourceImpl.java:1080) Who can give me an idea about the exception. thanks. 2009/9/4 Thiago H. de Paula Figueiredo thiag...@gmail.com --- Mensagem encaminhada --- De: codesite-nore...@google.com Assunto: Issue 1277 in googleappengine: Add javax.xml.stream to whitelist Data: Thu, 03 Sep 2009 19:34:42 -0300 Updates: Status: Fixed Labels: Version-1.2.5 Comment #12 on issue 1277 by sly...@google.com: Add javax.xml.stream to whitelist http://code.google.com/p/googleappengine/issues/detail?id=1277 This has been fixed in the 1.2.5 release. http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes Support for the Stax API, javax.xml.stream. You can now use both the JDK's Stax parser as well as third-party Stax libraries like Woodstox. Can anyone confirm that a vanilla Tapestry 5.1.0.5 works in GAE now? -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- regards, Jun Tsai -- regards, Jun Tsai -- Dmitry Gusev AnjLab Team http://anjlab.com - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: How do you pass a context to PageTester?
I'd like to know how to do this too. Basically, I'm looking to invoke a page and pass it a request parameter. Is this possible? Thanks, Matt Mats Henricson-2 wrote: Hi! Since Testify isn't working for me, I thought I'd look at this page: http://tapestry.apache.org/tapestry5.1/guide/unit-testing-pages.html It has this example: PageTester tester = new PageTester(appPackage, appName, ...); Object[] context = new Object[]{ abc, 123 }; Document doc = tester.invoke(new ComponentInvocation( new PageLinkTarget(MyPage), context)); Unfortunately I can't find a PageTester.invoke() function in T5.1. There isn't a ComponentInvocation class either. So, how IS this supposed to work? And what exactly IS that context? Is it possible to override the @Injected services with mock services into my page this way? Mats - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- View this message in context: http://old.nabble.com/How-do-you-pass-a-context-to-PageTester--tp25274401p26256779.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
How large can post be in Tapestry 5.1.0.5?
An unexpected application exception has occurred. - java.lang.IllegalStateException Post too large Hide uninteresting stack framesStack trace - org.apache.catalina.connector.Request.parseParameters(Request.java:2388) - org.apache.catalina.connector.Request.getParameter(Request.java:1005) - org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:353) - org.apache.tapestry5.internal.services.RequestImpl.getParameter(RequestImpl.java:72) - org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(ComponentEventLinkEncoderImpl.java:244) - $ComponentEventLinkEncoder_124d5c4d438.decodeComponentEventRequest($ComponentEventLinkEncoder_124d5c4d438.java) - org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:42) - $Dispatcher_124d5c4d439.dispatch($Dispatcher_124d5c4d439.java) - $Dispatcher_124d5c4d430.dispatch($Dispatcher_124d5c4d430.java) - org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245) - org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) - $RequestHandler_124d5c4d431.service($RequestHandler_124d5c4d431.java) - org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778) - $RequestHandler_124d5c4d431.service($RequestHandler_124d5c4d431.java) - org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767) - $RequestHandler_124d5c4d431.service($RequestHandler_124d5c4d431.java) - org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) - $RequestHandler_124d5c4d431.service($RequestHandler_124d5c4d431.java) - org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) - org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81) - org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) - org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) - $RequestHandler_124d5c4d431.service($RequestHandler_124d5c4d431.java) - $RequestHandler_124d5c4d427.service($RequestHandler_124d5c4d427.java) - org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197) - org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44) - $HttpServletRequestHandler_124d5c4d429.service($HttpServletRequestHandler_124d5c4d429.java) - org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) - $HttpServletRequestHandler_124d5c4d429.service($HttpServletRequestHandler_124d5c4d429.java) - org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) - $HttpServletRequestFilter_124d5c4d425.service($HttpServletRequestFilter_124d5c4d425.java) - $HttpServletRequestHandler_124d5c4d429.service($HttpServletRequestHandler_124d5c4d429.java) - org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726) - $HttpServletRequestHandler_124d5c4d429.service($HttpServletRequestHandler_124d5c4d429.java) - $HttpServletRequestHandler_124d5c4d423.service($HttpServletRequestHandler_124d5c4d423.java) - org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127) - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) - org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) - org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) - org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) - org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) - org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) - org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) - org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) - org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) - org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) - org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) -
Re: How large can post be in Tapestry 5.1.0.5?
Em Sun, 08 Nov 2009 19:58:00 -0200, Argo Vilberg wilps...@gmail.com escreveu: An unexpected application exception has occurred. - java.lang.IllegalStateException Post too large Hide uninteresting stack framesStack trace - org.apache.catalina.connector.Request.parseParameters(Request.java:2388) Notice it's a Tomcat exception, not a Tapestry one. Anyway, I guess it is much more of a server issue than a Tapestry one. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Beanformedit question
Hello all, This is my first message to the list. I'm new to tapestry and I'm evaluating it and looking for some guidance. Let's say I have a java bean with: String nick; String firstName; String lastName; String hashPassword; I want to use beaneditform to create a new user but I want to add new fields: password retypePassword and validade the presence of both and their equality. You know, that typical registration process. When user submit the new data I want to validate the equality of both password and confirmPassword and set a hash based on password in the field hashPassword in the bean. Does anybody have a sample code that I can use to know what is the best way to achieve this with tapestry? thank you
Re: beaneditform question
Sorry, I mean beaneditform, not beaneditform On Mon, Nov 9, 2009 at 1:05 AM, Jonhy Pear jonhy.p...@gmail.com wrote: Hello all, This is my first message to the list. I'm new to tapestry and I'm evaluating it and looking for some guidance. Let's say I have a java bean with: String nick; String firstName; String lastName; String hashPassword; I want to use beaneditform to create a new user but I want to add new fields: password retypePassword and validade the presence of both and their equality. You know, that typical registration process. When user submit the new data I want to validate the equality of both password and confirmPassword and set a hash based on password in the field hashPassword in the bean. Does anybody have a sample code that I can use to know what is the best way to achieve this with tapestry? thank you -- João Miguel Pereira http://jpereira.eu LinkedIn: http://www.linkedin.com/in/joaomiguelpereira joaomiguel.pere...@gmail.com (351) 96 275 68 58
Re: beaneditform question
Hi Simple sample(t5.1): In tml: form t:id=regForm t:type=beaneditform object=user include=nick,firstName,lastName add=password,retypePassword p:password t:label for=password/ t:passwordfield t:id=password validate=required /p:password p:retypePassword t:label for=retypePassword/ t:passwordfield t:id=retypePassword validate=required /p:retypePassword /form In java: @Component private BeanEditForm regForm; @Property private User user; // your user entity @Property private String password; @Property private String retypePassword; Object onValidate() { if (!password.equals(retypePassword)) { regForm.recordError(password and retypepassword must be == ); return this; // meaning validation failed } return null; // validation successfully. } Object onSuccess() { user.setPassword(encodeutil.encode(password)); service.save(user); return successpage or other; } DH http://www.gaonline.com.cn - Original Message - From: Jonhy Pear To: users@tapestry.apache.org Sent: Monday, November 09, 2009 9:21 AM Subject: Re: beaneditform question Sorry, I mean beaneditform, not beaneditform On Mon, Nov 9, 2009 at 1:05 AM, Jonhy Pear jonhy.p...@gmail.com wrote: Hello all, This is my first message to the list. I'm new to tapestry and I'm evaluating it and looking for some guidance. Let's say I have a java bean with: String nick; String firstName; String lastName; String hashPassword; I want to use beaneditform to create a new user but I want to add new fields: password retypePassword and validade the presence of both and their equality. You know, that typical registration process. When user submit the new data I want to validate the equality of both password and confirmPassword and set a hash based on password in the field hashPassword in the bean. Does anybody have a sample code that I can use to know what is the best way to achieve this with tapestry? thank you -- João Miguel Pereira http://jpereira.eu LinkedIn: http://www.linkedin.com/in/joaomiguelpereira joaomiguel.pere...@gmail.com (351) 96 275 68 58
tapestry4 contrib table making same multiple hibernate query
May i know does anyone experience this in tapestry 4. I have a page that query for table row and count. but from hibernate log, it show repeating same query for multiple times. is this normal? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select * from ( select this_.ID as ID14_0_, this_.CATEGORYNAME as CAT EGORY2_14_0_ from TESTTABLEONLY this_ where this_.CATEGORYNAME like ? order b y this_.CATEGORYNAME desc ) where rownum = ? Hibernate: select * from ( select this_.ID as ID14_0_, this_.CATEGORYNAME as CAT EGORY2_14_0_ from TESTTABLEONLY this_ where this_.CATEGORYNAME like ? order b y this_.CATEGORYNAME desc ) where rownum = ? Hibernate: select * from ( select this_.ID as ID14_0_, this_.CATEGORYNAME as CAT EGORY2_14_0_ from TESTTABLEONLY this_ where this_.CATEGORYNAME like ? order b y this_.CATEGORYNAME desc ) where rownum = ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? Hibernate: select count(*) as y0_ from TESTTABLEONLY this_ where this_.CATEGO RYNAME like ? - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
Hi Alex, I'll ask the publisher again and suggest your idea. 08.11.2009, в 17:41, Alex Kotchnev akoch...@gmail.com написал(а): Igor : just an idea on the translation front. I know that the NetBeans community already did two community translated books from German, so it might be interesting if the same model is possible in the Tapestry community. I think it was mostly a volunteer effort but it got two NetBeans RCP books translated in no time. In other words, if there are half a dozen to a dozen people in the community who know both German and English and are willing to translate a chapter or two, then the publisher only needs an editor to verify that the translation is good - much less effort on their part, much faster to get the books selling in English speaking countries, much faster way to get the books into the community. On my part, although I can't offer any skills in doing the actual translation, I can offer some of my time to proof read chapters that are already translated. Luckily, code (usually) doesn't need much translating. Cheers, Alex K On Sun, Nov 8, 2009 at 10:55 AM, Igor Drobiazko igor.drobia...@gmail.com wrote: Well, I think you should do what you feel is best for you right now. If you need a timeout from coding then write a book. If you feel a book will take too much of your time then code again. I'm still hoping my publisher will translate my book. So maybe there will be an english book even if you decide not to write one. I asked the published several times but didn't get any feedback yet. I suppose they are not ready to make a decision right now. However, if you need some co-authors I'm ready. Not sure I'm allowed to but I can check it. I remember some clause in my contract about writing competing books. Don't get me wrong but a 5.2.0.0 release without any single commit of Howard would be something awful. :) It would be a historical event and the final prove that Tapestry is no longer a one men show. We have 29 fixed issues in current 5.2 trunk. The both most popular issues will be fixed in the next days. I'm on the verge of committing fix for http://issues.apache.org/jira/browse/TAP5-138 . Robert was going to provide a fix for https://issues.apache.org/jira/browse/TAP5-815 this weekend. JSR 303 support is almost there. On Sat, Nov 7, 2009 at 7:11 PM, Howard hls...@gmail.com wrote: I've been consciously letting Tapestry 5.1 sit and stabilize for a while ... a time that's stretched a few months longer than I initially intended. This is due to a number of factors: my return to independent consulting, my desire to write a definitive Tapestry 5 book, and preparations for many trips and speaking engagements. All of these factors have worked on each other: I've been improving and extending my Tapestry Workshop training materials which can be quite time consuming. I've also (over the last several months) been on the road several times, talking about Tapestry or doing Tapestry training. I do want to write a book on Tapestry but if I start writing 5.2 code, I know I'll be sucked right in ... lots of code (that darn Spring Web Flow integration for sure this time) and bug fixes. In addition, I've had an embarassment of riches: two main clients, one regular part time, and the other requesting (but not always getting) all my remaining time. I also have additional clients and training engagements waiting in the wings. I simply have a lot of draws on my time. As usual, working on real-world projects lets me experience the rough edges of Tapestry and fills me with ideas on how to address those in the next release ... often by splitting up Tapestry services into smaller, more easily overridden chunks and carefully moving internal services out into the public APIs. Finally, I've been very pleased by the fact that as I've stepped back temporarily from my normal stream of commits, the other Tapestry developers have stepped in and filled the gap. There's been quite a bit of activity especially from Igor that I've barely had a chance to keep up on. So the question is: do I wait and see if time opens up in Q1 to actually start on a T5 book ... or do I jump into 5.2 coding and leave books to others? It's much, much easier to write code than to write a book ... a book is a large amount of concentrated effort. It's very hard to accomplish anything on a book using an hour here or an evening there ... whereas Tapestry's code base lends itself to that kind of effort quite nicely. -- Posted By Howard to Tapestry Central at 11/07/2009 10:11:00 AM -- Best regards, Igor Drobiazko - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: How do you pass a context to PageTester?
Just create another page containg a link to target page and click on it. The link can contain a context. 08.11.2009, в 20:01, mraible m...@raibledesigns.com написал(а): I'd like to know how to do this too. Basically, I'm looking to invoke a page and pass it a request parameter. Is this possible? Thanks, Matt Mats Henricson-2 wrote: Hi! Since Testify isn't working for me, I thought I'd look at this page: http://tapestry.apache.org/tapestry5.1/guide/unit-testing-pages.html It has this example: PageTester tester = new PageTester(appPackage, appName, ...); Object[] context = new Object[]{ abc, 123 }; Document doc = tester.invoke(new ComponentInvocation( new PageLinkTarget(MyPage), context)); Unfortunately I can't find a PageTester.invoke() function in T5.1. There isn't a ComponentInvocation class either. So, how IS this supposed to work? And what exactly IS that context? Is it possible to override the @Injected services with mock services into my page this way? Mats - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- View this message in context: http://old.nabble.com/How-do-you-pass-a-context-to-PageTester--tp25274401p26256779.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [Tapestry Central] Next Steps for Tapestry
Howard, you touch too many points to make a very concise reply, but I agree with many others encouraging you to continue coding 5.2 before you start writing a book. By now, you probably have a fairly good idea how you could improve things and I'd hate to have the first book on Tapestry5 to already become outdated right away if you start on T5.2 only after releasing the book. Yes, there are a few active committers but the community still needs your direction and you have a superior ability to generalize concepts and turn them into brilliant implementations. I'm not sure the committers would be able to lay out a release plan without you either - bug fixes and some pet improvements yes, but coming up and deciding features for a new major release is a different ballgame. Of course, it's always easy for people like me who are sitting on the sidelines to tell what you should and shouldn't do. On the matter of new features, I'm more and more convinced that web conversations can be simplified a lot if they stay on the same page - as proven by my Tapestry-conversations module (http://docs.codehaus.org/display/TRAILS/Conversations+in+Trails). As good as Spring Web Flow is, it's cumbersome and unnecessarily heavy for modern ajaxified web. A built-in conversational scope with a better mechanism for dealing with different page context entry points (I'm likely not the only one with long if-elses in my onActivate methods) might be enough for 90% of the use cases. Still, a book is badly needed. The inconvenient truth is there are very very few users of Tapestry anymore, the popularity of Tapestry is declining and new Java developers are not finding the framework (as proven by http://www.google.com/insights/search/#q=tapestry%20java%2C%20wicket%20java%2Cgrails%20javacmpt=q - by know T5 release should have made a bump in those graphs). And don't get me wrong - I've never believed that popularity would make anything better, but without a wide enough user base it's difficult to make a living out of it even if you want to and a healthy user base is needed for a project to alive and active. I'm sure you've gone out of your way to evangelize Tapestry but I'm amazed by (and I bet you've been equally amazed, even envious at times) how some other frameworks such as RoR and Grails have been able to market themselves so well. It's baffling as we all know that purely from technological standpoint, T5 is easily on par with the rest out there and often surpassing the competition on specific areas. Clearly, but sadly, eye-candy and looks over substance plays a big part here even among engineers and I'm sure Tapestry could do more there. Documentation is an issue with new-comers and a book would help. The reference documentation is great but what missing is the longer, more descriptive tutorials on how to get started and a book would at least partially address those needs. It's not really just Tapestry's fault, just that modern Java is complex and there are various tools like Maven and other frameworks that you need to know about compared to lighter, but easier all-in-one frameworks. But when it comes down to choosing between coding and writing (a book), I think most would agree that your time is better spent improving the core framework and pushing the envelope further, while letting somebody else fill the gap for the book. If you start feeling like it's getting harder to find new things that might be worthwhile to add to the framework, at that point it may be the right time for you to write a book. Hopefully that time is not yet. Just my 2 cents, Kalle On Sat, Nov 7, 2009 at 10:11 AM, Howard hls...@gmail.com wrote: I've been consciously letting Tapestry 5.1 sit and stabilize for a while ... a time that's stretched a few months longer than I initially intended. This is due to a number of factors: my return to independent consulting, my desire to write a definitive Tapestry 5 book, and preparations for many trips and speaking engagements. All of these factors have worked on each other: I've been improving and extending my Tapestry Workshop training materials which can be quite time consuming. I've also (over the last several months) been on the road several times, talking about Tapestry or doing Tapestry training. I do want to write a book on Tapestry but if I start writing 5.2 code, I know I'll be sucked right in ... lots of code (that darn Spring Web Flow integration for sure this time) and bug fixes. In addition, I've had an embarassment of riches: two main clients, one regular part time, and the other requesting (but not always getting) all my remaining time. I also have additional clients and training engagements waiting in the wings. I simply have a lot of draws on my time. As usual, working on real-world projects lets me experience the rough edges of Tapestry and fills me with ideas on how to address those in the next release ... often by splitting up Tapestry services into smaller, more easily