[CONF] Apache Tapestry Release Process

2014-09-02 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-08-28 Thread Bob Harner (Confluence)














  


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

2014-07-17 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-07-05 Thread Bob Harner (Confluence)


 




 

 



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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)
)


 




 
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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)
.
 



  
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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-23 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-06 Thread Tsvetelin Saykov (Confluence)














  


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

2014-06-06 Thread Tsvetelin Saykov (Confluence)














  


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

2014-06-06 Thread Tsvetelin Saykov (Confluence)














  


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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)
   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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)


 


  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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)








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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)


 


  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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-06-02 Thread Howard M. Lewis Ship (Confluence)


 


  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

2014-06-02 Thread Bob Harner (Confluence)














  


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

2014-06-01 Thread Bob Harner (Confluence)
...






 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

2014-05-30 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-05-30 Thread Howard M. Lewis Ship (Confluence)














  


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

2014-05-28 Thread Howard M. Lewis Ship (Confluence)

 


 


 



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

2014-03-20 Thread Nourredine Khadri (Confluence)














  


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

2014-03-07 Thread Bob Harner (Confluence)














  


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

2014-03-07 Thread Bob Harner (Confluence)
  


 



 This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software 



[CONF] Apache Tapestry Tapestry Tutorial

2014-03-06 Thread Bob Harner (Confluence)














  


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

2014-03-06 Thread Bob Harner (Confluence)














  


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

2014-03-06 Thread Bob Harner (Confluence)
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

2014-03-06 Thread Bob Harner (Confluence)
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

2014-03-05 Thread Bob Harner (Confluence)
 watching space   Manage Notifications  


 


 


  This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software  






[CONF] Apache Tapestry Documentation

2014-03-03 Thread Howard M. Lewis Ship (Confluence)
): 
 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

2014-03-02 Thread Bob Harner (Confluence)














  


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

2014-03-02 Thread Bob Harner (Confluence)
(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

2014-03-02 Thread Bob Harner (Confluence)














  


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

2014-02-25 Thread Bob Harner (Confluence)


 




   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

2014-02-23 Thread Bob Harner (Confluence)














  


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

2014-02-17 Thread Bob Harner (Confluence)














  


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

2014-02-17 Thread Bob Harner (Confluence)

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

2014-02-17 Thread Bob Harner (Confluence)
 



 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

2014-02-15 Thread Bob Harner (Confluence)
.
 






 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

2014-02-08 Thread Bob Harner (Confluence)














  


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

2014-02-08 Thread Bob Harner (Confluence)














  


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

2014-02-08 Thread Bob Harner (Confluence)














  


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

2014-02-08 Thread Bob Harner (Confluence)














  


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

2014-02-08 Thread Bob Harner (Confluence)
 
 

...






 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

2014-02-08 Thread Bob Harner (Confluence)














  


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

2014-02-01 Thread Bob Harner (Confluence)














  


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

2014-01-25 Thread Bob Harner (Confluence)














  


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

2014-01-25 Thread Bob Harner (Confluence)
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

2014-01-21 Thread Bob Harner (Confluence)
 









 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

2014-01-21 Thread Bob Harner (Confluence)














  


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

2014-01-21 Thread Bob Harner (Confluence)
ew Changes  
 Stop watching space   Manage Notifications  


 


 


  This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software  






[CONF] Apache Tapestry Security

2014-01-21 Thread Bob Harner (Confluence)
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

2014-01-20 Thread Bob Harner (Confluence)
│ │ │ ├── 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

2014-01-19 Thread Bob Harner (Confluence)














  


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

2014-01-19 Thread Bob Harner (Confluence)




 {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

2014-01-19 Thread Bob Harner (Confluence)
.  






 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

2014-01-18 Thread Bob Harner (Confluence)
 



...






 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

2014-01-18 Thread Bob Harner (Confluence)
 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

2014-01-18 Thread Bob Harner (Confluence)
  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

2014-01-18 Thread Bob Harner (Confluence)








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

2014-01-18 Thread Bob Harner (Confluence)


 




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

2014-01-18 Thread Bob Harner (Confluence)
 



...






 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

2014-01-18 Thread Bob Harner (Confluence)


 




 

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

2014-01-18 Thread Bob Harner (Confluence)
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

2014-01-18 Thread Bob Harner (Confluence)
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

2014-01-18 Thread Bob Harner (Confluence)
  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

2014-01-18 Thread Bob Harner (Confluence)
  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

2014-01-18 Thread Bob Harner (Confluence)
, 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

2014-01-18 Thread Bob Harner (Confluence)


 




 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

2014-01-18 Thread Bob Harner (Confluence)
   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

2014-01-18 Thread Bob Harner (Confluence)
)


 




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

2014-01-18 Thread Bob Harner (Confluence)


 




 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

2014-01-18 Thread Bob Harner (Confluence)
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

2014-01-18 Thread Bob Harner (Confluence)


 




 
 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

2014-01-18 Thread Bob Harner (Confluence)














  


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

2014-01-18 Thread Bob Harner (Confluence)
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

2014-01-18 Thread Bob Harner (Confluence)
 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

2014-01-18 Thread Bob Harner (Confluence)
  


 


 


  This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software  






[CONF] Apache Tapestry Maven Support FAQ

2014-01-18 Thread Bob Harner (Confluence)














  


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

2014-01-18 Thread Bob Harner (Confluence)
 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

2014-01-18 Thread Bob Harner (Confluence)
 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

2014-01-18 Thread Bob Harner (Confluence)
 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

2013-12-22 Thread Bob Harner (Confluence)
).
 



...
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

2013-12-18 Thread Bob Harner (Confluence)
 
 
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

2013-11-25 Thread Bob Harner (Confluence)







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

2013-10-30 Thread Bob Harner (Confluence)







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

2013-10-22 Thread Bob Harner (Confluence)







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

2013-10-15 Thread Bob Harner (Confluence)







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









  1   2   3   4   5   6   7   8   9   10   >