[CONF] Apache Tapestry Building Tapestry from Source
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
[ 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
[ 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
[ 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
[ 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
[ 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
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
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)
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
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
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
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
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
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
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
[ 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
[ 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
[ 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