[CONF] Apache Tapestry Release Process
Howard M. Lewis Ship edited the page: Release Process ... To successfully create a release, you will need to update your Maven Settings with the credentials for your SVN user and the deployment user. These credentials are stored in the Gradle configuration file ~/.gradle/gradle.properties: Code Block apacheDeployUserName=hlship apacheDeployPassword=... signing.keyId=7CC19136 signing.secretKeyRingFile=/Users/hlship/.gnupg/secring.gpg signing.password=... ... A template for the vote e-mail: No Format I've created and uploaded a release of Tapestry 5.x.x, ready to be voted upon. The source and source downloads are uploaded to: http://people.apache.org/~USER/tapestry-releases/ and the Maven artifacts staged to: https://repository.apache.org/content/repositories/orgapachetapestry-xxx/staging Please examine these files to determine if the new release, 5.x.x, is ready. I've also created a 5.x.x tag in Git: https://git-wip-us.apache.org/repos/asf?p=tapestry-5.git;a=commit;h=c5600a8de7645fb7bd5cc21b38f8902a36c1b840 Vote will run for three days; On a successful vote, I'll release the Maven artifacts, and move the source and javadoc distributions from these directories to the proper distribution directories and update the Tapestry site documentation, and send out appropriate notifications. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Building Tapestry from Source
Bob Harner edited the page: Building Tapestry from Source Comment: Removed dead link reported by Felix Scheffer ... Install the TestNG plugin to allow running of individual TestNG unit tests from within in Eclipse. Right-click on any test class and select Run As TestNG Test Command-line users: ./gradlew -Dtest.single=myclassname ./gradlew -Dtest.single=myclassname.mymethod where myclassname is the test class, such as FormTest The Tapestry integration tests will repeatedly start up a Firefox browser. ... The Tapestry source includes several web apps that are used by the automated Selenium integration tests. You can also run these apps manually to try out nearly every browser-visible aspect of Tapestry.(See a live example running on Google App Engine.) If using Eclipse: Use the run-jetty-run plugin in Eclipse, with the context directory selected from among the test context directories. For example, in the tapestry-core module, right click on the /src/test/app1 (or app2, etc) folder, and select Run As Run Jetty, then open your browser to http://localhost:8080/tapestry-core ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Client-Side JavaScript
Howard M. Lewis Ship edited the page: Client-Side _javascript_ ... The result is a a bit schizophrenic; it mostly looks like jQuery, but events look a bit more like jQueryPrototype. It also doesn't have jQuery's concept of operating on a matched set of elements. The abstraction is both transitional and permanent. It is transitional in that it is about allowing existing sites with a heavy investment in Prototype to continue to operate with Prototype in the mix. It is permanent in in that it is desirable for third party library developers to keep an abstraction layer between Tapestry's client-side code and any underlying framework, so that particular applications can provide their own abstraction layer and operate without breaking built-in components. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Starting the IoC Registry
As of version 5.2 the class RegistryBuilder has convenience methods to build and start a Registry. The static method RegistryBuilder.buildAndStartupRegistry(Class...) constructs a registry, adds a number of modules to the registry and performs registry startup. The returned registry is ready to use. Code Block java Registry registry = RegistryBuilder.buildAndStartupRegistry(AppModule.class, UtilModule.class); ... In addition, the JVM system property tapestry.modules (if specified) is a list of additional module classes to load. This is often used in development, where tests may be executed against the local classes, not JARs, and so there is no manifest to read. Shutting down the Registry ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Client-Side JavaScript
) define [underscore, ./dom, ./events, ./utils, ./messages, ./fields], (_, dom, events, utils, messages) - ... dom.onDocument events.field.optional, [data-optionality=required], (event, memo) - if utils.isBlank memo.value memo.error = (@attr data-required-message) or REQUIRED ... dom.onDocument events.field.validate, [data-validate-min-length], (event, memo) - min = parseInt @attr data-validate-min-length if memo.translated.length min memo.error = (@attr data-min-length-message) or TOO SHORT return false Thet5/core/events module defines constants for different custom event name, it's also a handy place to hanghang documentation about those events. Thet5/core/dom namespace is the abstraction layer. onDocument is a handy way to attach a top-level event handler. Fields that are required will have the attributedata-optionality=required; the event handler is passed amemo object that includes avalue property, the value from the field. This makes it easier to generate an error if the value is blank. Because the exact error message may be customized or localized, it is provided in the element as well, as thedata-required-message attribute. Settingmemo.error to a validation error string will cause the field to be decorated with the error message and will indicate that the form itself is in error and not ready for submission. A different event is triggered after the optionality check; Thememo.translated property is the value translated before validation (for a numeric field, it would be translated from a string to a number, for example). Again, theerror property is set, and thereturn false ensures that the event will stop bubbling to containing elements or event handlers. View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry CoffeeScript
Howard M. Lewis Ship created a page: CoffeeScript CoffeeScript is a language to compiles down to _javascript_. It can be quite controversial, but also quite effective. On the controversial side, it uses significant whitespace to denote blocks of code (like Python or Haskell) rather than curl braces (like Java, _javascript_, or Ruby). In fact, it draws influences from a wide rage of other languages, incorporating many functional programming features, a single class system, string interpolation, destructuring assignment, and more. However, for all that, it is very close to _javascript_; it simply rounds out many of the rough edges of _javascript_ (and adds a few of its own). As wide ranging as its syntax is, there's generally a very close mapping from CoffeeScript to _javascript_. CoffeeScript code often approaches Python's goal of being a executable psuedo-code; code that looks like a placeholder will actually run. Some people find it more pleasant to read than _javascript_ ... moreessence and lessceremony. You can still write bad code in CoffeeScript. You can write bad code in any language. All of Tapestry's client-side code in written in CoffeeScript and compiled, at build-time, to _javascript_. The tapestry-web-resources module adds the ability to dynamically compile CoffeeScript to _javascript_ in the running application, It is recommended for anyone who want to use CoffeeScript in their application ... just do the compilation at runtime (with access to Tapestry's full exception reporting capabilities). View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry CoffeeScript
Howard M. Lewis Ship edited the page: CoffeeScript ... On the controversial side, it uses significant whitespace to denote blocks of code (like Python or Haskell) rather than curl braces (like Java, _javascript_, or Ruby). In fact, it draws influences from a wide rage of other languages, incorporating many functional programming features, a single rudimentary class system, string interpolation, destructuring assignment, and more. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry CoffeeScript
Howard M. Lewis Ship edited the page: CoffeeScript ... However, for all that, it is very close to _javascript_; it simply rounds out many of the rough edges of _javascript_ (and adds a few of its own). As wide ranging as its CoffeeScript syntax iscan be, there's generally a very close mapping from CoffeeScript to _javascript_. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Client-Side JavaScript
Howard M. Lewis Ship edited the page: Client-Side _javascript_ ... A different event is triggered after the optionality check; Thememo.translated property is the value translated before validation (for a numeric field, it would be translated from a string to a number, for example). Again, theerror property is set, and thereturn false ensures that the event will stop bubbling to containing elements or event handlers. What's very useful in this overall approach is that it no longer matters whether the fields were rendered by Tapestry on the server, or rendered locally (perhaps using Backbone or AngularJS) on the client. As long as they have the correctdata- attributes, then they can participate in Tapestry's overall form validation and submission cycle, and even leverage the default validation decoration behavior. The Abstraction Layer The abstraction layer is defined by thet5/core/dom module. This module is two different implementations - one is a wrapper around Prototype, and the other is a wrapper around jQuery. The result is a a bit schizophrenic; it mostly looks like jQuery, but events look a bit more like jQuery. It also doesn't have jQuery's concept of a matched set of elements. The abstraction is both transitional and permanent. It is transitional in that it is about allowing existing sites with a heavy investment in Prototype to continue to operate with Prototype in the mix. It is permanent in that it is desirable to keep an abstraction layer between Tapestry's client-side code and any underlying framework, so that particular applications can provide their own abstraction layer and operate without breaking built-in components. Most applications should transition to jQuery and feel free to use jQuery directly. It is still best to inject module jqueryinto your own modules (usually as parameter$). If you are writing a third-party application and want to maximize re-use, then use the abstraction. It is often easier to use the abstraction to respond correctly to View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Client-Side JavaScript
Howard M. Lewis Ship edited the page: Client-Side _javascript_ ... It is often easier to use the abstraction to respond correctly toto custom Tapestry events. View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Ajax and Zones
Howard M. Lewis Ship edited the page: Ajax and Zones ... Zones are Tapestry's approach to performing partial page updates. A Zone component renders as an HTML element, typically a div, with the t-zone CSS class. (It also adds some _javascript_ to the page to wire up a Tapestry.ZoneManager object to control updating that element.). A zone is recognizable in the DOM because it will have the attributedata-container-type=zone. The client-side support for Zones is keyed off of this attribute and value. A Zone can be updated via an EventLink, ActionLink or Select component, or by a Form. All of these components support a zone parameter, which provides the id of the Zone's div. Clicking such a link will invoke an event handler method on the server as normal ... except that the return value of the event handler method is used to send a partial page response to the client, and the content of that response is used to update the Zone's div in place. Code Block language xml t:actionlink t:id=someLink zone=myzoneupdate/t:actionlink ... t:zone t:id=myZone id=myzone The current time is ${currentTime} /t:zone ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Ajax and Zones
. A Zone may be initially visible or invisible. When a Zone is updated, it is made visible if not currently so. This is accomplished via a function on the Tapestry.ElementEffect client-side object. By default, the show() function is used for this purpose. If you want Tapestry to call a different Tapestry.ElementEffect function when updates occur, specify its name with the zone's show parameter. ... You can return an object array, a list, even a single object. You may return objects instead of strings ... and toString() will be used to convert them into client-side strings. Tapestry's default stylesheet includes entries for controlling the look of the floating popup of selections. You may override DIV.t-autocomplete-menu UL to change the main look and feel, DIV.t-autocomplete-menu LI for a normal item in the popup list, and DIV.t-autocomplete-menu LI.selected for the element under the cursor (or selecting using the arrow keys). View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Ajax and Zones
Howard M. Lewis Ship edited the page: Ajax and Zones ... The show and update functions (see Zone Functions, below) apply to the Zone div, not just the update div. Zone Effect Functions (Tapestry 5.3 and earlier) deprecated _This feature refers to client-side logic only present in Tapestry 5.3 or earlier. For 5.4, there are client-side events that are triggered before and after changes to the Zone; listeners on those events can trigger whatever animations they like. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry CSS
Howard M. Lewis Ship edited the page: CSS ... Tapestry includes a built-in style sheet, defaulttapestry.css, in all HTML documents (documents that have an outer html element and a nested head element). The default.css style sheet is always ordered first ... any additional style sheets will come after. This allows you to override Tapestry's default styles with your own. All the styles in the default style sheet are prefixed with t- (for Tapestry). , as part of the core _javascript_ stack. The core _javascript_ stack also includes the CSS for Bootstrap 3.1.1. Adding your own CSS A page or component (for example, a layout component) that is rendering the head tag can add a style sheet directly in the markup. ... The context: prefix means that the remainder of the expansion is a path to a context asset, a resource in the web application root (src/main/webapp in your workspace). By contrast, the asset: prefix tells Tapestry to look in the class path. See Assets. ... Naturally, the conditional part can be any other IE conditional _expression_, such as lt IE 8. Suppressing the default style sheet (Tapestry 5.3 and earlier) Though it should be rarely needed, you can prevent Tapestry's default style sheet from loading by overriding the configuration in your application's module (normally AppModule.java): ... Note: In Tapestry 5.3 and later, the misspelled InjectDefaultStyleheet is corrected to InjectDefaultStylesheet. In Tapestry 5.4, the core _javascript_ has a configuration into which you may inject overrides. View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry CoffeeScript
Howard M. Lewis Ship edited the page: CoffeeScript ... The tapestry-web-resources module adds the ability to dynamically compile CoffeeScript to _javascript_ in the running application, It is recommended for anyone who want wants to use CoffeeScript in their application ... just do the compilation at runtime (with access to Tapestry's full exception reporting capabilities). View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Applications
Tsvetelin Saykov added a file to the page Applications logo.png - 11 kB PNG File View Attachments Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Applications
Tsvetelin Saykov added a file to the page Applications jexbox.png - 11 kB PNG File View Attachments Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Applications
Tsvetelin Saykov edited the page: Applications Comment: Added Jexbox to the list of applications. Wooki Opensource collaboration application Seesaw : Video streaming The definitive Oxford English Dictionary Business Intelligence BellaDati Yanomo time trackingSaaS with Google sync Cubiculus : Lego Building Instructions myBet : Sports Bets Casino Poker eOfficeo : Easy - Mobile - Collaborative Image Modified Smartimage : Image management made simple Image Added Jexbox : Jexbox stores all errors from tapestry application and helps developers resolve software bugs. View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Legacy JavaScript
Howard M. Lewis Ship edited the page: Legacy _javascript_ ... In addition, as will be described in detail below, Tapestry comes with the Prototype and Scriptaculous libraries, or you can easily swap in JQuery using a 3rd-party module. Warning title For Older Versions of Tapestry This page describes the state of Tapestry prior to Tapestry 5.4; in 5.4, all client-side _javascript_ was rewritten from the ground up. This page exists to provide documentation for people working with legacy applications, not yet upgraded to Tapestry 5.4. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Legacy JavaScript
Warning title For Older Versions of Tapestry This page describes the state of Tapestry prior to Tapestry 5.4; in 5.4, all client-side _javascript_ was rewritten from the ground up. This page exists to documentation for people working with legacy applications, not yet upgraded to Tapestry 5.4. Adding Custom _javascript_ When adding your own custom _javascript_ or third-party libraries, just follow the strategies below to take advantage of Tapestry's _javascript_ support mechanisms. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry User Guide
More Modules... Deprecated Topics Aliases (deprecated) View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry JavaScript Modules
Howard M. Lewis Ship edited the page: _javascript_ Modules ... In the earliest days, client-side _javascript_ was constructed as libraries that defined define simple functions and variables: ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry JavaScript Modules
Howard M. Lewis Ship added a file to the page _javascript_ Modules Tapestry_Integration_Test_Application_and_JavaScriptSupport__Tapestry_API_Documentation_.png - 15 kB PNG File View Attachments Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry JavaScript Modules
language java @Contribute(_javascript_Stack.class) @Core public static void addAppModules(OrderedConfigurationStackExtension configuration) { configuration.add(tree-viewer, StackExtension.module(tree-viewer)); configuration.add(app-utils, StackExtension.module(app-utils)); } To break this down: @Contribute indicates we are contributing to a _javascript_Stack service Since there are (or at least, could be) multiple services that implement _javascript_Stack, we provide the@Core annotation to indicate which one we are contributing to It is possible to contribute libraries, CSS files, other stacks, and modules; here we are contributing modules Each contribution has a unique id and a StackExtension value The core stack includes several libraries and modules; the exact configuration is subject to a number of factors (such as whether Prototype or Scripaculous is the used as the underlying framework). That being said, this is thecurrent list of modules aggregated into the core stack: jquery underscore t5/core/ alert ajax bootstrap console dom events exception-frame fields pageinit messages util validation View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry JavaScript Modules
Howard M. Lewis Ship edited the page: _javascript_ Modules ... What adding a module to a stack accomplishes is that the module's code is downloaded in the first, initial _javascript_ download; the download of the stack's virtual library. When (and if) the module is required as a dependency, the code will already be present in the browser and ready to execute. Tapestrydoes not attempt to do dependency analysis; that is left as a manual exercise. Typically, if you aggregate a module, your should look at its dependencies, and aggregate those as well. Failure to do so will cause unwanted requests back to the Tapestry server for the dependency modules, even though the aggregated module's code is present. ... The core stack includes several libraries and modules; the exact configuration is subject to a number of factors (such as whether Prototype or Scripaculous jQuery is the being used as the underlying framework). That being said, this is thecurrent list of modules aggregated into the core stack: jquery underscore t5/core/ alert ajax bootstrap console dom events exception-frame fields pageinit messages util validation The optimum configuration is always a balancing act between including too little and including too much. Generally speaking, including too much is less costly than including too little. It is up to you to analyze the requests coming into your application and determine what modules should be aggregated. View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry User Guide
More Modules... Deprecated Topics Aliases (deprecated) View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry JavaScript
Howard M. Lewis Ship created a page: _javascript_ View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry User Guide
More Modules... Deprecated Topics Aliases (deprecated) View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry JavaScript
Bob Harner created a page: _javascript_ The Tapestry documentation is being reorganized. For the _javascript_ topic, please see one of the following pages: Client-Side _javascript_ (Tapestry 5.4 and newer) Legacy _javascript_ (prior to Tapestry 5.4) View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Localization
... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry News
Howard M. Lewis Ship edited the page: News Wiki Markup {htmlcomment}Force Update: ... 10{htmlcomment} HTML div id=bar We think you will love Tapestry! Give us 20 minutes and follow our tutorial. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Index
Howard M. Lewis Ship edited the page: Index HTML !-- Force update: 1112 -- style type=text/css .big-col { margin-right: 310px !important; } #content { height : 1080px; } #col { width : 250px; } DIV.left-column { float: left; width: 48%; } DIV.right-column { float: right; width: 48%; } .blogSurtitle { background: none repeat scroll 0 0 #569D2F; border: 2px solid #DD; color: #FF; margin: 1px 1px 10px; padding: 3px; } a.blogDate { color: #FF; } a.blogHeading { color: #569D2F; font-size: 14px; } #col p { text-align : justify; font-size : 11px; line-height : 1.2 !important } .feature { #height: 150px; } /style !-- BEGIN Dialog code (commented out, but we could use it in the future) link rel=stylesheet href="" type=text/css media=all / script src="" type=text/_javascript_/script script src="" type=text/_javascript_/script div id=evil title=Stop CISPA pAs web developers, we're deeply concerned about the a href="" Cyber Intelligence Sharing and Protection Act /a. We encourage all developers to visit a href="" American Censorship/a and do their part to oppose this misguided bill. /p pCancel this dialog to begin exploring Apache Tapestry./p /div script $(function() { $( #evil ).dialog({ modal:true }); $(input[type='text']).focus(); }); /script style text=text/css .ui-widget-overlay { opacity: .80; filter: alpha(opacity = 80); background: black; } /style -- !-- END Temporary Stop CISPA -- ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Download
Nightly snapshot binaries are also available in Apache's Nexus Maven repository under the subdirectories of https://repository.apache.org/content/repositories/snapshots/org/apache/tapestry. Please be aware that nightly snapshots have not been reviewed and may have significant stability problems from time to time. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Component Templates
Nourredine Khadri a modifi la page: Component Templates Commentaire: fix typo ... All other elements in your templates should be in the default namespace, with no prefix (with the possible exception of any Library Namespaces (described below). There are a certain number of Tapestry elements, listed below, that act as template directives; beyond that, any element in the Tapestry namespace will be a Tapestry component. ... Remarque This element was deprecated starting in Tapestry 5.1 and removed in 5.3. Use parameter namespaces (below) instead. A parameter element is a special kind of block. It is placed inside the body of an embedded component. The block defined by the parameter is passed to the component. parameter includes a mandatory name attribute to identify which parameter of the component to bind. ... Note that expansions escape any HTML reserved characters. Specifically, any less-than (), greater than () and ampersand () are replaced with lt;, ampgtgt; and amp; respectively. That is usually what you want. However, if your property contains HTML that you want rendered as raw markup, you can use the OutputRaw component instead, like this: t:OutputRaw value=someContent/ where someContent is a property containing HTML markup. ... Afficher en ligne J'aime Afficher les modifications Ne plus surveiller l'espace Grer les notifications Ce message a t envoy par le logiciel de collaboration d'quipe d'Atlassian Confluence 5.0.3
[CONF] Apache Tapestry Index
Bob Harner edited the page: Index Comment: republish HTML !-- Force update: 910 -- style type=text/css .big-col { margin-right: 310px !important; } #content { height : 1080px; } #col { width : 250px; } DIV.left-column { float: left; width: 48%; } DIV.right-column { float: right; width: 48%; } .blogSurtitle { background: none repeat scroll 0 0 #569D2F; border: 2px solid #DD; color: #FF; margin: 1px 1px 10px; padding: 3px; } a.blogDate { color: #FF; } a.blogHeading { color: #569D2F; font-size: 14px; } #col p { text-align : justify; font-size : 11px; line-height : 1.2 !important } .feature { #height: 150px; } /style !-- BEGIN Dialog code (commented out, but we could use it in the future) link rel=stylesheet href="" type=text/css media=all / script src="" type=text/_javascript_/script script src="" type=text/_javascript_/script div id=evil title=Stop CISPA pAs web developers, we're deeply concerned about the a href="" Cyber Intelligence Sharing and Protection Act /a. We encourage all developers to visit a href="" American Censorship/a and do their part to oppose this misguided bill. /p pCancel this dialog to begin exploring Apache Tapestry./p /div script $(function() { $( #evil ).dialog({ modal:true }); $(input[type='text']).focus(); }); /script style text=text/css .ui-widget-overlay { opacity: .80; filter: alpha(opacity = 80); background: black; } /style -- !-- END Temporary Stop CISPA -- ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry 5.4-beta-3 preview now available
This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry Tutorial
Bob Harner edited the page: Tapestry Tutorial Comment: Let's finally stop calling annotations new Wiki Markup {float:right|background="" {contentbylabel:title=Related Articles|showLabels=false|showSpace=false|labels=new-users} {float} Table of Contents Children Display Introduction Welcome to Tapestry! ... You do need to have a reasonable understanding of HTML, a smattering of XML, and a good understanding of basic Java language features, and a few newer things such as Java including Annotations. The Challenges of Web Application Development ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry 5.4-beta-3 preview now available
Bob Harner wrote a blog post: Tapestry 5.4-beta-3 preview now available The 3rd beta preview release of Tapestry 5.4 is now available. While not an actual release candidate, beta previews like this one are high-quality builds that pass all of Tapestry's extensive automated tests. You are encouraged to try out this beta preview and let us know how it's working. If you're using Maven (or Gradle or Ivy, etc), you'll need to add the Apache staging repository to your configured list of Maven repositories first: Apache Staging repo (Maven-format) repository idapachestaging/id nameApache Staging Repository/name urlhttps://repository.apache.org/content/groups/staging/url layoutdefault/layout /repository and here's the dependency: Tapestry 5.4-beta-3 dependency (Maven format) dependency groupIdorg.apache.tapestry/groupId artifactIdtapestry-core/artifactId version5.4-beta-3/version typejar/type scopecompile/scope /dependency There is also Maven archetype available, so you can build a quick little starter project as described at Getting Started, but specifying an alternative catalog:-DarchetypeCatalog=https://repository.apache.org/content/groups/staging View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry 5.4-beta-3 preview now available
Tapestry 5.4-beta-3 dependency (Maven format) language xml dependency groupIdorg.apache.tapestry/groupId artifactIdtapestry-core/artifactId version5.4-beta-3/version typejar/type /dependency There is also a Maven archetype available, so you can build a quick little starter project as described at Getting Started, but specifying an alternative catalog:-DarchetypeCatalog=https://repository.apache.org/content/groups/staging View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry 5.4-beta-3 preview now available
Tapestry 5.4-beta-3 dependency (Maven format) language xml dependency groupIdorg.apache.tapestry/groupId artifactIdtapestry-core/artifactId version5.4-beta-3/version typejar/type /dependency There is also a Maven archetype available, so you can build a quick little starter project as described at Getting Started, but specifying an alternative catalog: Code Block -DarchetypeCatalog=https://repository.apache.org/content/groups/staging View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Cookbook
watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Documentation
): 5.01 5.11 5.21 5.3.x 7 (current) 5.4 (beta) Component Reference: 5.01 5.11 5.21 5.3.x 7 (current) same as current Release Notes: 5.0 5.1 5.2 5.3.x 7 (current) not yet available 1 needs to be built manually from archived sources at http://archive.apache.org/dist/tapestry/. ... Developer Information gives information needed by the Tapestry developers HTML ... !-- 7 -- View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Building Tapestry from Source
Bob Harner edited the page: Building Tapestry from Source Comment: Added some details on skipping tests ... Command-line users: *( gradlew is the gradle wrapper shell script (gradlew) or batch file (gradlew.bat) found in the root folder of the Tapestry source. ./gradlew build Eclipse Gradle IDE users: Right click on the top-level project (or any sub-project) and select Run As Gradle Build..., which starts an External Tools Configuration dialog box. Enter a reasonable name, select the tasks you want to run (for example, tapestry-core/install), and click Run. Running Individual Tests Eclipse users: Install the TestNG plugin to allow running of individual TestNG unit tests from within in Eclipse. ... Running the Tapestry integration tests can take 10 minutes or more (mostly because of Selenium tests, which repeatedly start and stop the Firefox browser), so you won't want to run them every time you try a change. Command-line users: To build while skipping all tests: ./gradlew build -x test You can skip tests on a specific module by adding a colon and the module name. For example: -x test:tapestry-ioc Eclipse Gradle IDE users: In your External Tools Configuration, add the same -x test option as above at Arguments Program Arguments. Running the Integration Test Apps Manually ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Page And Component Classes FAQ
(img, src, image.toClientURL(), class, db-image); resources.renderInformalParameters(writer); writer.end(); return false; } } ... Although these two classes have the same fully qualified class name, they are distinct classes because they are loaded by different class loaders. Gliffy Diagram name Class Loaders size L In a Tapestry application, most application classes are loaded from the middle class loader. Additional class loaders are used to support live service reloading, and live component reloading (along with component class transformation). ... Code Block controls true linenumbers true @OnEvent(value=EventConstants.SUCCESS, component=loginForm) Object storeUserCredentialsAndReturnToProductsPage() { . . . } ... Wiki Markup {scrollbar} Wiki Markup {display-footnotes} View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Limitations
Bob Harner edited the page: Limitations Comment: Added note about running Tap 4 5 apps together ... Although you code Tapestry pages and components as if they were ordinary POJOs (Plain Old Java Objects -- Tapestry does not require you to extend any base classes or implement any special interfaces), as deployed by Tapestry they are closer to a traditional servlet: a single instance of each page services requests from multiple threads. Behind the scenes, Tapestry transforms you code, rewriting it on the fly. What this means is that any incoming request must be handled by a single page instance. Therefore, Tapestry enforces the concept of static structure, dynamic behavior. ... How do I run multiple Tapestry applications in the same web application? This Running multiple Tapestry 5 applications is not supported; there's only one place to identify the application root package, so even configuring multiple filters into multiple folders will not work. Support for multiple Tapestry applications in the same web application was a specific non-goal in Tapestry 5 (it needlessly complicated Tapestry 4). Given how loosely connected Tapestry 5 pages are from each other, there doesn't seem to be an advantage to doing so ... and certainly, in terms of memory utilization, there is a significant down side, were it even possible. Youcanrun a Tapestry 4 app and a Tapestry 5 app side-by-side (the package names are different, for just this reason), but they know nothing of each other, and can't interact directly. This is just like the way you could have a single WAR with multiple servlets; the different applications can only communicate via URLs, or shared state in the HttpSession. Wiki Markup {scrollbar} View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Using BeanEditForm To Create User Forms
t:beaneditform object=address submitlabel=message:submit-label reorder=honorific,firstName,lastName,street1,street2,city,state,zip,email,phone / And then we define the submit-label key in the message catalog: No Format submit-label=Create Address At then the end of the day, the exact same HTML is sent to the client, regardless of whether you include the label text directly in the template, or indirectly in the message catalog. In the long term, the latter approach will work better if you later chose to internationalize your application. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry 5.4-beta-3 preview release vote underway
Bob Harner wrote a blog post: Tapestry 5.4-beta-3 preview release vote underway A vote is underway for the 3rd beta preview release of Tapestry 5.4. This follows 2 other betas and 29 alphas for the work on version 5.4 that began over two years ago. View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Page Navigation
Bob Harner edited the page: Page Navigation Comment: Fixed a bit of bad wiki markup ... component event requests target a specific component on a specific page, triggering an event within that component render requests target a specific page, and stream the HTML markup for that page back to the client {float:right This dichotomy between component event requests and render requests is new in Tapestry 5. It is in some ways based on ideas from the Portlet specification and differentiating the two types of requests alleviates a number of problems in traditional web applications related to the browser back button, or to the user hitting the refresh button in their browser. Logical Page Name Shortening In certain cases, Tapestry will shorten the the logical name of a page. For example, the page class org.example.pages.address.CreateAddress will be given a logical name of address/Create (the redundant Address is removed as a suffix). However, this only affects how the page is referenced in URLs; the template file will still be CreateAddress.tml, whether on the classpath, or as address/CreateAddress.tml (in the web context). ... Tapestry actually creates multiple names for the name page: address/Create and address/CreateAddress are both synonymous. You can user either in Java code that refers to a page by name, or as the page parameter of a PageLink. Component Event Requests Responses ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Wiki Status
Bob Harner (Jan 20, 2014) Page Creating The Skeleton Application Bob Harner (Jan 19, 2014) Page Using BeanEditForm To Create User Forms Bob Harner (Jan 19, 2014) Page Exploring the Project Bob Harner (Jan 19, 2014) Page Implementing the Hi-Lo Guessing Game Bob Harner (Jan 18, 2014) Page Configuration Bob Harner (Jan 18, 2014) Page Release Notes 5.2 Bob Harner (Jan 18, 2014) Page Maven Support FAQ Bob Harner (Jan 18, 2014) Page Hibernate Bob Harner (Jan 18, 2014) Page Hibernate Support FAQ Bob Harner (Jan 18, 2014) Plugins Supported Unknown macro: {plugins-supported} Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Configuration
Wiki Markup {since:since=5.4} When set to true, the DateField component will be lenient about date calculations, for example allowing a January 32 date as input and automatically converting it to February 1. When false (the default), only valid dates may be entered. {since} If false (the default) tapestry.min-gzip-size The minimum stream size necessary for Tapestry to use GZIP compression on the response stream. See Response Compression for more details. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Page Navigation
. Code Block java title ProductDetails.java @Inject private ProductDAO dao; private Product product; private long productId; void onActivate(long productId) { this.productId = productId; product = dao.getById(productId); } long onPassivate() { return productId; } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Developer Bible
Bob Harner edited the page: Developer Bible Comment: Added spaces-over-tabs rule ... Howard uses utility methods that convert from ServiceDef to ServiceDef2, adding a wrapper implementation around a ServiceDef instance if necessary: Code Block public static ServiceDef2 toServiceDef2(final ServiceDef sd) { if (sd instanceof ServiceDef2) return (ServiceDef2) sd; return new ServiceDef2() { public boolean isPreventDecoration() { return false; } public ObjectCreator createServiceCreator(ServiceBuilderResources resources) { return sd.createServiceCreator(resources); } . . . }; } ... Use the complete version number of the release in which the type or method was added: i.e., @since 5.1.0.3. Code Style Formatting Yes, at one time Howard used leading underscores for field names. He has since changed my mind, but this unfortunately infected other people; please try to make your code blend in when modifying existing source. Long ago, Tapestry (3) code used the regrettable leading-I-on-interfaces style. Don't do that. Everything's an interfaceInstead, name the implementation class with an Impl at the end. Howard prefers braces on a new line (and thus, open braces lined up with close braces), so that's what the default code formatting is set up for. It's okay to omit braces for trivial one-liner if statements, such as if (!test) return;. Indent with 4 spaces instead of tabs. Use a lot of vertical whitespace to break methods into logical sections. ... Try and keep the documentation up-to date as you make changes; it is much harder to do so later. This is now much easier using the Confluence wiki (you're reading the result ). Documentation is was at one point the #1 criticism of Tapestry! ... View Online Like View Changes Stop watching space Manage Notifications
[CONF] Apache Tapestry Developer Bible
Bob Harner edited the page: Developer Bible Comment: Chagned SVN to Git ... It is very important to include the JIRA issue id in the commit. This is used in many places: JIRA links issues to the SVN commits Gitcommits for that issue (very handy for seeing what changed as part of a bug fix). The Hudson CI server does as well, and will actually link SVN commits Gitcommits to issues after succesfully building. ... For anything non-trivial, wait for the Hudson CI server to build. It catches a lot of things ... such as files that were not added to SVNGit. And even IntelliJ has a bit of trouble with wildly refactored code. Hudson will catch all that. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Developer Bible
Bob Harner edited the page: Developer Bible Comment: Updated intro paragraph Wiki Markup {float:right|background="" {contentbylabel:title=Related Articles|showLabels=false|showSpace=false|labels=tapestry-dev} {float} This is a semi-random outpouring of thoughts related to being a Tapestry committerIDE choices, coding style and formatting, commit practices, naming conventions and other issues relevant to Tapestry committers contributers. IDE Choices IntelliJ It's a free license for all committers and it's just better. Yes, the first few days can be an unpleasant fumble because everything is almost, but not quite, familiar. Pretty soon you'll love IDEA and recognize that Eclipse has been bending you over and doing unspeakable things. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Developer Information
Bob Harner edited the page: Developer Information Comment: Better description of Developer Bible link ... Confluence Site Setup – all about how Confluence is used to edit the content of the static documentation site Release Process – how to produce a release Developer Bible – random thoughts from Howard related to being a Tapestry committercoding committingadvice, includingIDE choices, coding style, class naming conventions andbug tracking policies Building Tapestry from Source – how to build Tapestry itself Version Numbers ... Jenkins automated build results – trunk Cobertura code coverage report – measures test coverage Sonar code quality report – measures test coverage, complexity rule violations Browse Git source The Tapestry Jailtapestry jail – information about our FreeBSD jail at typestry.zones.apache.org View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Building Tapestry from Source
... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Building Tapestry from Source
Bob Harner edited the page: Building Tapestry from Source Comment: Restored link to http://tapestry-test.appspot.com/ – it's still running, although very slow ... The Tapestry source includes several web apps that are used by the automated Selenium integration tests. You can also run these apps manually to try out nearly every browser-visible aspect of Tapestry.(See a live example running on Google App Engine.) If using Eclipse: Use the run-jetty-run plugin in Eclipse, with the context directory selected from among the test context directories. For example, in the tapestry-core module, right click on the /src/test/app1 (or app2, etc) folder, and select Run As Run Jetty, then open your browser to http://localhost:8080/tapestry-core ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Component Mixins
Bob Harner edited the page: Component Mixins Comment: Tweaks to intro paragraph ... You can think of a mixin as a kind of mashup for a component; it combines the new behavior of the mixin with the existing behavior of the component, and bundles it all in one place. Mixins may be used to add specialized validation to user input fields, dynamically modify the HTML output of a component, or to add Ajax effects and behaviors to of all sorts of to components. Tapestry comes with several mixins, such as the Autocomplete mixin which adds autocomplete behavior to an ordinary TextField Component. In addition, you can easily create your own. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry HTTPS
Bob Harner edited the page: HTTPS Comment: Added Related Articles box Securing your application with HTTPS Wiki Markup {float:right|background="" {contentbylabel:title=Related Articles|showLabels=false|showSpace=false|space=@self|labels=security} {float} Tapestry assumes your application will be primarily deployed as a standard web application, using HTTP HTTP(not HTTPS) as the transport mechanism. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Security
g-security http://www.localhost.nu/java/tapestry-spring-security/conf.htmlis an add-on to thetapestry-securitymodule, providing federated (third-party) authentication with Facebook, Twitter or Google. To include OpenID with Spring Security in your application, see the following Wiki entry: ... http://wiki.apache.org/tapestry/Tapestry5HowToSpringSecurityAndOpenId View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Community
View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Security FAQ
Bob Harner removed a comment from the page: Security FAQ Added security label Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Security FAQ
ew Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Security
rs, will do) in your application's module class (usually AppModule.java). Cross Site Request Forgery (CSRF) Cross Site Request Forgery is a type of security vulnerability in which legitimate, authorized users may be made to unwittingly submit malicious requests to your web application. Tapestry-csrf-protectionis a 3rd party module that has several features for preventing CSRF attacks. It protects allcomponent event handlers (event links, forms, etc.) by adding aCSRF token to event links and adds a CSRF token as a hidden field to all forms.Tokens are generated on a per-session basis. Security Framework Integration Tapestry does not come with a built-in security implementation authentication/authorization mechanism, to avoid lock-in to a specific security frameworkimplementation. There are various Java security frameworks available, but the main two Java-based open source security frameworks are Apache Shiro (earlier JSecurity) and Spring Security (earlier Acegi Security). Spring Security is the more popular of the two (because of Spring's popularity), whereas Shiro is widely regarded as the more flexible choice. There are well-maintained Tapestry integration projects for both of these frameworks,tapestry-security for for Apache Shiro (from Tynamo.org) and andtapestry-spring-security for for Spring Security. Wiki Markup {float:right|background="" {contentbylabel:title=Related Articles|showLabels=false|showSpace=false|space=@self|labels=spring,security} {float} For tapestry-security (Shiro-based) ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Getting Started
│ │ │ ├── Index.properties │ │ │ └── Index.tml │ │ └── log4j.properties │ └── webapp │ ├── WEB-INF │ │ ├── app.properties │ │ └── web.xml │ ├── favicon.ico │ └── layout │ ├── images │ │ ├── img01.jpg │ │ ├── img03.jpg │ │ ├── img04.jpg │ │ ├── img08.gif │ │ ├── img09.gif │ │ ├── img10.gif │ │ ├── img11.gif │ │ ├── img12.gif │ │ ├── img13.gif │ │ ├── img14.gif │ │ ├── img18.gif │ │ ├── img19.gif │ │ └── img20.gif │ ├── layout.css │ └── license.txt ├── site │ ├── apt │ │ └── index.apt │ └── site.xml └── test ├── conf │ ├── testng.xml │ └── webdefault.xml ├── java │ └── PLACEHOLDER └── resources └── PLACEHOLDER A Tapestry application is composed of pages, each page consisting of one template file and one Java class. Tapestry page templates have the .tml extension and are found in src/main/resources/com/example/newapp/pages ... (that is, in the ... com.example.newapp.pages ... package). ... Templates are essentially HTML with some special markup to reference properties in the corresponding Java class and to reference ready-made or custom components. Tapestry page classes are found in src/main/java/com/example/newapp/pages and their name matches their template name (Index.tml - Index.java). ... Having trouble? Try our Frequently Asked Questions. ... Wiki Markup View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Exploring the Project
Bob Harner edited the page: Exploring the Project Comment: Made images big enough to see ... Make sure you save changes; then click the refresh link in the web browser: Image RemovedImage Added Wiki Markup {float:right|width=30%} {note} If Live Class Reloading isn't working for you, check the Troubleshooting section at [Class Reloading]. {note} {float} ... But ... what if you make a mistake? What if you got the name in the template wrong. Give it a try; in the template, change ${currentTime} to, say, ${currenTime}, and see what you get: Image RemovedImage Added This is Tapestry's exception report page. It's quite detailed. It clearly identifies what Tapestry was doing, and relates the problem to a specific line in the template, which is shown in context. Tapestry always expands out the entire stack of exceptions, because it is so common for exceptions to be thrown, caught, and re-thrown inside other exceptions. In fact, if we scroll down just a little bit, we see more detail about this exception, plus a little bit of help: Image RemovedImage Added This is part of Tapestry's way: it not only spells out exactly what it was doing and what went wrong, but it even helps you find a solution; here it tells you the names of properties you could have used. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Using BeanEditForm To Create User Forms
{display-footnotes} Wiki Markup {scrollbar} View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Creating The Skeleton Application
. Wiki Markup { ... scrollbar} View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Type Coercion
... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Component Events
onActionFromRunQuery() throws JDBCException { dao.executeQuery(); } ... Tapestry emits a new event, of type exception, passing the thrown exception as the context. In fact, the exception is wrapped inside a ComponentEventException, from which you may extract the event type and context. Thus: Code Block language java Object onException(Throwable cause) { message = cause.getMessage(); return this; } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry CSS
Code Block language xml !--[if IE] link type=text/css rel=stylesheet href="" ![endif]-- ... Though it should be rarely needed, you can prevent Tapestry's default style sheet from loading by overriding the configuration in your application's module (normally AppModule.java): Code Block java title AppModule.java (partial) language java @Contribute(MarkupRenderer.class) public static void deactiveDefaultCSS(OrderedConfigurationMarkupRendererFilter configuration) { configuration.override(InjectDefaultStyleheet, null); } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Integration Testing
xml title testng.xml language xml suite name=Selenium Tests Suite annotations=1.5 test name=Integration Tests enabled=true parameter name=tapestry.browser-start-command value=*googlechrome / parameter name=tapestry.port value=9091 / classes class name=com.example.newapp.SeleniumTest/class /classes /test /suite ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Autoloading Modules
xml project . . . build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-jar-plugin/artifactId configuration archive manifestEntries Tapestry-Module-Classesorg.example.mylib.LibModule, org.example.mylib.internal.InternalModule/Tapestry-Module-Classes /manifestEntries /archive /configuration /plugin /plugins /build . . . /project ... The value for this annotation is a list of additional classes to be treated as module classes, exactly as if they were identified in the manifest. Despite the name, there is no hierarchy of modules in Tapestry IoC. Example: Code Block language java @SubModule( { InternalTransformModule.class }) public final class InternalModule { . . . ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Logging in Tapestry
... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Integrating with Spring Framework
h3. Injecting Tapestry services in Spring beans If you have configured Spring to allow annotation-based injection, then you will be able to inject Tapestry services into your Spring Beans. This feature is only available when Spring ApplicationContext is not configured and loaded externally. Inside your Spring beans, you may use @[Inject|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Inject.html] and @[Autowired|http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html] annotations. Simply add these two annotations on top the field you want to inject in your Spring bean. ... ... @Inject @Autowired private MyService myService; ... ... or use @Inject on top of arguments in @Autowired bean constructor methods ... ... private final MyService myService; @Autowired public UserDAOImpl(@Inject MyService myService) { this.myService = myService; } ... ... h3. Configuring Spring with Tapestry Symbols This is accomplished by a BeanFactoryPostProcessors that resolves the values of 'placeholders' from symbol values. In the following example the value of the Bean's property 'productionMode' is the value of the Tapestry's symbol [tapestry.production-mode|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/SymbolConstants.html#PRODUCTION_MODE] {code:xml} bean id=myBean class=org.example.MyBean property name=productionMode value=${tapestry.production-mode}/ /bean {code} ... ApplicationContextCustomizer ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Bean Validation
e function. Code Block language java @Contribute(ClientConstraintDescriptorSource.class) public static void provideClientConstraintDescriptors(ConfigurationClientConstraintDescriptor config) { config.add(new ClientConstraintDescriptor(Range.class, range, min, max)); } View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Component Report
ges /configuration /plugin ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Tapestry for JSF Users
java public class Employee { @Validate(required,minlength=2,maxlength=100) private String lastName; @NotNull @Email private String email; ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Default Parameter
Code Block language java @Property @Parameter(required=true, autoconnect=true) private String value; ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Component Libraries
, Tapestry automatically creates a mapping for assets inside your JAR. In the above example, the icon image will be exposed as {{/assets/}}{_}application version{_}{{/happy/components/happy.jpg}} (the application version number is incorporated into the URL). The happy portion is a virtual folder that maps to the library's root package (as folder {{org/example/happylib}} on the Java classpath). The application version is a configurable value. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Switching Cases
public class SwitchMe { @Persist private int whichCase; @Inject private Block case1, case2, case3, case4; public Object getCase() { switch (whichCase) { case 1: return case1; case 2: return case2; case 3: return case3; case 4: return case4; default: return null; } } } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Error Page Recipe
xml html xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd head titleResource not found./title /head body h1Page or resource not found./h1 t:if test=! productionMode t:renderobject object=request/ /t:if /body /html ... Code Block title Error404.java language java package com.example.cookbook.pages; import org.apache.tapestry5.SymbolConstants; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.annotations.Symbol; import org.apache.tapestry5.services.Request; public class Error404 { @Property @Inject private Request request; @Property @Inject @Symbol(SymbolConstants.PRODUCTION_MODE) private boolean productionMode; } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Extending the If Component
) language java public static void contributeTypeCoercer(ConfigurationCoercionTuple configuration) { add(configuration, SearchResult.class, Boolean.class, new CoercionSearchResult, Boolean() { public Boolean coerce(SearchResult input) { return !input.isEmpty(); } }); } private static S, T void add(ConfigurationCoercionTuple configuration, ClassS sourceType, ClassT targetType, CoercionS, T coercion) { CoercionTupleS, T tuple = new CoercionTupleS, T(sourceType, targetType, coercion); configuration.add(tuple); } ... With this in place, the previous template can be simplified: Code Block language xml t:if test=searchResult . . . /t:if ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Meta-Programming Page Content
package com.fnord.services.forbidframing; import org.apache.tapestry5.MarkupWriter; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.services.MarkupRenderer; import org.apache.tapestry5.services.MarkupRendererFilter; import org.apache.tapestry5.services.MetaDataLocator; import org.apache.tapestry5.services.RequestGlobals; import org.apache.tapestry5.services.Response; import org.apache.tapestry5.services._javascript_.InitializationPriority; import org.apache.tapestry5.services._javascript_._javascript_Support; import com.fnord.FnordSymbols; public class ForbidFramingFilter implements MarkupRendererFilter { @Inject private RequestGlobals requestGlobals; @Inject private MetaDataLocator metaDataLocator; @Inject private Response response; @Inject private _javascript_Support jsSupport; public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) { String pageName = requestGlobals.getActivePageName(); boolean forbidFraming = metaDataLocator.findMeta( FnordSymbols.FORBID_FRAMING, pageName, boolean.class); if (forbidFraming) { response.setHeader(X-Frame-Options, DENY); jsSupport.addScript(InitializationPriority.IMMEDIATE, Fnord.popOutOfFrame();); } renderer.renderMarkup(writer); } } ... Code Block title fnord.js (partial) language js lang _javascript_ Fnord = { popOutOfFrame : function() { if (top != self) top.location.replace(location); } } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Link Components FAQ
Map values will be encoded to strings. Tapestry 5.3 also adds a literal map syntax to the [property _expression_ language|TAPESTRY:Property Expressions]. ... Sometimes it is useful to create a link back to the current page, but you don't always know the name of the page (the link may appear inside a deeply nested subcomponent). Fortunately, this is easy. Code Block language xml t:pagelink page=prop:componentResources.pageNamerefresh page/t:pagelink ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Ajax Components FAQ
input id=firstName_12a820cc40e name=firstName type=text ... The solution is to add the following to the body of your Zone: Code Block language xml div class=t-invisible/ ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Security FAQ
Bob Harner added a comment to the page: Security FAQ Added security label View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Integration with existing applications
ation page. Wiki Markup {scrollbar} Wiki Markup {display-footnotes} View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Limitations
messageService, MapString,Job configuration) { JobQueueImpl service = new JobQueueImpl(configuration); messageService.addQueueListener(service); return service; } ... Support for multiple Tapestry applications in the same web application was a specific non-goal in Tapestry 5 (it needlessly complicated Tapestry 4). Given how loosely connected Tapestry 5 pages are from each other, there doesn't seem to be an advantage to doing so ... and certainly, in terms of memory utilization, there is a significant down side, were it even possible. Wiki Markup {scrollbar} Wiki Markup {display-footnotes} View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Specific Errors FAQ
This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Maven Support FAQ
Bob Harner edited the page: Maven Support FAQ Comment: fixed language param of code macro ... Code Block title pom.xml (partial) language xml resource directorysrc/main/resources/directory excludes exclude**/*.tml/exclude /excludes filteringtrue/filtering /resource resource directorysrc/main/resources/directory includes include**/*.tml/include /includes filteringfalse/filtering /resource ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Release Notes 5.2
Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Configuration
exception message is displayed, not the entire stack of exceptions, properties and other information shown in development mode). tapestry. ... since since 5.4 The Asset path to the copy of the Require JS _javascript_ library to include in rendered pages. Any page that makes use of any _javascript_ will automatically import this library (as well as the core _javascript_ stack). tapestry.secure-enabled If true, then @Secure annotations are honored; if false, no security checks or redirects take place. This defaults to tapestry.production-mode, meaning that in development mode it will (by default) be disabled. ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Implementing the Hi-Lo Guessing Game
page; it now needs a new property to store the message to be displayed to the user, and needs a field for the injected GameOver page: ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Component Classes
). ... Injection of dependencies occurs at the field level, via additional annotations. At runtime, fields that contain injections become read-only. Code Block @Inject // inject a resource private ComponentResources componentResources; @Inject // inject a block private Block foo; @Inject // inject an asset @Path(context:images/top_banner.png) private Asset banner; @Inject // inject a service private AjaxResponseRenderer ajaxResponseRenderer; ... You can define the type of component inside template, or you can create an instance variable for the component and use the @Component annotation to define the component type and parameters. Example: Code Block java package org.example.app.pages; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.Property; import org.example.app.components.Count; public class Countdown { @Component(parameters = { start=5, end=1, value=countValue }) private Count count; @Property private int countValue; } ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry Building Tapestry from Source
Eclipse Gradle IDE users: Running the Integration Test Apps Manually ... You can use the git format-patch command to produce a nice set of patches to attach to the relevant issue in JIRA: Code Block git format-patch origin/master ... Problem: I can't run the build. it gives me an error in line 91: Code Block 20:22:11.438 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong: 20:22:11.439 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred evaluating root project 'tapestry-project-trunk'. 20:22:11.440 [ERROR] [org.gradle.BuildExceptionReporter] Cause: Cannot get property 'plus' on null object ... View Online Like View Changes Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
[CONF] Apache Tapestry IoC Cookbook - Patterns
IoC Cookbook - Patterns Page edited by Bob Harner Comment: Fixed the , , and occurrances as reported by basileChandesris Changes (16) ... Main Article: [Chain of Command|ChainBuilder Service] Letapos;s Lets look at another example, again from the Tapestry code base. The [InjectProvider|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/InjectionProvider.html] interface is used to process the @Inject annotation on the fields of a Tapestry page or component. Many different instances are combined together to form a _chain of command_. The interface has only a single method (this is far from uncommon): ... }{code} The return type indicates whether the provider was able to do something. For example, the AssetInjectionProvider checks to see if thereapos;s theres an @Path annotation on the field, and if so, converts the path to an asset, works with the ClassTransformation object to implement injection, and returns true to indicate success. Returns true terminates the chain early, and that true value is ultimately returned to the caller. In other cases, it returns false and the chain of command continues down to the next provider. If no provider is capable of handling the injection, then the value false is ultimately returned. ... {code} public static void contributeInjectionProvider( OrderedConfigurationlt;InjectionProvidergt; OrderedConfigurationInjectionProvider configuration, MasterObjectProvider masterObjectProvider, ObjectLocator locator, ... AssetSource assetSource) { configuration.add(quot;Defaultquot;, configuration.add(Default, new DefaultInjectionProvider(masterObjectProvider, locator)); configuration.add(quot;ComponentResourcesquot;, configuration.add(ComponentResources, new ComponentResourcesInjectionProvider()); configuration.add( quot;CommonResourcesquot;, configuration.add(CommonResources, new CommonResourcesInjectionProvider(), after:Default); quot;after:Defaultquot;); configuration.add( quot;Assetquot;, configuration.add(Asset, new AssetInjectionProvider(symbolSource, assetSource), before:Default); quot;before:Defaultquot;); configuration.add(quot;Blockquot;, new BlockInjectionProvider(), quot;before:Defaultquot;); configuration.add(quot;Servicequot;, new ServiceInjectionProvider(locator), quot;after:*quot;); configuration.add(Block, new BlockInjectionProvider(), before:Default); configuration.add(Service, new ServiceInjectionProvider(locator), after:*); }{code} ... {code} public InjectionProvider build(Listlt;InjectionProvidergt; build(ListInjectionProvider configuration, ChainBuilder chainBuilder) { return chainBuilder.build(InjectionProvider.class, configuration); }{code} Now, letapos;s lets see how this is used. The InjectWorker class looks for fields with the InjectAnnotation, and uses the chain of command to inject the appropriate value. However, to InjectWorker, there is no chain ... just a _single_ object that implements the InjectionProvider interface. {code} ... }{code} Reducing the chain to a single object vastly simplifies the code: weapos;ve weve _factored out_ the loop implicit in the chain of command. That eliminates a lot of code, and thatapos;s thats less code to test, and fewer paths through InjectWorker, which lowers its complexity further. We donapos;t dont have to test the cases where the list of injection providers is empty, or consists of only a single object, or where itapos;s its the third object in that returns true: it looks like a single object, it acts like a single object ... but its implementation uses many objects. {scrollbar} Full Content IoC Cookbook - Overriding IoC ServicesIoC cookbookIoC cookbook - Service Configurations Using Patterns Related Articles Page: ChainBuilder Service Page: PipelineBuilder Service Page: StrategyBuilder
[CONF] Apache Tapestry Community
Community Page edited by Bob Harner Comment: Added link to "Eclipse Integration for Tapestry 5" Changes (1) ... h1. IDE Integrations [Eclipse-tapestry5-plugin|https://github.com/anjlab/eclipse-tapestry5-plugin] {quote} An Eclipse plugin for Tapestry 5 by Dmitry Gusev, with a Quick Switch between templates and component classes, a Tapestry Context view, and many other convenience features. {quote} [Tapestry Tools|http://code.google.com/p/tapestrytools/wiki/Install_Guide_Lightweight_TapestryTools] by Gavin Lei {quote} ... Full Content Tapestry has an active community of users and developers. This is an overview of how to participate, along with a list of some of the great contributions of the community members. Getting Involved Reporting Problems / Getting Support Contributing translations for Tapestry built-in messages Source Code Access Becoming a Contributor Becoming a Committer Community Contributions Modules Extensions Tutorials IDE Integrations Getting Involved Reporting Problems / Getting Support Like all Apache projects, Tapestry uses mailing lists for most communication. You can subscribe by sending e-mail to the addresses below. For each list, there are subscribe, unsubscribe, and archive links. All Tapestry users are welcome to subscribe to any of these lists, however questions on how to use Tapestry in your application are best sent to the user mailing list. Please note that the Nabble archives are set to read-only and don't allow for posting or answering using Nabble's web interface. You have to subscribe to the mailing list in order to post. Subscribe Unsubscribe Apache Archive Nabble Archive MarkMail Archive Tapestry User List Subscribe Unsubscribe mail-archives.apache.org www.nabble.com tapestry.markmail.org Tapestry Developer List Subscribe Unsubscribe mail-archives.apache.org www.nabble.com tapestry.markmail.org Tapestry Commits List Subscribe Unsubscribe mail-archives.apache.org tapestry.markmail.org Search Multiple Lists www.nabble.com tapestry.markmail.org Tapestry issues are tracked in the Apache JIRA. Unless your problem is clear as day, it's a good idea to discuss it on the Tapestry Users mailing list first, before adding an issue. At the same time, it's generally unlikely that a bug will be fixed unless a JIRA Issue is created. Eric Raymond has a detailed guide to asking questions the right way. If you are not getting a response to your problem, it's likely because you aren't asking it the right way. Just saying something is "broken" or "failed" is not enough. How did it fail? Did it do the wrong thing? Throw an exception? Not respond in any way? What exactly did you expect to happen? All of this information should be made available when looking for help, plus context on the general problem you were trying to solve in the first place (there may be a better solution entirely). Read Eric Raymond's guide ... it's fun and informative. Contributing translations for Tapestry built-in messages If Tapestry's built-in messages aren't available in your language, you are welcome to contribute a new translation of the message catalogs. For easy instructions, see Localization. Source Code Access Source code for Tapestry can be downloaded along with pre-compiled binaries. Tapestry uses Git to manage the project's source code. Web access to the Tapestry repository is available as GIT-WIP at Apache. Access using Git client: $ git clone http://git-wip-us.apache.org/repos/asf/tapestry-5.git (See Building Tapestry from Source for more info.) Becoming a Contributor The best way to become a contributor is to become active on the mailing list; Tapestry is known to have an active and helpful community on the mailing list, and the more mentors we can add, the better. If you want to help out with documentation, you must sign an Apache Contributor License Agreement, at which point we can grant write access to the Confluence Wiki (where official documentation is created). Providing patches (with tests) is another way to become a contributor. Becoming a Committer Active contributors may be asked to become full committers, with write access to the source code. Generally, contributors who have been consistently active and helpful for three to six months are eligible for committer access. If you think you are in that category, don't be shy about contacting members of the Tapestry PMC (Project Management Committee). Community Contributions Modules Chenille Kit by Massimo Lusetti Collection of modules, serv
[CONF] Apache Tapestry Performance and Clustering
Performance and Clustering Page edited by Bob Harner Comment: Added mention of tapestry.clustered-sessions symbol Changes (1) ... * Ensure (be absolutely sure) that [Production Mode|Configuration#tapestry.productionmode] is turned on in production. * Minimize the use of the HTTPSession (see below), especially if youre using clustering. * Set [tapestry.clustered-sessions|Configuration#tapestry.clustered-sessions] to false if you arent using clustering. * Organize your _javascript_ files into [_javascript_Stacks|_javascript_#_javascript_Stacks]. * Ensure that your static resources (images, CSS, _javascript_) are being cached by the browser. ... Full Content Related Articles Page: Persistent Page Data Page: Session Storage Page: Performance and Clustering Performance and Clustering Tapestry has a great performance story to tell. It's designed to take advantage of the speed of the modern JVM: no reflection, built to support a high level of concurrency without contention, and clean, lightweight code paths. In addition, there is built-in integrated GZIP content compression, far-future expires headers on static resources, _javascript_ aggregation and minification, and an intentionally lightweight use of the HTTPSession. The result is a blistering fast framework. See Tapestry's Performance Tested for some objective numbers. Performance Tips But even with all of Tapestry's built-in speediness, to really get top performance you'll need to be sure you're not hamstringing Tapestry. As a start, use the following checklist: Ensure (be absolutely sure) that Production Mode is turned on in production. Minimize the use of the HTTPSession (see below), especially if you're using clustering. Set tapestry.clustered-sessions to "false" if you aren't using clustering. Organize your _javascript_ files into _javascript_Stacks. Ensure that your static resources (images, CSS, _javascript_) are being cached by the browser. Use "asset:" or "context:" binding prefixes for all links to static resources (images, CSS, _javascript_). Make sure that your firewall, proxy server, load balancer, front-end web servers, and app servers all allow caching of static resources. Ensure "cache-control" and "vary" HTTP headers are set correctly for your static resources. Use a client-based tool (like Firebug) to examine the requests that your browser makes as you navigate through the site. You should not see repeated requests for static resources. Consider using a Content Delivery Network for static parts of your site. After all of the above issues are addressed, if you still have performance problems, they probably aren't related to Tapestry. Clustering versus Sticky Sessions For web applications, clustering is a load-balancing technique in which multiple application servers are set up to behave as one big server. Generally this requires replicating HttpSession data across the servers, to ensure that a user's web interactions will continue without interruption regardless of which server handles the next request. Session replication achieves very high reliability, but it incurs an extra performance cost (due to the serializing and deserializing of session data and the extra network traffic required). In contrast, Sticky Sessions (also called session persistence or sticky persistence) is a load balancing technique in which each session is assigned to a particular server for the duration of the session. This approach doesn't require copying HTTPSession data between servers, so it's very scalable. But if a server goes down, all of its sessions are lost. In general, the sticky sessions approach is the way to go when possible (that is, when performance is more important than session survival). It represents a much more efficient use of resources ... you are scaling out not up, which is always cheaper. It also means that you don't have to be as careful about what goes into the HTTPSession. For details on setting up clustering and sticky sessions, see the documentation of whatever load balancer you are using. Clustering Tapestry is designed to be "a good citizen" of an application server that supports clustering. It is careful about what it
[CONF] Apache Tapestry Component Rendering
Component Rendering File attached by Bob Harner tapestry_render_phases.gliffy (39 kB application/octet-stream) - Updated render phase chart (Gliffy source) Stop watching space | Change email notification preferences View Attachments