[CONF] Apache Tapestry Building Tapestry from Source

2013-01-12 Thread confluence







Building Tapestry from Source
Page edited by Bob Harner


Comment:
Added alternate instructions for Eclipse using EGit and Gradle IDE


 Changes (30)
 




This is a brief guide to building Tapestry itself from source code.  
h3. Prerequisites 
Although Tapestry _users_ are free to use any build mechanism (and first class Maven support is provided), to build Tapestry from source.you will use Gradle. 
 
Note: Both command line and Eclipse Gradle IDE/EGit instructions are given here. Generally youll want to chose approach one or the other, rather than mixing them.  h2. Prerequisites  
* Install a Java JDK (Sun/Oracle, not OpenJDK), version 1.6 (1.5 should also work). 
* Install an IDE (IDEA IntelliJ is recommended (and free to Tapestry committers), but Eclipse will also work. NetBeans is reported to work as well. * Install Firefox browser version 3.6, needed for the integration tests. * Install a Git client 
** Command-line users: http://git-scm.com/downloads ** Eclipse users: Install EGit from the Eclipse Marketplace, then in In Window  Preferences  Team  Git, set your Default repository folder (e.g. {{~/git}} or {{%HOME%\git}}) 
* Install Gradle 1.0-milestone-3 or newer (or a Gradle plugin to your IDE), 
* Clone Tapestry from the Git repo: 
** Command-line users: http://www.gradle.org/downloads ** Eclipse users: Install Gradle IDE from the Eclipse Marketplace 
 
h32. Getting Started 
 Please read https://git-wip-us.apache.org/ first.  
{code} git clone https://git-wip-us.apache.org/repos/asf/tapestry-5.git {code} 
h3. Clone the Repository 
 
h3. IDE Preparation 
Clone Tapestry from the Git repo: 
 
* If using Eclipse: ** do {{./gradlew eclipse}} ** Gradles eclipse plugin doesnt include the provided project dependencies; you need to add them manually (Java Build Path - Projects - Add tapestry-test). The plugin also generates a root eclipse project, so youll need to delete the .project file in the root folder, and then you can import all Tapestry sub-projects at once.  
* Command-line git users: | Non Committers: | git clone http://git-wip-us.apache.org/repos/asf/reponame.git | | Committers: | git clone http://git-wip-us.apache.org/repos/asf/reponame.git | * Eclipse EGit users: ** Switch to Git perspective; then copy one of the URLs above into paste buffer ** Right-click  Paste repository path or URI. This will bring up the Clone Git Repository dialog. ** Committers: make sure Protocol is https, and enter your Apache commiter LDAP user name  password ** click Next. ** Select the branches youre interested in (e.g 5.3 and master), click Next ** Select Directory to where you want the project source code (e.g. {{~/git/tapestry-5}} or {{%HOME%\git\tapestry-5}}) ** Select whichever Initial Branch youre interested in (e.g. master) ** Set Remote name to origin (the default) ** *VERY IMPORTANT*: uncheck the Import all existing projects checkbox (well go this via Gradle, below) ** Click Finish. (Be patient; the clone operation might take a few minutes.) 
 
h3. Building 
h3. Gradle Preparation 
 
You can build individual modules, or (from the root folder) build everything. 
* Command-line gradle users only: ** If youre using Eclipse but *not* Gradle IDE do {{./gradlew eclipse}} ** The command-line Gradles eclipse plugin doesnt include the provided project dependencies; you need to add them manually (Java Build Path  Projects  Add tapestry-test). The plugin also generates a root eclipse project, so youll need to delete the .project file in the root folder, and then you can import all Tapestry sub-projects at once. * Eclipse Gradle IDE users: ** Switch to Java (or JEE) perspective and right-click  Import...  Gradle  Gradle Project  Next. ** Set the Root folder to where you put your Tapestry source in the previous section (e.g. {{~/git/tapestry-5}} or {{%Home%\git\tapestry-5}}) ** Click {{Build Model}}. Select the top-level (the top-level module and all sub-modules) then click {{Finish}}. ** Be sure the Enable dependency management and Add to workingset tapestry-5 checkboxes are checked. ** Click {{Finish}}. (Be patient; the import operation might take a few minutes.) * Eclipse EGit users: Do a Git Share on the project: ** Still in the Java (or JEE) perspective, select all of the Tapestry projects (top-level and sub-modules) and right-click  Team  Share Project...  Git  Next  Ensure all are selected, click {{Finish}}. 
 
Tapestry 5 is built using Gradle. The following examples assume you are using Gradle from the 

[jira] [Commented] (TAP5-2049) Tapestry should provide locking semantics for attributes stored in the session, to prevent multiple simultaneous requests (due to Ajax) from conflicting

2013-01-12 Thread Howard M. Lewis Ship (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13551983#comment-13551983
 ] 

Howard M. Lewis Ship commented on TAP5-2049:


Obviously, we only can handle locking within a single JVM.  
ReentrantReadWriteLock is serializable, so it will transfer between servers in 
the cluster just fine.

Thread safety is paramount for me; if a single browser is firing many Ajax 
requests simultaneously, they may be handled in sequential order (when there is 
server-side state). I am already considering a tweak where querying the names 
of attributes only requires a shared read lock, and then an upgrade to 
exclusive write lock only occurs when reading or updating attributes.

Brian Goetz has covered this issue:
http://www.ibm.com/developerworks/library/j-jtp09238/index.html

 Tapestry should provide locking semantics for attributes stored in the 
 session, to prevent multiple simultaneous requests (due to Ajax) from 
 conflicting
 

 Key: TAP5-2049
 URL: https://issues.apache.org/jira/browse/TAP5-2049
 Project: Tapestry 5
  Issue Type: Bug
  Components: tapestry-core
Affects Versions: 5.4
Reporter: Howard M. Lewis Ship
Assignee: Howard M. Lewis Ship
  Labels: session, thread-safety
 Fix For: 5.4


 Currently, multiple threads may be processing requests, due to Ajax.  If they 
 all access state stored in the HttpSession, the rsult can be invalid.
 Tapestry should maintain a lock object inside the session, and automatically 
 acquire a read lock the first time a request thread reads values from the 
 session, and upgrade to a write lock when writing values to the session.
 The lock can be released at the end of the request.
 A reentrant read/write lock may be insufficient, as values inside the session 
 are mutable; it is possible that the lock should be exclusive.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (TAP5-2053) Use of `transient` property in alert options breaks JavaScript processors

2013-01-12 Thread Howard M. Lewis Ship (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2053?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Howard M. Lewis Ship reassigned TAP5-2053:
--

Assignee: Howard M. Lewis Ship

 Use of `transient` property in alert options breaks JavaScript processors
 -

 Key: TAP5-2053
 URL: https://issues.apache.org/jira/browse/TAP5-2053
 Project: Tapestry 5
  Issue Type: Bug
  Components: tapestry-core
Affects Versions: 5.4
Reporter: Jochen Kemnade
Assignee: Howard M. Lewis Ship
  Labels: javascript, patch
 Attachments: 
 0001-transient-is-a-reserved-word-in-JavaScript-so-we-esc.patch


 The alert options use a property named `transient`. As that is a reserved 
 keyword, it breaks JavaScript compilers. This was already addressed in commit 
 ff5cb2ea4d640c78ab7e2c14b47502f8bd3c8e73 but the fix got lost.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (TAP5-2054) `dom.js` implementations break when minified

2013-01-12 Thread Howard M. Lewis Ship (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Howard M. Lewis Ship reassigned TAP5-2054:
--

Assignee: Howard M. Lewis Ship

 `dom.js` implementations break when minified
 

 Key: TAP5-2054
 URL: https://issues.apache.org/jira/browse/TAP5-2054
 Project: Tapestry 5
  Issue Type: Bug
  Components: tapestry-core
Affects Versions: 5.4
Reporter: Jochen Kemnade
Assignee: Howard M. Lewis Ship
  Labels: javascript, jquery, prototype

 When either of the `dom.js` implementations is minified via closure compiler, 
 its inner classes are renamed and the `convertContent` function breaks for 
 `ElementWrapper` instances. as `constructor?.name` is not ElementWrapper 
 anymore.
 If a module's classes should be globally available, they should be exported, 
 otherwise the `instanceof` operator might be a better choice.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (TAP5-2051) Fix Plastic objects memory leaks

2013-01-12 Thread Howard M. Lewis Ship (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2051?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Howard M. Lewis Ship reassigned TAP5-2051:
--

Assignee: Howard M. Lewis Ship

 Fix Plastic objects memory leaks
 

 Key: TAP5-2051
 URL: https://issues.apache.org/jira/browse/TAP5-2051
 Project: Tapestry 5
  Issue Type: Improvement
  Components: tapestry-core
Affects Versions: 5.3.6
Reporter: Denis Stepanov
Assignee: Howard M. Lewis Ship
 Attachments: 0001-Fix-Plastic-objects-memory-leaks.patch


 Memory leaks caused by anonymous inner class' strong reference to the parent

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (TAP5-2049) Tapestry should provide locking semantics for attributes stored in the session, to prevent multiple simultaneous requests (due to Ajax) from conflicting

2013-01-12 Thread Denis Stepanov (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13552018#comment-13552018
 ] 

Denis Stepanov commented on TAP5-2049:
--

Obviously, exclusive session access is a bad idea:

- We have many concurrent ajax request, this change means major performance 
issue for us!
- This will not work in a clustered environment, the clustered session class 
shouldn't inherit the locks functionality.
- Tapestry should not do this by default, any kind of synchronization between 
the requests is bad idea and should be avoided at any cost.

Please do not force every Tapestry user to have this, if you want it in your 
apps just advice the session factory and return exclusive session delegate.

 Tapestry should provide locking semantics for attributes stored in the 
 session, to prevent multiple simultaneous requests (due to Ajax) from 
 conflicting
 

 Key: TAP5-2049
 URL: https://issues.apache.org/jira/browse/TAP5-2049
 Project: Tapestry 5
  Issue Type: Bug
  Components: tapestry-core
Affects Versions: 5.4
Reporter: Howard M. Lewis Ship
Assignee: Howard M. Lewis Ship
  Labels: session, thread-safety
 Fix For: 5.4


 Currently, multiple threads may be processing requests, due to Ajax.  If they 
 all access state stored in the HttpSession, the rsult can be invalid.
 Tapestry should maintain a lock object inside the session, and automatically 
 acquire a read lock the first time a request thread reads values from the 
 session, and upgrade to a write lock when writing values to the session.
 The lock can be released at the end of the request.
 A reentrant read/write lock may be insufficient, as values inside the session 
 are mutable; it is possible that the lock should be exclusive.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[CONF] Apache Tapestry Download

2013-01-12 Thread confluence







Download
Page edited by Bob Harner


Comment:
Added links to Alpha 1 and Alpha 2 sources


 Changes (2)
 




...
Releases under development are less stable; _alpha_ releases are often incomplete; _beta_ releases occur in the lead up to creation of a stable release.  
_Although Tapestry 5.4 is under [active development|_javascript_ Rewrite], there has not yet been an alpha or beta release._ 
Tapestry 5.4 is under [active development|_javascript_ Rewrite], there have been two alpha releases so far: [5.4 Alpha 1|https://repository.apache.org/content/repositories/orgapachetapestry-070/] and [5.4 Alpha 2|https://repository.apache.org/content/repositories/orgapachetapestry-096/]. 
  
...


Full Content

Tapestry can be downloaded in either binary or source format.

The easiest way to download Tapestry and its dependencies is using Maven, as described in Getting Started.

See the Release Notes for differences between versions and how to upgrade.

Stable Releases

Stable releases should be relatively free of critical bugs and are considered the safest option if stability is a requirement.

Tapestry 5.3.x

Tapestry 5.3.6 was released on 12 Oct 2012.  See the release notes for more details.

Note that the recommended distribution method of binary and source JARs is via Maven repository. Binaries, source code, and Javadocs are also available as a zip archive. 






 Tapestry 5.3.6 
 Mirrors 
 Signature 
 MD5 


 Binary (zip) 
 Download 
 ASC 
  4a33c46431bb52f3bd3bcbc3746f44b1


 Source (zip) 
 Download 
 ASC 
 e818632b35fefffbc6e11434efba9200


 Javadoc (zip) 
 Download 
 ASC 
 8cfeb95b06d87639a10a0dc39fec235c






Maven Dependency

dependency
  groupIdorg.apache.tapestry/groupId
  artifactIdtapestry-core/artifactId
  version5.3.6/version
/dependency



Tapestry 5.2.x

Tapestry 5.2.6 was released 29 Jun 2011 and is expected to be the final release of the 5.2 branch. See the release notes for more details.






 Tapestry 5.2.6 
 Mirrors 
 Checksum 
 Signature 


 Binary (tar.bz2) 
 Download 
 MD5 
 ASC 


 Binary (tar.gz) 
 Download 
 MD5 
 ASC 


 Binary (zip) 
 Download 
 MD5 
 ASC 


 Source (tar.bz2) 
 Download 
 MD5 
 ASC 


 Source (tar.gz) 
 Download 
 MD5 
 ASC 


 Source (zip) 
 Download 
 MD5 
 ASC 






Maven Dependency

dependency
  groupIdorg.apache.tapestry/groupId
  artifactIdtapestry-core/artifactId
  version5.2.6/version
/dependency



Tapestry 5.1.x

Tapestry 5.1.0.5 was released 23 Apr 2009 and is expected to be the final release for Tapestry 5.1. See the release notes for more details.







 Tapestry 5.1.0.5 
 Mirrors 
 Checksum 
 Signature 


 Binary (tar.bz2) 
 Download 
 MD5 
 ASC 


 Binary (tar.gz) 
 Download 
 MD5 
 ASC 


 Binary (zip) 
 Download 
 MD5 
 ASC 


 Source (tar.bz2) 
 Download 
 MD5 
 ASC 


 Source (tar.gz) 
 Download 
 MD5 
 ASC 


 Source (zip) 
 Download 
 MD5 
 ASC 







Maven Dependency

dependency
  groupIdorg.apache.tapestry/groupId
  artifactIdtapestry-core/artifactId
  version5.1.0.5/version
/dependency



Tapestry 4.x

Tapestry 4.1.6 was released on 07 Sep 2008 and is the final release of Tapestry 4. See the release notes for details.




 Tapestry 4.1.6 
 Mirrors 
 Checksum 
 Signature 


 Binary (tar.bz2) 
 Download 
 MD5 
 ASC 


 Binary (tar.gz) 
 Download 
 MD5 
 ASC 


 Binary (zip) 
 Download 
 MD5 
 ASC 


 Source/docs (tar.bz2) 
 Download 
 MD5 
 ASC 


 Source/docs (tar.gz) 
 Download 
 MD5 
 ASC 


 Source/docs (zip) 
 Download 
 MD5 
 ASC 





Archives

Looking for an older version of Tapestry? Try the archives.


Releases Under Development


Releases under development are less stable; alpha releases are often incomplete; beta releases occur in the lead up to creation of a stable release.

Tapestry 5.4 is under active development, there have been two alpha releases so far: 5.4 Alpha 1 and 5.4 Alpha 2.


Download sources


The source code can be checked out anonymously from Git with the clone command:



git clone https://git-wip-us.apache.org/repos/asf/tapestry-5.git



Versions 5.3.2 and earlier are also available via Subversion, at https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk/

Access from behind a firewall

Refer to the documentation of your Git client for more information about access behind a firewall. Generally this requires configuring access through a proxy (by specifying the proxy host and port) or opening up a port on the firewall.



Change Notification Preferences

View Online
|
View Changes









[CONF] Apache Tapestry Books

2013-01-12 Thread confluence







Books
Page edited by Bob Harner


Comment:
Updated publish date of Igor's "Tapestry 5" book; removed the canceled "Tapestry 5 in Action" (keeping it serves no purpose).


 Changes (6)
 




...
{column}{column} * *Covers:* Tapestry 5 (Version 5.3) 
* *Published:* Coming Soon (2012) 
* *Published:* 2012 
* *Author:* Igor Drobiazko * *Language:* English 
* *Pages:* 482 
* *More information:* http://www.tapestry5book.com/ {column}{section}  
Tapestry 5 - Rapid web application development in Java is a comprehensive guide, introducing Apache Tapestry and its innovative approach to building modern web applications. The book walks you through Tapestry 5, from a simple Hello World application to rich Ajax-enabled applications. Written by a core committer this book provides a deep insight into the architecture of Tapestry 5. It does not only shows you _how_ to achieve a certain goal specific goals but also teaches you the why. You learn how to build modern, scalable Web 2.0 application with a component-oriented approach. This book also shows how Tapestry brings scripting language productivity within reach of Java developers without sacrificing any of Javas inherent speed and power. 
 Table of Contents 
...
# Persisting domain objects # Integrating Spring framework 
# Dependency Injection and Tapestry IoC 
# Testing Tapestry applications 
# Tapestry IoC and Dependency Injection 
 
h3. Tapestry 5 in Action (CANCELED)  
...


Full Content


We think you will love Tapestry Give us 20 minutes and follow our tutorial.




Books on Tapestry

Tapestry 5 - Rapid web application development in Java




	Covers: Tapestry 5 (Version 5.3)
	Published: 2012
	Author: Igor Drobiazko
	Language: English
	Pages: 482
	More information: http://www.tapestry5book.com/



Tapestry 5 - Rapid web application development in Java is a comprehensive guide, introducing Apache Tapestry and its innovative approach to building modern web applications. The book walks you through Tapestry 5, from a simple Hello World application to rich Ajax-enabled applications. Written by a core committer this book provides deep insight into the architecture of Tapestry 5. It not only shows you how to achieve specific goals but also teaches you the "why". You learn how to build modern, scalable Web 2.0 application with a component-oriented approach. This book also shows how Tapestry brings scripting language productivity within reach of Java developers without sacrificing any of Java's inherent speed and power.

Table of Contents


	Introducing Tapestry
	Tapestry templates
	Page navigation
	Developing stateful applications
	Localization
	Creating Forms with Tapestry
	Converting and validating user input
	Generating UI for JavaBeans
	Developing reusable components
	Mixins
	Creating Ajax-enabled applications
	Persisting domain objects
	Integrating Spring framework
	Testing Tapestry applications
	Tapestry IoC and Dependency Injection



Tapestry 5 in Action (CANCELED)




	Covers: Tapestry 5 (Version 5.3)
	Published: Coming Soon (early 2012)
	Author: Igor Drobiazko
	Language: English



Tapestry 5: Die Entwicklung von Webanwendungen mit Leichtigkeit




	Covers: Tapestry 5 (Version 5.1.0.5)
	Published: 2009
	Author: Igor Drobiazko
	Language: German



This is the only Tapestry 5 book written in German. It is a definitive introduction to Tapestry 5 written by Igor Drobiazko, a committer of Tapestry. The book covers:

	Getting Started with Tapestry 5
	Concepts of the framework
	Localization/internationalization
	Creating Forms
	Generation of user interfaces for JavaBeans
	Writing own components and mixins
	Ajax
	Writing tests for Tapestry applications
	Hibernate and Spring integration
	Dependency Injection and Tapestry IoC
	AOP and bytecode manipuation



Tapestry 5: Building Web Applications




	Covers: Tapestry 5
	Published: 2008
	Author: Alexander Kolesnikov
	Language: English



Alexander follows up his long series of Tapestry 4 tutorials with the first book on Tapestry 5.

Tapestry Complete Reference




	Covers: Tapestry 4
	Published: 2007
	Author: A. Dong
	Language: Chinese



The first Chinese-language book to cover Tapestry (though Tapestry in Action has been translated). as a non-Chinese speaker, it's a bit hard to know what's between the covers, but looks like it gets into the nitty-gritty of Tapestry, Spring and Hibernate.

Tapestry 101




	Covers: Tapestry 4 (Spring/Hibernate/Hivemind/Tacos(ajax)
	Publisher: SourceBeat
	Published: 2006
	Authors: Warner Onstine



Tapestry is an open-source web application framework written in Java. 

[7/7] git commit: Rewrite URLs inside CSS files to be absolute (via AssetSource)

2013-01-12 Thread hlship
Updated Branches:
  refs/heads/master bebe2d141 - 108fb0092


Rewrite URLs inside CSS files to be absolute (via AssetSource)


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/108fb009
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/108fb009
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/108fb009

Branch: refs/heads/master
Commit: 108fb0092ff1e596e7510982d9bc2e2ed9372d51
Parents: 867d533
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Sat Jan 12 18:18:14 2013 -0800
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Sat Jan 12 18:18:14 2013 -0800

--
 .../internal/services/assets/CSSURLRewriter.java   |  172 +++
 .../tapestry5/services/assets/AssetsModule.java|   27 ++-
 .../services/assets/CSSURLRewriterTests.groovy |  114 ++
 3 files changed, 306 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/108fb009/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
new file mode 100644
index 000..573c24a
--- /dev/null
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
@@ -0,0 +1,172 @@
+// Copyright 2013 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.internal.services.assets;
+
+import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.ioc.IOOperation;
+import org.apache.tapestry5.ioc.OperationTracker;
+import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.services.AssetSource;
+import org.apache.tapestry5.services.assets.*;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Rewrites the {@code url()} attributes inside a CSS (MIME type text/css)) 
resource.
+ * Each {@code url} is expanded to a complete path; this allows for CSS 
aggregation, where the location of the
+ * CSS file will change (which would ordinarily break relative URLs), and for 
changing the relative directories of
+ * the CSS file and the image assets it may refer to (useful for incorporating 
a hash of the resource's content into
+ * the exposed URL).
+ *
+ * @since 5.4
+ */
+public class CSSURLRewriter extends DelegatingSRS
+{
+private final Pattern urlPattern = 
Pattern.compile(url\\(\\s*\(.*?)\\\s*\\), Pattern.MULTILINE);
+
+private final OperationTracker tracker;
+
+private final AssetSource assetSource;
+
+public CSSURLRewriter(StreamableResourceSource delegate, OperationTracker 
tracker, AssetSource assetSource)
+{
+super(delegate);
+this.tracker = tracker;
+this.assetSource = assetSource;
+}
+
+@Override
+public StreamableResource getStreamableResource(Resource baseResource, 
StreamableResourceProcessing processing, ResourceDependencies dependencies) 
throws IOException
+{
+StreamableResource base = delegate.getStreamableResource(baseResource, 
processing, dependencies);
+
+if (base.getContentType().equals(text/css))
+{
+return filter(base, baseResource);
+}
+
+return base;
+}
+
+private StreamableResource filter(final StreamableResource base, final 
Resource baseResource) throws IOException
+{
+return tracker.perform(Rewriting relative URLs in  + baseResource,
+new IOOperationStreamableResource()
+{
+public StreamableResource perform() throws IOException
+{
+String baseString = readAsString(base);
+
+String filtered = replaceURLs(baseString, 
baseResource);
+
+if (filtered == null)
+{
+// No URLs were replaced so no need to create a 
new StreamableResource
+return base;
+

[3/7] git commit: Minor documentation updates

2013-01-12 Thread hlship
Minor documentation updates


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/fe12ec8c
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/fe12ec8c
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/fe12ec8c

Branch: refs/heads/master
Commit: fe12ec8c0e53242d7f4c9103999724ec1b955f1a
Parents: bd0bd9e
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Fri Jan 11 14:10:28 2013 -0500
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Fri Jan 11 14:10:28 2013 -0500

--
 54_RELEASE_NOTES.txt |9 ++---
 1 files changed, 6 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fe12ec8c/54_RELEASE_NOTES.txt
--
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 5d0f13a..5bad19f 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
@@ -31,7 +31,7 @@ Tapestry 5.4 represents a shift to a more modern, lighter 
approach. Behavior of
 document object. This is an overall win: it reduces the number of event 
handlers, solves some timing issues related
 to running initialization functions, deals with DOM updates better, and is 
overall more performant.
 
-Tapestry is moving away from magic class names to a more uniform approach 
based on the use of HTML 5 compliant data-
+Tapestry is moving away from magic class names to a more uniform approach 
based on the use of HTML 5 compliant `data-`
 attributes.
 
 ## ControlGroup Mixin
@@ -60,12 +60,13 @@ slashes. The default in 5.3 was /assets/, in 5.4 it is 
simply assets.
 
 JavaScript Libraries (including stacks) are being replaced with modules. Note 
that libraries are now loaded with
 RequireJS, which may mean that global values exported by the libraries are not 
visible; you should explicitly attach
-properties to the global JavaScript window object, rather than assume that the 
context (this) is the window.
+properties to the global JavaScript window object, rather than assume that the 
context (the value of `this`) is the window.
 
 ## T5 and Tapestry namespaces all but eliminated
 
 Only a limited number of properties exported in the `T5` and `Tapestry` 
namespaces (on the client) still exist; enough
 to continue to support the `T5.initializers` approach to page initialization 
that was used in Tapestry 5.3 and earlier.
+These will be eliminated in Tapestry 5.5.
 
 ## New method on ResourceTransformer
 
@@ -128,6 +129,8 @@ help blocks that appear (by default) beneath the fields. To 
get the full effect,
 .control-group elements, as described in the Bootstrap documentation:
 http://twitter.github.com/bootstrap/base-css.html#forms
 
+You may also use the new ControlGroup mixin for most fields.
+
 ## BeanEditor / BeanEditForm
 
 The property edit blocks contributed to the BeanBlockSource service should 
expect to be nested inside a
@@ -160,7 +163,7 @@ tokens, so this behavior has been removed.
 ## RenderNotification Mixin
 
 The timing of this mixin has changed, it now has the @MixinAfter annotation, 
so it triggers its events *after*
-the component to which it attaches has executed its @BeginRender phase, and 
*before* the component executes
+the component to which it is attached has executed its @BeginRender phase, and 
*before* the component executes
 its @AfterRender phase.
 
 ## LocalizationSetter service



[4/7] git commit: Minor typo

2013-01-12 Thread hlship
Minor typo


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/b751d6cf
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/b751d6cf
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/b751d6cf

Branch: refs/heads/master
Commit: b751d6cf1dde6461ac8443577b4e77e569b5e18c
Parents: fe12ec8
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Fri Jan 11 17:02:53 2013 -0500
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Fri Jan 11 17:02:53 2013 -0500

--
 .../services/assets/StreamableResource.java|4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b751d6cf/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
index c53aa09..810e6d3 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
@@ -1,4 +1,4 @@
-// Copyright 2011 The Apache Software Foundation
+// Copyright 2011, 2013 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the License);
 // you may not use this file except in compliance with the License.
@@ -65,7 +65,7 @@ public interface StreamableResource
 
 /**
  * Returns the time the resource was last modified, with accuracy to one 
second (so as to match
- * the HTTP request/response date headers.
+ * the HTTP request/response date headers).
  */
 long getLastModified();
 }



[2/7] git commit: Add a ControlGroup mixin for Field components

2013-01-12 Thread hlship
Add a ControlGroup mixin for Field components

Adds the outer divs and label for a field to work well with Twitter Bootstrap


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/bd0bd9e7
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/bd0bd9e7
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/bd0bd9e7

Branch: refs/heads/master
Commit: bd0bd9e7fde92863944307aac43cadb1624eca61
Parents: 2a55572
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Fri Jan 11 13:54:20 2013 -0500
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Fri Jan 11 13:56:11 2013 -0500

--
 54_RELEASE_NOTES.txt   |5 +
 .../tapestry5/corelib/mixins/ControlGroup.java |   64 +++
 tapestry-core/src/test/app1/AutocompleteDemo.tml   |9 +--
 tapestry-core/src/test/app1/SelectZoneDemo.tml |   18 +---
 .../tapestry5/integration/app1/MiscTests.groovy|9 ++
 5 files changed, 84 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bd0bd9e7/54_RELEASE_NOTES.txt
--
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 099155e..5d0f13a 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
@@ -34,6 +34,11 @@ to running initialization functions, deals with DOM updates 
better, and is overa
 Tapestry is moving away from magic class names to a more uniform approach 
based on the use of HTML 5 compliant data-
 attributes.
 
+## ControlGroup Mixin
+
+This new mixin for Field components adds the outer div and label elements 
for a Field to layout correctly
+inside a Twitter Bootstrap form.
+
 # Breaking Changes:
 
 ## RenderSupport Removed

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bd0bd9e7/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/ControlGroup.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/ControlGroup.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/ControlGroup.java
new file mode 100644
index 000..e0f8296
--- /dev/null
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/ControlGroup.java
@@ -0,0 +1,64 @@
+// Copyright (c) 2013. The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.corelib.mixins;
+
+import org.apache.tapestry5.Field;
+import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.annotations.HeartbeatDeferred;
+import org.apache.tapestry5.annotations.InjectContainer;
+import org.apache.tapestry5.dom.Element;
+
+/**
+ * Applied to a {@link org.apache.tapestry5.Field}, this provides the outer 
layers of Bootstrap:
+ * an outer {@code div class=control-group}, a {@code label 
class=control-label}, and a
+ * {@code div class=controls} around the field itself. This control is not 
appropriate
+ * for radio buttons or check boxes, as those want to have the label element 
directly around the control.
+ * As with the {@link org.apache.tapestry5.corelib.components.Label} 
component, the {@code for} attribute is set (after the field itself
+ * renders).
+ *
+ * @tapestrydoc
+ * @since 5.4
+ */
+public class ControlGroup
+{
+
+@InjectContainer
+private Field field;
+
+private Element label;
+
+void beginRender(MarkupWriter writer)
+{
+writer.element(div, class, control-group);
+label = writer.element(label, class, control-label);
+writer.end();
+writer.element(div, class, controls);
+
+fillInLabelAttributes();
+}
+
+@HeartbeatDeferred
+void fillInLabelAttributes()
+{
+label.attribute(for, field.getClientId());
+label.text(field.getLabel());
+}
+
+void afterRender(MarkupWriter writer)
+{
+writer.end(); // div.controls
+writer.end(); // div.control-group
+}
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/bd0bd9e7/tapestry-core/src/test/app1/AutocompleteDemo.tml
--
diff --git a/tapestry-core/src/test/app1/AutocompleteDemo.tml 

[1/7] git commit: TAP5-2051: Remove unecessary references to PlasticClass objects

2013-01-12 Thread hlship
TAP5-2051: Remove unecessary references to PlasticClass objects

Replace anonymous inline inner classes with static inner classes to eliminate 
hidden references to PlasticClass and other transformation-time objects


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/2a55572f
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/2a55572f
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/2a55572f

Branch: refs/heads/master
Commit: 2a55572fb335670043292fbe38f9c802b98de49c
Parents: bebe2d1
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Fri Jan 11 13:08:07 2013 -0500
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Fri Jan 11 13:08:07 2013 -0500

--
 .../services/ComponentInstantiatorSourceImpl.java  |   71 +--
 .../services/PropertyConduitSourceImpl.java|   10 +--
 2 files changed, 45 insertions(+), 36 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/2a55572f/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
index a7be1a9..8046b9c 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2010, 2011, 2012 The Apache Software Foundation
+// Copyright 2006-2013 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the License);
 // you may not use this file except in compliance with the License.
@@ -413,42 +413,57 @@ public final class ComponentInstantiatorSourceImpl 
implements ComponentInstantia
 
 model.addEventHandler(eventType);
 
-MethodAdvice advice = new MethodAdvice()
-{
-public void advise(MethodInvocation invocation)
-{
-final ComponentEvent event = (ComponentEvent) 
invocation.getParameter(0);
+MethodAdvice advice = new EventMethodAdvice(tracker, eventType, 
minContextValues, operationDescription, handler);
 
-boolean matches = !event.isAborted()  
event.matches(eventType, , minContextValues);
-
-if (matches)
-{
-final Component instance = (Component) 
invocation.getInstance();
+
plasticClass.introduceMethod(TransformConstants.DISPATCH_COMPONENT_EVENT_DESCRIPTION).addAdvice(advice);
+}
+}
 
-tracker.invoke(operationDescription, new 
InvokableObject()
-{
-public Object invoke()
-{
-handler.handleEvent(instance, event);
+private static class EventMethodAdvice implements MethodAdvice
+{
+final OperationTracker tracker;
+final String eventType;
+final int minContextValues;
+final String operationDescription;
+final ComponentEventHandler handler;
 
-return null;
-}
-});
-}
+public EventMethodAdvice(OperationTracker tracker, String eventType, 
int minContextValues, String operationDescription, ComponentEventHandler 
handler)
+{
+this.tracker = tracker;
+this.eventType = eventType;
+this.minContextValues = minContextValues;
+this.operationDescription = operationDescription;
+this.handler = handler;
+}
 
-// Order of operations is key here. This logic takes 
precedence; base class event dispatch and event handler methods
-// in the class come AFTER.
+public void advise(final MethodInvocation invocation)
+{
+final ComponentEvent event = (ComponentEvent) 
invocation.getParameter(0);
 
-invocation.proceed();
+boolean matches = !event.isAborted()  event.matches(eventType, 
, minContextValues);
 
-if (matches)
+if (matches)
+{
+tracker.run(operationDescription, new Runnable()
+{
+public void run()
 {
-invocation.setReturnValue(true);
+Component instance = (Component) 
invocation.getInstance();
+
+

[6/7] git commit: Improve documentation

2013-01-12 Thread hlship
Improve documentation


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/867d5330
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/867d5330
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/867d5330

Branch: refs/heads/master
Commit: 867d533006af48a81c71a5f28cdc2ce88f62f816
Parents: d8dba80
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Fri Jan 11 19:41:30 2013 -0500
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Fri Jan 11 19:41:30 2013 -0500

--
 .../services/javascript/JavaScriptStack.java   |   15 +--
 1 files changed, 9 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/867d5330/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
index da60b28..5a3b7d4 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
@@ -1,4 +1,4 @@
-// Copyright 2010, 2012 The Apache Software Foundation
+// Copyright 2010, 2012, 2013 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the License);
 // you may not use this file except in compliance with the License.
@@ -23,14 +23,17 @@ import java.util.List;
 
 /**
  * A high level description of a group of related JavaScript libraries and 
stylesheets. The built-in core
- * stack is used to define the core JavaScript libraries needed by Tapestry 
(currently, this includes
- * Prototype and Scriptaculous, as well as Tapestry-specific libraries). Other 
component libraries may
+ * stack is used to define the core JavaScript libraries needed by Tapestry 
(though this has been largely replaced by
+ * JavaScript modules in Tapestry 5.4,
+ * and the may be no libraries in the core stack by Tapestry 5.5). Other 
component libraries may
  * define additional stacks for related sets of resources, for example, to 
bundle together some portion
  * of the ExtJS or YUI libraries.
  * p/
- * A JavaScript assets of a stack may (when {@linkplain 
SymbolConstants#COMBINE_SCRIPTS enabled}) be exposed to the
- * client as a single URL (identifying the stack by name). The individual 
assets are combined into a single virtual
- * asset, which is then streamed to the client.
+ * The JavaScript assets of a stack may (when {@linkplain 
SymbolConstants#COMBINE_SCRIPTS enabled}) be exposed to the
+ * client as a single URL (identifying the stack by name). The individual 
JavaScript  assets are combined into a single virtual
+ * asset, which is then streamed to the client. The individual JavaScript 
libraries, or the combined virtual library,
+ * may be {@linkplain SymbolConstants#MINIFICATION_ENABLED minimized} and the 
content (both compressed and
+ * uncompressed) cached.
  * p/
  * Implementations may need to inject the {@link ThreadLocale} service in 
order to determine the current locale (if any
  * of the JavaScript library or stylesheet assets are localized). They will 
generally need to inject the



[5/7] git commit: Add IOOperation and OperationTracker.perform() Streamline the code inside OperationTrackerImpl

2013-01-12 Thread hlship
Add IOOperation and OperationTracker.perform()
Streamline the code inside OperationTrackerImpl


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/d8dba804
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/d8dba804
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/d8dba804

Branch: refs/heads/master
Commit: d8dba804700d7a23d9e596816dd1a26cdf6b7025
Parents: b751d6c
Author: Howard M. Lewis Ship hls...@apache.org
Authored: Fri Jan 11 18:46:41 2013 -0500
Committer: Howard M. Lewis Ship hls...@apache.org
Committed: Fri Jan 11 18:46:41 2013 -0500

--
 54_RELEASE_NOTES.txt   |6 +-
 .../org/apache/tapestry5/internal/IOOperation.java |   34 
 .../tapestry5/internal/TapestryInternalUtils.java  |   28 +---
 .../internal/services/RequestOperationTracker.java |   28 +--
 .../internal/services/ResourceStreamerImpl.java|   11 +-
 .../services/assets/StackAssetRequestHandler.java  |   13 +-
 .../javascript/ModuleAssetRequestHandler.java  |   17 +-
 .../ComponentPageElementResourcesImpl.java |   24 ++-
 .../java/org/apache/tapestry5/ioc/IOOperation.java |   29 
 .../java/org/apache/tapestry5/ioc/Invokable.java   |5 +-
 .../org/apache/tapestry5/ioc/OperationTracker.java |   33 +++-
 .../ioc/internal/OperationTrackerImpl.java |  131 +++
 .../ioc/internal/PerThreadOperationTracker.java|   16 ++-
 .../ioc/internal/QuietOperationTracker.java|   11 +-
 .../tapestry5/ioc/internal/RegistryImpl.java   |8 +-
 .../internal/yuicompressor/AbstractMinimizer.java  |   10 +-
 16 files changed, 240 insertions(+), 164 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d8dba804/54_RELEASE_NOTES.txt
--
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 5bad19f..c58608b 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
@@ -169,4 +169,8 @@ its @AfterRender phase.
 ## LocalizationSetter service
 
 The method setNonPeristentLocaleFromLocaleName() was renamed to 
setNonPersistentLocaleFromLocaleName() to correct
-the typo (the missing 's').
\ No newline at end of file
+the typo (the missing 's').
+
+## OperationTracker Extended
+
+The OperationTracker interface has had a new method added, for performing an 
IO Operation (that may throw IOException).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d8dba804/tapestry-core/src/main/java/org/apache/tapestry5/internal/IOOperation.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/IOOperation.java 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/IOOperation.java
deleted file mode 100644
index f9fae2e..000
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/IOOperation.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import java.io.IOException;
-
-/**
- * This interface is similar to {@link Runnable}, except that
- * the operation may throw an {@link IOException}.
- * 
- * @since 5.3
- * @see 
TapestryInternalUtils#performIO(org.apache.tapestry5.ioc.OperationTracker, 
String, IOOperation)
- */
-public interface IOOperation
-{
-/**
- * Perform some work.
- * 
- * @throws IOException
- */
-void perform() throws IOException;
-}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d8dba804/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
--
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
index f1aa65f..de17ee7 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
+// Copyright 

[jira] [Closed] (TAP5-2051) Fix Plastic objects memory leaks

2013-01-12 Thread Howard M. Lewis Ship (JIRA)

 [ 
https://issues.apache.org/jira/browse/TAP5-2051?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Howard M. Lewis Ship closed TAP5-2051.
--

   Resolution: Fixed
Fix Version/s: 5.4

 Fix Plastic objects memory leaks
 

 Key: TAP5-2051
 URL: https://issues.apache.org/jira/browse/TAP5-2051
 Project: Tapestry 5
  Issue Type: Improvement
  Components: tapestry-core
Affects Versions: 5.3.6
Reporter: Denis Stepanov
Assignee: Howard M. Lewis Ship
 Fix For: 5.4

 Attachments: 0001-Fix-Plastic-objects-memory-leaks.patch


 Memory leaks caused by anonymous inner class' strong reference to the parent

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (TAP5-2049) Tapestry should provide locking semantics for attributes stored in the session, to prevent multiple simultaneous requests (due to Ajax) from conflicting

2013-01-12 Thread Howard M. Lewis Ship (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13552121#comment-13552121
 ] 

Howard M. Lewis Ship commented on TAP5-2049:


Please take the discussion to the Tapestry developer mailing list.

 Tapestry should provide locking semantics for attributes stored in the 
 session, to prevent multiple simultaneous requests (due to Ajax) from 
 conflicting
 

 Key: TAP5-2049
 URL: https://issues.apache.org/jira/browse/TAP5-2049
 Project: Tapestry 5
  Issue Type: Bug
  Components: tapestry-core
Affects Versions: 5.4
Reporter: Howard M. Lewis Ship
Assignee: Howard M. Lewis Ship
  Labels: session, thread-safety
 Fix For: 5.4


 Currently, multiple threads may be processing requests, due to Ajax.  If they 
 all access state stored in the HttpSession, the rsult can be invalid.
 Tapestry should maintain a lock object inside the session, and automatically 
 acquire a read lock the first time a request thread reads values from the 
 session, and upgrade to a write lock when writing values to the session.
 The lock can be released at the end of the request.
 A reentrant read/write lock may be insufficient, as values inside the session 
 are mutable; it is possible that the lock should be exclusive.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (TAP5-2051) Fix Plastic objects memory leaks

2013-01-12 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/TAP5-2051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13552125#comment-13552125
 ] 

Hudson commented on TAP5-2051:
--

Integrated in tapestry-trunk-freestyle #1002 (See 
[https://builds.apache.org/job/tapestry-trunk-freestyle/1002/])
TAP5-2051: Remove unecessary references to PlasticClass objects (Revision 
2a55572fb335670043292fbe38f9c802b98de49c)

 Result = SUCCESS
hlship : 
Files : 
* 
tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
* 
tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java


 Fix Plastic objects memory leaks
 

 Key: TAP5-2051
 URL: https://issues.apache.org/jira/browse/TAP5-2051
 Project: Tapestry 5
  Issue Type: Improvement
  Components: tapestry-core
Affects Versions: 5.3.6
Reporter: Denis Stepanov
Assignee: Howard M. Lewis Ship
 Fix For: 5.4

 Attachments: 0001-Fix-Plastic-objects-memory-leaks.patch


 Memory leaks caused by anonymous inner class' strong reference to the parent

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira