[jira] Commented: (TAP5-1293) Whitespaces in SymbolConstants.SUPPORTED_LOCALES cause that locales are not persised
[ https://issues.apache.org/jira/browse/TAP5-1293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12917751#action_12917751 ] Hudson commented on TAP5-1293: -- Integrated in tapestry-5.2-freestyle #203 (See [https://hudson.apache.org/hudson/job/tapestry-5.2-freestyle/203/]) > Whitespaces in SymbolConstants.SUPPORTED_LOCALES cause that locales are not > persised > > > Key: TAP5-1293 > URL: https://issues.apache.org/jira/browse/TAP5-1293 > Project: Tapestry 5 > Issue Type: Bug >Affects Versions: 5.2.1 >Reporter: Igor Drobiazko >Assignee: Igor Drobiazko > Fix For: 5.2.2 > > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Commented: (TAP5-1217) merge in documentation from trunk
[ https://issues.apache.org/jira/browse/TAP5-1217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12917698#action_12917698 ] Christophe Cordenier commented on TAP5-1217: I was meaning, they are not present on confluence. Should i add them ? > merge in documentation from trunk > - > > Key: TAP5-1217 > URL: https://issues.apache.org/jira/browse/TAP5-1217 > Project: Tapestry 5 > Issue Type: Sub-task > Components: documentation >Reporter: Ulrich Stärk > Attachments: quickstart.src.site.apt.diff, src.site.apt.diff, > tapestry-hibernate.src.site.apt.diff, tapestry-ioc.src.site.apt.diff, > tapestry-spring.src.site.apt.diff, tapestry-tutorial1.src.site.apt.diff > > > The documentation in confluence is for version 5.1. We need to look at the > changes made to the documentation in trunk and merge the differences into > confluence, marking parts with {deprecacted} and {since} where applicable. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[CONF] Apache Tapestry > Principles
Principles Page edited by Josh Canfield Changes (14) ... Tapestry is architected to scale from tiny, single-page applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of backend, including JEE, Spring and Hibernate. It's more than what you can do with Tapestry ... it's also how you do it! Tapestry is a vastly productive environment. Java developers love it because they can make Java code changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot (even when files change). Designers love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in JavaServer Pages. Managers love it because it makes it easy for large teams to work together, and because they know important features (including localization) are baked right in. Once you work in Tapestry there's no going back! Tapestry is released under the Apache Software Licence 2.0. h2. Principle 1 -- Static Structure, Dynamic Behavior Tapestry is designed to be extremely scalable in several dimensions: * Tapestry applications may contain large numbers of pages and many custom components. * Tapestry applications may contain very complex functionality. ... * Tapestry applications can service large numbers of concurrent users. One core architecture decision in Tapestry exists to service many of the above goals (and others that are harder to describe). Static Structure, Dynamic Behavior It's more than what you can do with Tapestry ... it's also how you do it! Tapestry is a vastly productive environment. Java developers love it because they can make Java code changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot (even when files change). Designers love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in JavaServer Pages. Managers love it because it makes it easy for large teams to work together, and because they know important features (including localization) are baked right in. Once you work in Tapestry there's no going back! In Tapestry, the structure of any particular page is static. This is necessary for several reasons, most importantly because Tapestry pages are pooled. Creating a Tapestry page is an involved process, because the page object is simply the root of a large tree of other objects including user provided components, many kinds of structural objects, template objects, and others. Creating a new page instance for each request is simply not scalable. Tapestry is released under the Apache Software Licence 2.0. Instead, Tapestry pools pages. Once created, a page instance will be stored in a pool for that particular type of page, and reused in later requests. An incoming request, the result of a user clicking a link or submitting a form, will be processed by some server within a cluster, and will use some page instance within the page pool. Because page instances are static and uniform across instances and servers, Tapestry can use any available page instance, or create a new one as needed. h2. Principle 1 -- Static Structure, Dynamic Behavior Tapestry does not need to store page instances inside the HttpSession. At most, it stores a smattering of persistent field values from the page, but not the entire page instance. This lean use of the HttpSession is key to Tapestry's very high scalability, especially in a clustered configuration. The concept of "Dynamic Behavior" should be pretty obvious when you are building a web application; things should look different for different users/situations. But what does it mean that Tapestry has "Static Structure?" Static structure implies that when you build a page in Tapestry you are going to define all of the components that are used within that page. Under no circumstance during the rendering or event processing of the page will you be able to dynamically create a new component and place that into the component tree. In some Tapestry-like frameworks, such as Faces and Wicket, the page structure is more dynamic, at the cost of storing much, much more data in the HttpSession. h5. Why use static structure? Doesn't this hamper my ability to build software they way I want? Second part first, static structure is not as limiting as you may think. You have plenty of options for getting dynamic behavior out of your static structure; from the simple conditional and looping components to the more advanced implementations of Tapestry's BeanEditor o
svn commit: r1004333 - /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java
Author: drobiazko Date: Mon Oct 4 17:51:18 2010 New Revision: 1004333 URL: http://svn.apache.org/viewvc?rev=1004333&view=rev Log: Fixing the build Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java?rev=1004333&r1=1004332&r2=1004333&view=diff == --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java Mon Oct 4 17:51:18 2010 @@ -69,17 +69,19 @@ public class LocalizationSetterImpl impl this.supportedLocaleNames = CollectionFactory.newSet(); -for (String name : TapestryInternalUtils.splitAtCommas(localeNames)) +String[] names = TapestryInternalUtils.splitAtCommas(localeNames); + +for (String name : names) { supportedLocaleNames.add(name.toLowerCase()); } -supportedLocales = parseNames(supportedLocaleNames); +supportedLocales = parseNames(names); defaultLocale = supportedLocales.get(0); } -private List parseNames(Set localeNames) +private List parseNames(String[] localeNames) { List list = CollectionFactory.newList();
[jira] Commented: (TAP5-1217) merge in documentation from trunk
[ https://issues.apache.org/jira/browse/TAP5-1217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12917657#action_12917657 ] Ulrich Stärk commented on TAP5-1217: There were no changes between 5.1 and 5.2 in these modules so no action has to be taken. > merge in documentation from trunk > - > > Key: TAP5-1217 > URL: https://issues.apache.org/jira/browse/TAP5-1217 > Project: Tapestry 5 > Issue Type: Sub-task > Components: documentation >Reporter: Ulrich Stärk > Attachments: quickstart.src.site.apt.diff, src.site.apt.diff, > tapestry-hibernate.src.site.apt.diff, tapestry-ioc.src.site.apt.diff, > tapestry-spring.src.site.apt.diff, tapestry-tutorial1.src.site.apt.diff > > > The documentation in confluence is for version 5.1. We need to look at the > changes made to the documentation in trunk and merge the differences into > confluence, marking parts with {deprecacted} and {since} where applicable. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (TAP5-1295) Simplify connecting a link or form to an (enclosing) Zone
Simplify connecting a link or form to an (enclosing) Zone - Key: TAP5-1295 URL: https://issues.apache.org/jira/browse/TAP5-1295 Project: Tapestry 5 Issue Type: Improvement Components: tapestry-core Affects Versions: 5.2.2 Reporter: Howard M. Lewis Ship Priority: Minor Currently, when connecting a link to a zone, you bind the zone parameter of the link to the client-side id of the Zone. To do this, you must know the client-side id of the Zone. It would be nice if the zone value could be evaluated on the client and make use of the rendered DOM to simplify this. I thought the special string "^" could mean "the containing Zone", and could be located via the "t-zone" CSS class that Zones normally have. An extended form could be "^.foo" to find an enclosing element with CSS class foo and assume that is the zone (this would help when dealing with nested zones). The exact syntax is up for debate but the idea is that the connection could be made on the client-side without having to deal with the (relative) intricacies of either assigning a zone id explicitly, or reading the Zone's id. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[CONF] Apache Tapestry > Getting Started
Getting Started Page edited by Christophe Cordenier Changes (1) ... h2. More Learn more about [Tapestry Philosophy |TAPESTRY:Principles] and then checkout our full [Documentation|../display/TAPESTRY/Documentation] [Documentation|TAPESTRY:Documentation] page on which you will find a lot of resources written by committers and contributors. h2. Obtain Help ... Full Content Create your first Tapestry project The easiest way to get started is to use Apache Maven to create your initial project; Maven can use an archetype (a kind of project template) to create a bare-bones Tapestry application for you. One you have Maven installed, execute the command mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org. Maven will (after performing a large number of one-time downloads) ask you questions about how to create the new project, including a group id (like a package name) and an artifact id for your new project. $ mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] [INFO] Preparing archetype:generate [INFO] No goals needed for project - skipping [INFO] [archetype:generate {execution: default-cli}] [INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: http://tapestry.apache.org -> quickstart (Tapestry 5.2.1-SNAPSHOT Quickstart Project) 2: http://tapestry.apache.org -> tapestry-archetype (Tapestry 4.1.6 Archetype) Choose a number: : 1 Choose version: 1: 5.0.19 2: 5.1.0.5 3: 5.2.0 4: 5.2.1-SNAPSHOT Choose a number: : 3 Define value for property 'groupId': : com.example Define value for property 'artifactId': : newapp Define value for property 'version': 1.0-SNAPSHOT: Define value for property 'package': com.example: com.example.newapp Confirm properties configuration: groupId: com.example artifactId: newapp version: 1.0-SNAPSHOT package: com.example.newapp Y: [INFO] [INFO] BUILD SUCCESSFUL [INFO] [INFO] Total time: 25 seconds [INFO] Finished at: Tue Aug 17 14:01:50 PDT 2010 [INFO] Final Memory: 16M/81M [INFO] /tmp $ tree newapp newapp |-- pom.xml `-- src |-- main | |-- java | | `-- com | | `-- example | | `-- newapp | | |-- components | | | `-- Layout.java | | |-- pages | | | |-- About.java | | | |-- Contact.java | | | `-- Index.java | | `-- services | | `-- AppModule.java | |-- resources | | |-- com | | | `-- example | | | `-- newapp | | | |-- components | | | | `-- Layout.tml | | | `-- pages | | | `-- Index.properties | | `-- log4j.properties | `-- webapp | |-- About.tml | |-- Contact.tml | |-- Index.tml | |-- WEB-INF | | |-- app.properties | | `-- web.xml | |-- favicon.ico | `-- layout | |-- images | | |-- img01.jpg | | |-- img02.jpg | | |-- img03.jpg | | |-- img04.jpg | | |-- img05.gif | | |-- img06.gif | | |-- img07.gif | | |-- img08.gif | | |-- img09.gif | | |-- img10.gif | | |-- img11.gif | | |-- img12.gif | | |-- img13.gif | | |-- img14.gif | | |-- img15.gif | | |-- img16.gif | | |-- img17.gif | | |-- img18.gif | | |-- img19.gif | | |-- img20.gif | | `-- spacer.gif | |-- layout.css | `-- license.txt |-- site | |-- apt | | `-- index.apt | `-- site.xml `-- test |-- conf | |-- testng.xml | `-- webdefault.xml |-- java | `-- PLACEHOLDER `-- resources `-- PLACEHOLDER 25 directories, 44 files /tmp $ The exact content and layout of project generated from the archetype will change across different releases of Tapestry. Once it is created, you can load it into any IDE and start coding, or use mvn jetty:run 1 . Again, more one-time downloads, but then you can open your browser to http://localhost:8080 to run the application. More Learn more about Tapestry Philosophy and then checkout our full Documentation page on which you will find a lot of resources written by committers and contributors. Obtain Help Tapestry has an active user mailing list on which you can find a lot of valuable support. You can subscribe users-subscr...@tapestry.apache.org or look for an answer in the archives Having trouble? Try our Frequently Asked Questions. Change Notification Preferences
[CONF] Apache Tapestry > Getting Started
Getting Started Page edited by Christophe Cordenier Changes (10) ... {warning}The exact content and layout of project generated from the archetype will change across different releases of Tapestry.{warning} Once it is created, you can load it into any IDE and start coding, or use {{mvn jetty:run{}}}{footnote}Jetty is a well-known, open-source, high-performance servlet container. Jetty starts up quickly, and implements the official Servlet specification very closely.{footnote}. Again, more one-time downloads, but then you can open your browser to [http://localhost:8080] to run the application. h2. Obtain Help h2. More Tapestry has an active user mailing list on which you can find a lot of valuable support. You can subscribe [mailto:users-subscr...@tapestry.apache.org] or look for an answer in the [archives|http://markmail.org/search/list:org.apache.tapestry.users] Learn more about[Tapestry Philosophy |TAPESTRY:Principles] and then checkout our full [Documentation|../display/TAPESTRY/Documentation] page on which you will find a lot of resources written by committers and contributors. Having trouble? Try our [TAPESTRY:Frequently Asked Questions]. h2. Obtain Help h2. More Tapestry has an active user mailing list on which you can find a lot of valuable support. You can subscribe [mailto:users-subscr...@tapestry.apache.org] or look for an answer in the [archives|http://markmail.org/search/list:org.apache.tapestry.users] Checkout our [Documentation|Documentation] page on which you will find a lot of resources written by committers and contributors. Having trouble? Try our [TAPESTRY:Frequently Asked Questions]. Full Content Create your first Tapestry project The easiest way to get started is to use Apache Maven to create your initial project; Maven can use an archetype (a kind of project template) to create a bare-bones Tapestry application for you. One you have Maven installed, execute the command mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org. Maven will (after performing a large number of one-time downloads) ask you questions about how to create the new project, including a group id (like a package name) and an artifact id for your new project. $ mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] [INFO] Building Maven Default Project [INFO] task-segment: [archetype:generate] (aggregator-style) [INFO] [INFO] Preparing archetype:generate [INFO] No goals needed for project - skipping [INFO] [archetype:generate {execution: default-cli}] [INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: http://tapestry.apache.org -> quickstart (Tapestry 5.2.1-SNAPSHOT Quickstart Project) 2: http://tapestry.apache.org -> tapestry-archetype (Tapestry 4.1.6 Archetype) Choose a number: : 1 Choose version: 1: 5.0.19 2: 5.1.0.5 3: 5.2.0 4: 5.2.1-SNAPSHOT Choose a number: : 3 Define value for property 'groupId': : com.example Define value for property 'artifactId': : newapp Define value for property 'version': 1.0-SNAPSHOT: Define value for property 'package': com.example: com.example.newapp Confirm properties configuration: groupId: com.example artifactId: newapp version: 1.0-SNAPSHOT package: com.example.newapp Y: [INFO] [INFO] BUILD SUCCESSFUL [INFO] [INFO] Total time: 25 seconds [INFO] Finished at: Tue Aug 17 14:01:50 PDT 2010 [INFO] Final Memory: 16M/81M [INFO] /tmp $ tree newapp newapp |-- pom.xml `-- src |-- main | |-- java | | `-- com | | `-- example | | `-- newapp | | |-- components | | | `-- Layout.java | | |-- pages | | | |-- About.java | | | |-- Contact.java | | | `-- Index.java | | `-- services | | `-- AppModule.java | |-- resources | | |-- com | | | `-- example | | | `-- newapp | | | |-- components | | | | `-- Layout.tml | | | `-- pages | | | `-- Index.properties | | `-- log4j.properties | `-- webapp | |-- About.tml | |-- Contact.tml | |-- Index.tml | |-- WEB-INF | | |-- app.properties | | `-- web.xml | |-- favicon.ico | `-- layout | |-- images | | |-- img01.jpg | |
[CONF] Apache Tapestry > Principles
Principles Page added by Christophe Cordenier What is Apache Tapestry? Apache Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server. Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. Developing Tapestry applications involves creating HTML templates using plain HTML, and combining the templates with small amounts of Java code. In Tapestry, you create your application in terms of objects, and the methods and properties of those objects – and specifically not in terms of URLs and query parameters. Tapestry brings true object oriented development to Java web applications. Tapestry is specifically designed to make creating new components very easy, as this is a routine approach when building applications. Tapestry is architected to scale from tiny, single-page applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of backend, including JEE, Spring and Hibernate. It's more than what you can do with Tapestry ... it's also how you do it! Tapestry is a vastly productive environment. Java developers love it because they can make Java code changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot (even when files change). Designers love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in JavaServer Pages. Managers love it because it makes it easy for large teams to work together, and because they know important features (including localization) are baked right in. Once you work in Tapestry there's no going back! Tapestry is released under the Apache Software Licence 2.0. Principle 1 – Static Structure, Dynamic Behavior Tapestry is designed to be extremely scalable in several dimensions: Tapestry applications may contain large numbers of pages and many custom components. Tapestry applications may contain very complex functionality. Tapestry applications may be created by large, diverse teams. Tapestry applications can service large numbers of concurrent users. One core architecture decision in Tapestry exists to service many of the above goals (and others that are harder to describe). Static Structure, Dynamic Behavior In Tapestry, the structure of any particular page is static. This is necessary for several reasons, most importantly because Tapestry pages are pooled. Creating a Tapestry page is an involved process, because the page object is simply the root of a large tree of other objects including user provided components, many kinds of structural objects, template objects, and others. Creating a new page instance for each request is simply not scalable. Instead, Tapestry pools pages. Once created, a page instance will be stored in a pool for that particular type of page, and reused in later requests. An incoming request, the result of a user clicking a link or submitting a form, will be processed by some server within a cluster, and will use some page instance within the page pool. Because page instances are static and uniform across instances and servers, Tapestry can use any available page instance, or create a new one as needed. Tapestry does not need to store page instances inside the HttpSession. At most, it stores a smattering of persistent field values from the page, but not the entire page instance. This lean use of the HttpSession is key to Tapestry's very high scalability, especially in a clustered configuration. In some Tapestry-like frameworks, such as Faces and Wicket, the page structure is more dynamic, at the cost of storing much, much more data in the HttpSession. This static structure is not so limiting as you might think. With different kinds of conditional and looping components, and the ability to "jump out of the flow" and render components in an arbitrary order, you will not find Tapestry to be rigid ... anything but! Principle 2 – Adaptive API A key feature of Tapestry 5 is adaptive API. In traditional Java frameworks, including Tapestry 4, user code is expected to conform to the framework. You create classes that extend from framework-provided base classes, or implement framework-provided interfaces. This works well until you upgrade to the next release of the framework: with the new features of the upgrade, you will more often than not experience breaks in backwards compatibility. Interfaces or base