<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.jakarta.tapestry.devel">
    <title>gmane.comp.jakarta.tapestry.devel</title>
    <link>http://blog.gmane.org/gmane.comp.jakarta.tapestry.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53826"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53825"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53824"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53823"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53822"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53821"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53820"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53819"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53818"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53817"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53816"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53815"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53814"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53813"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53812"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53811"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53810"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53809"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53808"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53807"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53826">
    <title>[jira] [Commented] (TAP5-2019) AssetPathConverter is not called for javascript stacks</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53826</link>
    <description>&lt;pre&gt;
    [ https://issues.apache.org/jira/browse/TAP5-2019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;amp;focusedCommentId=13665461#comment-13665461 ] 

Magnus Kvalheim commented on TAP5-2019:
---------------------------------------

Found a workaround as discussed in the thread - http://apache-tapestry-mailing-list-archives.1045711.n5.nabble.com/Why-is-AssetPathConverter-not-called-for-javascript-stacks-td5716629.html
Will post back here for reference.

Decorator:

public static JavaScriptStackPathConstructor decorateJavaScriptStackPathConstructor(
final JavaScriptStackPathConstructor delegate,
&amp;lt; at &amp;gt;Local final AssetPathConverter assetPathConverter) {

return new JavaScriptStackPathConstructor() {

public List&amp;lt;String&amp;gt; constructPathsForJavaScriptStack(String stackName) {

List&amp;lt;String&amp;gt; paths = delegate.constructPathsForJavaScriptStack(stackName);

if (Validator.isNullOrEmpty(paths)) return paths;

List&amp;lt;String&amp;gt; newList = new ArrayList&amp;lt;&amp;gt;(paths.size());
for (String path : paths) {
newList.add(assetPathConverter.convertAssetPath(path));
}
return newList;
}
};
}
                

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

&lt;/pre&gt;</description>
    <dc:creator>Magnus Kvalheim (JIRA</dc:creator>
    <dc:date>2013-05-23T18:31:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53825">
    <title>Build failed in Jenkins: tapestry-trunk-freestyle #1063</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53825</link>
    <description>&lt;pre&gt;See &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/1063/changes&amp;gt;

Changes:

[hlship] Simplify how ResourcePreProcessors are contributed

[hlship] Include thread name in log output

------------------------------------------
[...truncated 305 lines...]
:tapestry-javadoc:check UP-TO-DATE
:tapestry-javadoc:build UP-TO-DATE
:tapestry-javadoc:sourcesJar UP-TO-DATE
:tapestry-javadoc:uploadPublishedUploading: org/apache/tapestry/tapestry-javadoc/5.4-SNAPSHOT/tapestry-javadoc-5.4-20130523.173131-69.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 22K from remote
Uploaded 22K
Uploading: org/apache/tapestry/tapestry-javadoc/5.4-SNAPSHOT/tapestry-javadoc-5.4-20130523.173131-69-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 14K from remote
Uploaded 14K

:tapestry-jmx:compileJava UP-TO-DATE
:tapestry-jmx:compileGroovy UP-TO-DATE
:tapestry-jmx:processResources UP-TO-DATE
:tapestry-jmx:classes UP-TO-DATE
:tapestry-jmx:jar UP-TO-DATE
:tapestry-jmx:assemble UP-TO-DATE
:tapestry-jmx:compileTestJava UP-TO-DATE
:tapestry-jmx:compileTestGroovy UP-TO-DATE
:tapestry-jmx:processTestResources UP-TO-DATE
:tapestry-jmx:testClasses UP-TO-DATE
:tapestry-jmx:test UP-TO-DATE
:tapestry-jmx:check UP-TO-DATE
:tapestry-jmx:build UP-TO-DATE
:tapestry-jmx:sourcesJar UP-TO-DATE
:tapestry-jmx:uploadPublishedUploading: org/apache/tapestry/tapestry-jmx/5.4-SNAPSHOT/tapestry-jmx-5.4-20130523.173141-69.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 9K from remote
Uploaded 9K
Uploading: org/apache/tapestry/tapestry-jmx/5.4-SNAPSHOT/tapestry-jmx-5.4-20130523.173141-69-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 9K from remote
Uploaded 9K

:tapestry-jpa:compileJava UP-TO-DATE
:tapestry-jpa:compileGroovy UP-TO-DATE
:tapestry-jpa:processResources UP-TO-DATE
:tapestry-jpa:classes UP-TO-DATE
:tapestry-jpa:jar UP-TO-DATE
:tapestry-jpa:assemble UP-TO-DATE
:tapestry-jpa:compileTestJava UP-TO-DATE
:tapestry-jpa:compileTestGroovy UP-TO-DATE
:tapestry-jpa:processTestResources UP-TO-DATE
:tapestry-jpa:testClasses UP-TO-DATE
:tapestry-jpa:test UP-TO-DATE
:tapestry-jpa:check UP-TO-DATE
:tapestry-jpa:build UP-TO-DATE
:tapestry-jpa:sourcesJar UP-TO-DATE
:tapestry-jpa:uploadPublishedUploading: org/apache/tapestry/tapestry-jpa/5.4-SNAPSHOT/tapestry-jpa-5.4-20130523.173151-63.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 49K from remote
Uploaded 49K
Uploading: org/apache/tapestry/tapestry-jpa/5.4-SNAPSHOT/tapestry-jpa-5.4-20130523.173151-63-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 41K from remote
Uploaded 41K

:tapestry-json:assemble UP-TO-DATE
:tapestry-json:compileTestJava UP-TO-DATE
:tapestry-json:compileTestGroovy UP-TO-DATE
:tapestry-json:processTestResources UP-TO-DATE
:tapestry-json:testClasses UP-TO-DATE
:tapestry-json:test UP-TO-DATE
:tapestry-json:check UP-TO-DATE
:tapestry-json:build UP-TO-DATE
:tapestry-json:sourcesJar UP-TO-DATE
:tapestry-json:uploadPublishedUploading: org/apache/tapestry/tapestry-json/5.4-SNAPSHOT/tapestry-json-5.4-20130523.173201-63.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-json/5.4-SNAPSHOT/tapestry-json-5.4-20130523.173201-63-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 31K from remote
Uploaded 31K

:tapestry-kaptcha:compileJava UP-TO-DATE
:tapestry-kaptcha:compileGroovy UP-TO-DATE
:tapestry-kaptcha:processResources UP-TO-DATE
:tapestry-kaptcha:classes UP-TO-DATE
:tapestry-kaptcha:jar UP-TO-DATE
:tapestry-kaptcha:assemble UP-TO-DATE
:tapestry-kaptcha:compileTestJava UP-TO-DATE
:tapestry-kaptcha:compileTestGroovy UP-TO-DATE
:tapestry-kaptcha:processTestResources UP-TO-DATE
:tapestry-kaptcha:testClasses UP-TO-DATE
:tapestry-kaptcha:test UP-TO-DATE
:tapestry-kaptcha:check UP-TO-DATE
:tapestry-kaptcha:build UP-TO-DATE
:tapestry-kaptcha:sourcesJar UP-TO-DATE
:tapestry-kaptcha:uploadPublishedUploading: org/apache/tapestry/tapestry-kaptcha/5.4-SNAPSHOT/tapestry-kaptcha-5.4-20130523.173211-63.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 22K from remote
Uploaded 22K
Uploading: org/apache/tapestry/tapestry-kaptcha/5.4-SNAPSHOT/tapestry-kaptcha-5.4-20130523.173211-63-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 26K from remote
Uploaded 26K

:tapestry-mongodb:compileJava UP-TO-DATE
:tapestry-mongodb:compileGroovy UP-TO-DATE
:tapestry-mongodb:processResources UP-TO-DATE
:tapestry-mongodb:classes UP-TO-DATE
:tapestry-mongodb:jar UP-TO-DATE
:tapestry-mongodb:assemble UP-TO-DATE
:tapestry-mongodb:compileTestJava UP-TO-DATE
:tapestry-mongodb:compileTestGroovy UP-TO-DATE
:tapestry-mongodb:processTestResources UP-TO-DATE
:tapestry-mongodb:testClasses UP-TO-DATE
:tapestry-mongodb:test UP-TO-DATE
:tapestry-mongodb:check UP-TO-DATE
:tapestry-mongodb:build UP-TO-DATE
:tapestry-mongodb:sourcesJar UP-TO-DATE
:tapestry-mongodb:uploadPublishedUploading: org/apache/tapestry/tapestry-mongodb/5.4-SNAPSHOT/tapestry-mongodb-5.4-20130523.173220-27.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 12K from remote
Uploaded 12K
Uploading: org/apache/tapestry/tapestry-mongodb/5.4-SNAPSHOT/tapestry-mongodb-5.4-20130523.173220-27-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 10K from remote
Uploaded 10K

:tapestry-spring:compileJava UP-TO-DATE
:tapestry-spring:compileGroovy UP-TO-DATE
:tapestry-spring:processResources UP-TO-DATE
:tapestry-spring:classes UP-TO-DATE
:tapestry-spring:jar UP-TO-DATE
:tapestry-spring:assemble UP-TO-DATE
:tapestry-spring:compileTestJava UP-TO-DATE
:tapestry-spring:compileTestGroovy UP-TO-DATE
:tapestry-spring:processTestResources UP-TO-DATE
:tapestry-spring:testClasses UP-TO-DATE
:tapestry-spring:test UP-TO-DATE
:tapestry-spring:check UP-TO-DATE
:tapestry-spring:build UP-TO-DATE
:tapestry-spring:sourcesJar UP-TO-DATE
:tapestry-spring:uploadPublishedUploading: org/apache/tapestry/tapestry-spring/5.4-SNAPSHOT/tapestry-spring-5.4-20130523.173230-58.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 30K from remote
Uploaded 30K
Uploading: org/apache/tapestry/tapestry-spring/5.4-SNAPSHOT/tapestry-spring-5.4-20130523.173230-58-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 20K from remote
Uploaded 20K

:tapestry-test:assemble UP-TO-DATE
:tapestry-test:compileTestJava UP-TO-DATE
:tapestry-test:compileTestGroovy UP-TO-DATE
:tapestry-test:processTestResources UP-TO-DATE
:tapestry-test:testClasses UP-TO-DATE
:tapestry-test:test UP-TO-DATE
:tapestry-test:check UP-TO-DATE
:tapestry-test:build UP-TO-DATE
:tapestry-test:sourcesJar UP-TO-DATE
:tapestry-test:uploadPublishedUploading: org/apache/tapestry/tapestry-test/5.4-SNAPSHOT/tapestry-test-5.4-20130523.173240-58.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 455K from remote
Uploaded 455K
Uploading: org/apache/tapestry/tapestry-test/5.4-SNAPSHOT/tapestry-test-5.4-20130523.173240-58-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 32K from remote
Uploaded 32K

:tapestry-test-data:assemble UP-TO-DATE
:tapestry-test-data:compileTestJava UP-TO-DATE
:tapestry-test-data:compileTestGroovy UP-TO-DATE
:tapestry-test-data:processTestResources UP-TO-DATE
:tapestry-test-data:testClasses UP-TO-DATE
:tapestry-test-data:test UP-TO-DATE
:tapestry-test-data:check UP-TO-DATE
:tapestry-test-data:build UP-TO-DATE
:tapestry-test-data:sourcesJar UP-TO-DATE
:tapestry-test-data:uploadPublishedUploading: org/apache/tapestry/tapestry-test-data/5.4-SNAPSHOT/tapestry-test-data-5.4-20130523.173250-13.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 419K from remote
Uploaded 419K
Uploading: org/apache/tapestry/tapestry-test-data/5.4-SNAPSHOT/tapestry-test-data-5.4-20130523.173250-13-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 419K from remote
Uploaded 419K

:tapestry-upload:compileJava UP-TO-DATE
:tapestry-upload:compileGroovy UP-TO-DATE
:tapestry-upload:processResources UP-TO-DATE
:tapestry-upload:classes UP-TO-DATE
:tapestry-upload:jar UP-TO-DATE
:tapestry-upload:assemble UP-TO-DATE
:tapestry-upload:compileTestJava UP-TO-DATE
:tapestry-upload:compileTestGroovy UP-TO-DATE
:tapestry-upload:processTestResources UP-TO-DATE
:tapestry-upload:testClasses UP-TO-DATE
:tapestry-upload:test UP-TO-DATE
:tapestry-upload:check UP-TO-DATE
:tapestry-upload:build UP-TO-DATE
:tapestry-upload:sourcesJar UP-TO-DATE
:tapestry-upload:uploadPublishedUploading: org/apache/tapestry/tapestry-upload/5.4-SNAPSHOT/tapestry-upload-5.4-20130523.173303-58.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-upload/5.4-SNAPSHOT/tapestry-upload-5.4-20130523.173303-58-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 26K from remote
Uploaded 26K

:tapestry-wro4j:compileJava
:tapestry-wro4j:compileGroovy UP-TO-DATE
:tapestry-wro4j:processResources UP-TO-DATE
:tapestry-wro4j:classes
:tapestry-wro4j:jar
:tapestry-wro4j:assemble
:tapestry-wro4j:compileTestJava
:tapestry-wro4j:compileTestGroovy
:tapestry-wro4j:processTestResources
:tapestry-wro4j:testClasses
:tapestry-wro4j:test
:tapestry-wro4j:check
:tapestry-wro4j:build
:tapestry-wro4j:sourcesJar
:tapestry-wro4j:uploadPublishedUploading: org/apache/tapestry/tapestry-wro4j/5.4-SNAPSHOT/tapestry-wro4j-5.4-20130523.173315-7.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-wro4j/5.4-SNAPSHOT/tapestry-wro4j-5.4-20130523.173315-7-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 20K from remote
Uploaded 20K

:tapestry5-annotations:assemble UP-TO-DATE
:tapestry5-annotations:compileTestJava UP-TO-DATE
:tapestry5-annotations:compileTestGroovy UP-TO-DATE
:tapestry5-annotations:processTestResources UP-TO-DATE
:tapestry5-annotations:testClasses UP-TO-DATE
:tapestry5-annotations:test UP-TO-DATE
:tapestry5-annotations:check UP-TO-DATE
:tapestry5-annotations:build UP-TO-DATE
:tapestry5-annotations:sourcesJar UP-TO-DATE
:tapestry5-annotations:uploadPublishedUploading: org/apache/tapestry/tapestry5-annotations/5.4-SNAPSHOT/tapestry5-annotations-5.4-20130523.173326-57.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 15K from remote
Uploaded 15K
Uploading: org/apache/tapestry/tapestry5-annotations/5.4-SNAPSHOT/tapestry5-annotations-5.4-20130523.173326-57-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 24K from remote
Uploaded 24K

:continuousIntegration

BUILD SUCCESSFUL

Total time: 4 mins 52.113 secs
[tapestry-trunk-freestyle] $ /bin/bash -xe /tmp/hudson1379041464006371070.sh
+ pkill Xvfb
Recording test results
Test reports were found but none of them are new. Did tests run? 
For example, &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/ws/plastic/build/test-results/TEST-org.apache.tapestry5.internal.plastic.ClassInstantiatorTests.xml&amp;gt; is 2 mo 24 days old

Build step 'Publish JUnit test result report' changed build result to FAILURE
TestNG Reports Processing: START
Looking for TestNG results report in workspace using pattern: **/build/reports/tests/testng-results.xml
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
Saving reports...
Found matching files but did not find any TestNG results.
&lt;/pre&gt;</description>
    <dc:creator>Apache Jenkins Server</dc:creator>
    <dc:date>2013-05-23T17:36:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53824">
    <title>[jira] [Updated] (TAP5-2113) Encounter Exception in Tomcat</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53824</link>
    <description>&lt;pre&gt;
     [ https://issues.apache.org/jira/browse/TAP5-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ed Yu updated TAP5-2113:
------------------------

    Description: 
Encounter Exception in 5.3.7 and in 5.3.6:

.
.
.
[ERROR] AssetsModule.ResourceMinimizer JavaScript compression problems for resource classpath:edu/utah/egi/peds/mixins/confirm.js:
[ERROR] AssetsModule.ResourceMinimizer String index out of range: 286
java.lang.StringIndexOutOfBoundsException: String index out of range: 286
at java.lang.String.substring(Unknown Source)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.&amp;lt;init&amp;gt;(JavaScriptCompressor.java:533)
at org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:150)
at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:67)
at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1119)
at org.apache.tapestry5.internal.TapestryInternalUtils.performIO(TapestryInternalUtils.java:576)
at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer.minimize(AbstractMinimizer.java:61)
at org.apache.tapestry5.internal.services.assets.MasterResourceMinimizer.minimize(MasterResourceMinimizer.java:44)
at $ResourceMinimizer_620a1f3254af4.minimize(Unknown Source)
at org.apache.tapestry5.internal.services.assets.SRSMinimizingInterceptor.getStreamableResource(SRSMinimizingInterceptor.java:44)
at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:56)
at org.apache.tapestry5.internal.services.assets.SRSCompressingInterceptor.getStreamableResource(SRSCompressingInterceptor.java:40)
at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:56)
at $StreamableResourceSource_620a1f3254af2.getStreamableResource(Unknown Source)
at org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:93)
at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1119)
at org.apache.tapestry5.internal.TapestryInternalUtils.performIO(TapestryInternalUtils.java:576)
at org.apache.tapestry5.internal.services.ResourceStreamerImpl.streamResource(ResourceStreamerImpl.java:86)
at $ResourceStreamer_620a1f3254af0.streamResource(Unknown Source)
at org.apache.tapestry5.internal.services.assets.ClasspathAssetRequestHandler.handleAssetRequest(ClasspathAssetRequestHandler.java:58)
at org.apache.tapestry5.internal.services.AssetDispatcher.dispatch(AssetDispatcher.java:114)
at $Dispatcher_620a1f3254ae9.dispatch(Unknown Source)
at $Dispatcher_620a1f3254aed.dispatch(Unknown Source)
at $Dispatcher_620a1f3254ae7.dispatch(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
at edu.utah.egi.peds.services.AppModule$1.service(AppModule.java:98)
at $RequestFilter_620a1f3254ae6.service(Unknown Source)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at $RequestHandler_620a1f3254adc.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
at $HttpServletRequestHandler_620a1f3254ade.service(Unknown Source)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_620a1f3254ada.service(Unknown Source)
at $HttpServletRequestHandler_620a1f3254ade.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
at $HttpServletRequestHandler_620a1f3254ade.service(Unknown Source)
at $HttpServletRequestHandler_620a1f3254ad9.service(Unknown Source)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[INFO] AssetsModule.ResourceMinimizer Minimized classpath:edu/utah/egi/peds/mixins/confirm.js (625 input bytes of JavaScript to 625 output bytes in 352.42 ms, 0.00% reduction)
.
.
.


  was:
Encounter Exception in 5.3.7 that is not in 5.3.6:

.
.
.
[ERROR] AssetsModule.ResourceMinimizer JavaScript compression problems for resource classpath:edu/utah/egi/peds/mixins/confirm.js:
[ERROR] AssetsModule.ResourceMinimizer String index out of range: 286
java.lang.StringIndexOutOfBoundsException: String index out of range: 286
at java.lang.String.substring(Unknown Source)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:267)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:330)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.&amp;lt;init&amp;gt;(JavaScriptCompressor.java:533)
at org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:150)
at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:67)
at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1119)
at org.apache.tapestry5.internal.TapestryInternalUtils.performIO(TapestryInternalUtils.java:576)
at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer.minimize(AbstractMinimizer.java:61)
at org.apache.tapestry5.internal.services.assets.MasterResourceMinimizer.minimize(MasterResourceMinimizer.java:44)
at $ResourceMinimizer_620a1f3254af4.minimize(Unknown Source)
at org.apache.tapestry5.internal.services.assets.SRSMinimizingInterceptor.getStreamableResource(SRSMinimizingInterceptor.java:44)
at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:56)
at org.apache.tapestry5.internal.services.assets.SRSCompressingInterceptor.getStreamableResource(SRSCompressingInterceptor.java:40)
at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:56)
at $StreamableResourceSource_620a1f3254af2.getStreamableResource(Unknown Source)
at org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:93)
at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1119)
at org.apache.tapestry5.internal.TapestryInternalUtils.performIO(TapestryInternalUtils.java:576)
at org.apache.tapestry5.internal.services.ResourceStreamerImpl.streamResource(ResourceStreamerImpl.java:86)
at $ResourceStreamer_620a1f3254af0.streamResource(Unknown Source)
at org.apache.tapestry5.internal.services.assets.ClasspathAssetRequestHandler.handleAssetRequest(ClasspathAssetRequestHandler.java:58)
at org.apache.tapestry5.internal.services.AssetDispatcher.dispatch(AssetDispatcher.java:114)
at $Dispatcher_620a1f3254ae9.dispatch(Unknown Source)
at $Dispatcher_620a1f3254aed.dispatch(Unknown Source)
at $Dispatcher_620a1f3254ae7.dispatch(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
at edu.utah.egi.peds.services.AppModule$1.service(AppModule.java:98)
at $RequestFilter_620a1f3254ae6.service(Unknown Source)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
at $RequestHandler_620a1f3254ae8.service(Unknown Source)
at $RequestHandler_620a1f3254adc.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
at $HttpServletRequestHandler_620a1f3254ade.service(Unknown Source)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_620a1f3254ada.service(Unknown Source)
at $HttpServletRequestHandler_620a1f3254ade.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
at $HttpServletRequestHandler_620a1f3254ade.service(Unknown Source)
at $HttpServletRequestHandler_620a1f3254ad9.service(Unknown Source)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[INFO] AssetsModule.ResourceMinimizer Minimized classpath:edu/utah/egi/peds/mixins/confirm.js (625 input bytes of JavaScript to 625 output bytes in 352.42 ms, 0.00% reduction)
.
.
.


    

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

&lt;/pre&gt;</description>
    <dc:creator>Ed Yu (JIRA</dc:creator>
    <dc:date>2013-05-23T16:52:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53823">
    <title>git commit: Include thread name in log output</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53823</link>
    <description>&lt;pre&gt;Updated Branches:
  refs/heads/master 56240a832 -&amp;gt; 22e8d1899


Include thread name in log output


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

Branch: refs/heads/master
Commit: 22e8d18990490771302e23958984b42fbe8143f1
Parents: 56240a8
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Thu May 23 09:37:31 2013 -0700
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Thu May 23 09:37:31 2013 -0700

----------------------------------------------------------------------
 tapestry-wro4j/src/test/resources/log4j.properties |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/22e8d189/tapestry-wro4j/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/test/resources/log4j.properties b/tapestry-wro4j/src/test/resources/log4j.properties
index c69dbf4..65e049b 100644
--- a/tapestry-wro4j/src/test/resources/log4j.properties
+++ b/tapestry-wro4j/src/test/resources/log4j.properties
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5,7 +5,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; log4j.appender.A1=org.apache.log4j.ConsoleAppender
 
 # A1 uses PatternLayout.
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
+log4j.appender.A1.layout.ConversionPattern=%t [%p] %c{1} %m%n
 
 log4j.category.org.apache.tapestry5.modules.AssetsModule.ResourceMinimizer=debug
 log4j.category.org.apache.tapestry5.wro4j=debug


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-23T16:37:35</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53822">
    <title>git commit: Simplify how ResourcePreProcessors are contributed</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53822</link>
    <description>&lt;pre&gt;Updated Branches:
  refs/heads/master 74dcf0bd0 -&amp;gt; 56240a832


Simplify how ResourcePreProcessors are contributed


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

Branch: refs/heads/master
Commit: 56240a83299ccc6e09f5262676622fc0c66adb07
Parents: 74dcf0b
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Thu May 23 09:37:07 2013 -0700
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Thu May 23 09:37:07 2013 -0700

----------------------------------------------------------------------
 .../wro4j/ResourceProcessorSourceImpl.java         |   14 +--
 .../tapestry5/wro4j/modules/WRO4JModule.java       |   60 ++++----------
 2 files changed, 22 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/56240a83/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
index cb94760..5afe0f5 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,8 +15,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 package org.apache.tapestry5.internal.wro4j;
 
 import org.apache.tapestry5.internal.services.assets.BytestreamCache;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.services.CachingObjectCreator;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.util.AvailableValues;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -31,14 +29,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import java.util.Map;
 
 public class ResourceProcessorSourceImpl implements ResourceProcessorSource
 {
-    private final Map&amp;lt;String, ObjectCreator&amp;gt; configuration;
+    private final Map&amp;lt;String, ResourcePreProcessor&amp;gt; configuration;
 
     private final Map&amp;lt;String, ResourceProcessor&amp;gt; cache = CollectionFactory.newCaseInsensitiveMap();
 
     private final Map&amp;lt;String, ResourceType&amp;gt; contentType2resourceType = CollectionFactory.newMap();
 
 
-    public ResourceProcessorSourceImpl(Map&amp;lt;String, ObjectCreator&amp;gt; configuration)
+    public ResourceProcessorSourceImpl(Map&amp;lt;String, ResourcePreProcessor&amp;gt; configuration)
     {
         this.configuration = configuration;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -62,15 +60,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceProcessorSourceImpl implements ResourceProcessorSource
 
     private ResourceProcessor create(String name)
     {
-        ObjectCreator&amp;lt;ResourcePreProcessor&amp;gt; creator = configuration.get(name);
+        final ResourcePreProcessor preProcessor = configuration.get(name);
 
-        if (creator == null)
+        if (preProcessor == null)
         {
             throw new UnknownValueException(String.format("Unknown resource processor '%s'.", name), new AvailableValues("configured processors", configuration));
         }
 
-        final ObjectCreator&amp;lt;ResourcePreProcessor&amp;gt; lazyCreator = new CachingObjectCreator&amp;lt;ResourcePreProcessor&amp;gt;(creator);
-
         return new ResourceProcessor()
         {
             public InputStream process(String operationDescription, String inputURL, InputStream input, String contentType) throws IOException
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -81,7 +77,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceProcessorSourceImpl implements ResourceProcessorSource
 
                 OutputStreamWriter writer = new OutputStreamWriter(outputStream);
 
-                lazyCreator.createObject().process(resource, new InputStreamReader(input), writer);
+                preProcessor.process(resource, new InputStreamReader(input), writer);
 
                 // close the writer to flush content into the outputStream
                 writer.close();

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/56240a83/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
index 499ae88..073d3aa 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -18,8 +18,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import com.github.sommeri.less4j.core.parser.AntlrException;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.internal.wro4j.*;
 import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.Primary;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,12 +32,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import ro.isdc.wro.extensions.processor.css.Less4jProcessor;
 import ro.isdc.wro.extensions.processor.js.GoogleClosureCompressorProcessor;
 import ro.isdc.wro.extensions.processor.js.RhinoCoffeeScriptProcessor;
 import ro.isdc.wro.extensions.processor.support.coffeescript.CoffeeScript;
+import ro.isdc.wro.model.resource.processor.ResourcePreProcessor;
 import ro.isdc.wro.model.resource.processor.impl.css.CssCompressorProcessor;
 
 import java.util.List;
 
 /**
- * Configures CoffeeScript-to-JavaScript compilation.
+ * Configures use of various WRO4J processors.
  *
  * &amp;lt; at &amp;gt;since 5.4
  */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -61,59 +60,29 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
      * in a single bundle, not a given for Tapestry.&amp;lt;/dd&amp;gt;
      * &amp;lt;dt&amp;gt;LessCompiler&amp;lt;/dt&amp;gt; &amp;lt;dd&amp;gt;Compiles Less source files into CSS.&amp;lt;/dd&amp;gt;
      * &amp;lt;/dl&amp;gt;
-     *
-     * &amp;lt; at &amp;gt;param configuration
-     * &amp;lt; at &amp;gt;param locator
      */
     &amp;lt; at &amp;gt;Contribute(ResourceProcessorSource.class)
-    public static void provideDefaultProcessors(MappedConfiguration&amp;lt;String, ObjectCreator&amp;gt; configuration, final ObjectLocator locator)
+    public static void provideDefaultProcessors(MappedConfiguration&amp;lt;String, ResourcePreProcessor&amp;gt; configuration)
     {
         configuration.add("CoffeeScriptCompiler",
-                new ObjectCreator()
+                new RhinoCoffeeScriptProcessor()
                 {
-                    public Object createObject()
+                    &amp;lt; at &amp;gt;Override
+                    protected CoffeeScript newCoffeeScript()
                     {
-                        return new RhinoCoffeeScriptProcessor()
-                        {
-                            &amp;lt; at &amp;gt;Override
-                            protected CoffeeScript newCoffeeScript()
-                            {
-                                return new CoffeeScript().setOptions("bare");
-                            }
-                        };
+                        return new CoffeeScript().setOptions("bare");
                     }
                 }
         );
 
 
-        configuration.add("CSSMinimizer", new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return new CssCompressorProcessor();
-            }
-        });
-
-        configuration.add("JavaScriptMinimizer", new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return new GoogleClosureCompressorProcessor();
-            }
-        });
-
-        configuration.add("LessCompiler", new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return new Less4jProcessor();
-            }
-        });
+        configuration.addInstance("CSSMinimizer", CssCompressorProcessor.class);
+        configuration.add("JavaScriptMinimizer", new GoogleClosureCompressorProcessor());
+        configuration.addInstance("LessCompiler", Less4jProcessor.class);
     }
 
     &amp;lt; at &amp;gt;Contribute(StreamableResourceSource.class)
-    public static void provideCompilations
-            (MappedConfiguration&amp;lt;String, ResourceTransformer&amp;gt; configuration, ResourceTransformerFactory factory)
+    public static void provideCompilers(MappedConfiguration&amp;lt;String, ResourceTransformer&amp;gt; configuration, ResourceTransformerFactory factory)
     {
         configuration.add("coffee",
                 factory.createCompiler("text/javascript", "CoffeeScriptCompiler", "CoffeeScript", "JavaScript"));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -129,9 +98,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
         configuration.addInstance("text/javascript", JavaScriptMinimizer.class);
     }
 
+    /**
+     * Alas {&amp;lt; at &amp;gt;link AntlrException}s do not have a useful toString() which makes them useless in the exception report;
+     * here we provide an {&amp;lt; at &amp;gt;link ObjectRenderer} that breaks them apart into useful strings. Eventually we may be
+     * able to synthesize a {&amp;lt; at &amp;gt;link org.apache.tapestry5.ioc.Location} from them as well and show some of the source .less file.
+     */
     &amp;lt; at &amp;gt;Contribute(ObjectRenderer.class)
     &amp;lt; at &amp;gt;Primary
-    public static void decodeLessErrors(MappedConfiguration&amp;lt;Class, ObjectRenderer&amp;gt; configuration)
+    public static void provideLessErrorRenderers(MappedConfiguration&amp;lt;Class, ObjectRenderer&amp;gt; configuration)
     {
         configuration.add(AntlrException.class, new ObjectRenderer&amp;lt;AntlrException&amp;gt;()
         {


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-23T16:37:13</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53821">
    <title>Build failed in Jenkins: tapestry-trunk-freestyle #1062</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53821</link>
    <description>&lt;pre&gt;See &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/1062/changes&amp;gt;

Changes:

[hlship] Add support for Less compilation

[hlship] Improve exception reporting for invalid source files

------------------------------------------
[...truncated 307 lines...]
:tapestry-javadoc:sourcesJar UP-TO-DATE
:tapestry-javadoc:uploadPublishedUploading: org/apache/tapestry/tapestry-javadoc/5.4-SNAPSHOT/tapestry-javadoc-5.4-20130523.013134-68.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 22K from remote
Uploaded 22K
Uploading: org/apache/tapestry/tapestry-javadoc/5.4-SNAPSHOT/tapestry-javadoc-5.4-20130523.013134-68-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 14K from remote
Uploaded 14K

:tapestry-jmx:compileJava UP-TO-DATE
:tapestry-jmx:compileGroovy UP-TO-DATE
:tapestry-jmx:processResources UP-TO-DATE
:tapestry-jmx:classes UP-TO-DATE
:tapestry-jmx:jar UP-TO-DATE
:tapestry-jmx:assemble UP-TO-DATE
:tapestry-jmx:compileTestJava UP-TO-DATE
:tapestry-jmx:compileTestGroovy UP-TO-DATE
:tapestry-jmx:processTestResources UP-TO-DATE
:tapestry-jmx:testClasses UP-TO-DATE
:tapestry-jmx:test UP-TO-DATE
:tapestry-jmx:check UP-TO-DATE
:tapestry-jmx:build UP-TO-DATE
:tapestry-jmx:sourcesJar UP-TO-DATE
:tapestry-jmx:uploadPublishedUploading: org/apache/tapestry/tapestry-jmx/5.4-SNAPSHOT/tapestry-jmx-5.4-20130523.013143-68.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 9K from remote
Uploaded 9K
Uploading: org/apache/tapestry/tapestry-jmx/5.4-SNAPSHOT/tapestry-jmx-5.4-20130523.013143-68-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 9K from remote
Uploaded 9K

:tapestry-jpa:compileJava UP-TO-DATE
:tapestry-jpa:compileGroovy UP-TO-DATE
:tapestry-jpa:processResources UP-TO-DATE
:tapestry-jpa:classes UP-TO-DATE
:tapestry-jpa:jar UP-TO-DATE
:tapestry-jpa:assemble UP-TO-DATE
:tapestry-jpa:compileTestJava UP-TO-DATE
:tapestry-jpa:compileTestGroovy UP-TO-DATE
:tapestry-jpa:processTestResources UP-TO-DATE
:tapestry-jpa:testClasses UP-TO-DATE
:tapestry-jpa:test UP-TO-DATE
:tapestry-jpa:check UP-TO-DATE
:tapestry-jpa:build UP-TO-DATE
:tapestry-jpa:sourcesJar UP-TO-DATE
:tapestry-jpa:uploadPublishedUploading: org/apache/tapestry/tapestry-jpa/5.4-SNAPSHOT/tapestry-jpa-5.4-20130523.013207-62.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 49K from remote
Uploaded 49K
Uploading: org/apache/tapestry/tapestry-jpa/5.4-SNAPSHOT/tapestry-jpa-5.4-20130523.013207-62-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 41K from remote
Uploaded 41K

:tapestry-json:assemble UP-TO-DATE
:tapestry-json:compileTestJava UP-TO-DATE
:tapestry-json:compileTestGroovy UP-TO-DATE
:tapestry-json:processTestResources UP-TO-DATE
:tapestry-json:testClasses UP-TO-DATE
:tapestry-json:test UP-TO-DATE
:tapestry-json:check UP-TO-DATE
:tapestry-json:build UP-TO-DATE
:tapestry-json:sourcesJar UP-TO-DATE
:tapestry-json:uploadPublishedUploading: org/apache/tapestry/tapestry-json/5.4-SNAPSHOT/tapestry-json-5.4-20130523.013217-62.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-json/5.4-SNAPSHOT/tapestry-json-5.4-20130523.013217-62-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 31K from remote
Uploaded 31K

:tapestry-kaptcha:compileJava UP-TO-DATE
:tapestry-kaptcha:compileGroovy UP-TO-DATE
:tapestry-kaptcha:processResources UP-TO-DATE
:tapestry-kaptcha:classes UP-TO-DATE
:tapestry-kaptcha:jar UP-TO-DATE
:tapestry-kaptcha:assemble UP-TO-DATE
:tapestry-kaptcha:compileTestJava UP-TO-DATE
:tapestry-kaptcha:compileTestGroovy UP-TO-DATE
:tapestry-kaptcha:processTestResources UP-TO-DATE
:tapestry-kaptcha:testClasses UP-TO-DATE
:tapestry-kaptcha:test UP-TO-DATE
:tapestry-kaptcha:check UP-TO-DATE
:tapestry-kaptcha:build UP-TO-DATE
:tapestry-kaptcha:sourcesJar UP-TO-DATE
:tapestry-kaptcha:uploadPublishedUploading: org/apache/tapestry/tapestry-kaptcha/5.4-SNAPSHOT/tapestry-kaptcha-5.4-20130523.013227-62.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 22K from remote
Uploaded 22K
Uploading: org/apache/tapestry/tapestry-kaptcha/5.4-SNAPSHOT/tapestry-kaptcha-5.4-20130523.013227-62-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 26K from remote
Uploaded 26K

:tapestry-mongodb:compileJava UP-TO-DATE
:tapestry-mongodb:compileGroovy UP-TO-DATE
:tapestry-mongodb:processResources UP-TO-DATE
:tapestry-mongodb:classes UP-TO-DATE
:tapestry-mongodb:jar UP-TO-DATE
:tapestry-mongodb:assemble UP-TO-DATE
:tapestry-mongodb:compileTestJava UP-TO-DATE
:tapestry-mongodb:compileTestGroovy UP-TO-DATE
:tapestry-mongodb:processTestResources UP-TO-DATE
:tapestry-mongodb:testClasses UP-TO-DATE
:tapestry-mongodb:test UP-TO-DATE
:tapestry-mongodb:check UP-TO-DATE
:tapestry-mongodb:build UP-TO-DATE
:tapestry-mongodb:sourcesJar UP-TO-DATE
:tapestry-mongodb:uploadPublishedUploading: org/apache/tapestry/tapestry-mongodb/5.4-SNAPSHOT/tapestry-mongodb-5.4-20130523.013236-26.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 12K from remote
Uploaded 12K
Uploading: org/apache/tapestry/tapestry-mongodb/5.4-SNAPSHOT/tapestry-mongodb-5.4-20130523.013236-26-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 10K from remote
Uploaded 10K

:tapestry-spring:compileJava UP-TO-DATE
:tapestry-spring:compileGroovy UP-TO-DATE
:tapestry-spring:processResources UP-TO-DATE
:tapestry-spring:classes UP-TO-DATE
:tapestry-spring:jar UP-TO-DATE
:tapestry-spring:assemble UP-TO-DATE
:tapestry-spring:compileTestJava UP-TO-DATE
:tapestry-spring:compileTestGroovy UP-TO-DATE
:tapestry-spring:processTestResources UP-TO-DATE
:tapestry-spring:testClasses UP-TO-DATE
:tapestry-spring:test UP-TO-DATE
:tapestry-spring:check UP-TO-DATE
:tapestry-spring:build UP-TO-DATE
:tapestry-spring:sourcesJar UP-TO-DATE
:tapestry-spring:uploadPublishedUploading: org/apache/tapestry/tapestry-spring/5.4-SNAPSHOT/tapestry-spring-5.4-20130523.013245-57.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 30K from remote
Uploaded 30K
Uploading: org/apache/tapestry/tapestry-spring/5.4-SNAPSHOT/tapestry-spring-5.4-20130523.013245-57-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 20K from remote
Uploaded 20K

:tapestry-test:assemble UP-TO-DATE
:tapestry-test:compileTestJava UP-TO-DATE
:tapestry-test:compileTestGroovy UP-TO-DATE
:tapestry-test:processTestResources UP-TO-DATE
:tapestry-test:testClasses UP-TO-DATE
:tapestry-test:test UP-TO-DATE
:tapestry-test:check UP-TO-DATE
:tapestry-test:build UP-TO-DATE
:tapestry-test:sourcesJar UP-TO-DATE
:tapestry-test:uploadPublishedUploading: org/apache/tapestry/tapestry-test/5.4-SNAPSHOT/tapestry-test-5.4-20130523.013254-57.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 455K from remote
Uploaded 455K
Uploading: org/apache/tapestry/tapestry-test/5.4-SNAPSHOT/tapestry-test-5.4-20130523.013254-57-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 32K from remote
Uploaded 32K

:tapestry-test-data:assemble UP-TO-DATE
:tapestry-test-data:compileTestJava UP-TO-DATE
:tapestry-test-data:compileTestGroovy UP-TO-DATE
:tapestry-test-data:processTestResources UP-TO-DATE
:tapestry-test-data:testClasses UP-TO-DATE
:tapestry-test-data:test UP-TO-DATE
:tapestry-test-data:check UP-TO-DATE
:tapestry-test-data:build UP-TO-DATE
:tapestry-test-data:sourcesJar UP-TO-DATE
:tapestry-test-data:uploadPublishedUploading: org/apache/tapestry/tapestry-test-data/5.4-SNAPSHOT/tapestry-test-data-5.4-20130523.013305-12.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 419K from remote
Uploaded 419K
Uploading: org/apache/tapestry/tapestry-test-data/5.4-SNAPSHOT/tapestry-test-data-5.4-20130523.013305-12-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 419K from remote
Uploaded 419K

:tapestry-upload:compileJava UP-TO-DATE
:tapestry-upload:compileGroovy UP-TO-DATE
:tapestry-upload:processResources UP-TO-DATE
:tapestry-upload:classes UP-TO-DATE
:tapestry-upload:jar UP-TO-DATE
:tapestry-upload:assemble UP-TO-DATE
:tapestry-upload:compileTestJava UP-TO-DATE
:tapestry-upload:compileTestGroovy UP-TO-DATE
:tapestry-upload:processTestResources UP-TO-DATE
:tapestry-upload:testClasses UP-TO-DATE
:tapestry-upload:test UP-TO-DATE
:tapestry-upload:check UP-TO-DATE
:tapestry-upload:build UP-TO-DATE
:tapestry-upload:sourcesJar UP-TO-DATE
:tapestry-upload:uploadPublishedUploading: org/apache/tapestry/tapestry-upload/5.4-SNAPSHOT/tapestry-upload-5.4-20130523.013317-57.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-upload/5.4-SNAPSHOT/tapestry-upload-5.4-20130523.013317-57-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 26K from remote
Uploaded 26K

:tapestry-wro4j:compileJavaNote: &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/ws/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java&amp;gt; uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

:tapestry-wro4j:compileGroovy UP-TO-DATE
:tapestry-wro4j:processResources UP-TO-DATE
:tapestry-wro4j:classes
:tapestry-wro4j:jar
:tapestry-wro4j:assemble
:tapestry-wro4j:compileTestJava
:tapestry-wro4j:compileTestGroovy
:tapestry-wro4j:processTestResources
:tapestry-wro4j:testClasses
:tapestry-wro4j:test
:tapestry-wro4j:check
:tapestry-wro4j:build
:tapestry-wro4j:sourcesJar
:tapestry-wro4j:uploadPublishedUploading: org/apache/tapestry/tapestry-wro4j/5.4-SNAPSHOT/tapestry-wro4j-5.4-20130523.013330-6.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 27K from remote
Uploaded 27K
Uploading: org/apache/tapestry/tapestry-wro4j/5.4-SNAPSHOT/tapestry-wro4j-5.4-20130523.013330-6-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 20K from remote
Uploaded 20K

:tapestry5-annotations:assemble UP-TO-DATE
:tapestry5-annotations:compileTestJava UP-TO-DATE
:tapestry5-annotations:compileTestGroovy UP-TO-DATE
:tapestry5-annotations:processTestResources UP-TO-DATE
:tapestry5-annotations:testClasses UP-TO-DATE
:tapestry5-annotations:test UP-TO-DATE
:tapestry5-annotations:check UP-TO-DATE
:tapestry5-annotations:build UP-TO-DATE
:tapestry5-annotations:sourcesJar UP-TO-DATE
:tapestry5-annotations:uploadPublishedUploading: org/apache/tapestry/tapestry5-annotations/5.4-SNAPSHOT/tapestry5-annotations-5.4-20130523.013339-56.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 15K from remote
Uploaded 15K
Uploading: org/apache/tapestry/tapestry5-annotations/5.4-SNAPSHOT/tapestry5-annotations-5.4-20130523.013339-56-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 24K from remote
Uploaded 24K

:continuousIntegration

BUILD SUCCESSFUL

Total time: 5 mins 0.126 secs
[tapestry-trunk-freestyle] $ /bin/bash -xe /tmp/hudson1532342034785428180.sh
+ pkill Xvfb
Recording test results
Test reports were found but none of them are new. Did tests run? 
For example, &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/ws/plastic/build/test-results/TEST-org.apache.tapestry5.internal.plastic.ClassInstantiatorTests.xml&amp;gt; is 2 mo 24 days old

Build step 'Publish JUnit test result report' changed build result to FAILURE
TestNG Reports Processing: START
Looking for TestNG results report in workspace using pattern: **/build/reports/tests/testng-results.xml
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
Saving reports...
Found matching files but did not find any TestNG results.
&lt;/pre&gt;</description>
    <dc:creator>Apache Jenkins Server</dc:creator>
    <dc:date>2013-05-23T01:36:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53820">
    <title>[2/2] git commit: Improve exception reporting for invalid source files</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53820</link>
    <description>&lt;pre&gt;Improve exception reporting for invalid source files


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

Branch: refs/heads/master
Commit: 74dcf0bd0daf18a3848c097d3e88e8c69d0aef5d
Parents: 09a94cd
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Wed May 22 17:57:59 2013 -0700
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Wed May 22 17:57:59 2013 -0700

----------------------------------------------------------------------
 .../wro4j/ResourceTransformerFactoryImpl.java      |   35 +++++++++----
 .../tapestry5/wro4j/modules/WRO4JModule.java       |   41 +++++++++++++++
 2 files changed, 65 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/74dcf0bd/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
index 5893bd1..cd5005d 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -14,6 +14,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 package org.apache.tapestry5.internal.wro4j;
 
+import org.apache.tapestry5.ioc.IOOperation;
+import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.assets.ResourceDependencies;
 import org.apache.tapestry5.services.assets.ResourceTransformer;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,10 +34,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
 
     private final ResourceProcessorSource source;
 
-    public ResourceTransformerFactoryImpl(Logger logger, ResourceProcessorSource source)
+    private final OperationTracker tracker;
+
+    public ResourceTransformerFactoryImpl(Logger logger, ResourceProcessorSource source, OperationTracker tracker)
     {
         this.logger = logger;
         this.source = source;
+        this.tracker = tracker;
     }
 
     public ResourceTransformer createCompiler(final String contentType, String processorName, final String sourceName, final String targetName)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -49,21 +54,29 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
                 return contentType;
             }
 
-            public InputStream transform(Resource source, ResourceDependencies dependencies) throws IOException
+            public InputStream transform(final Resource source, ResourceDependencies dependencies) throws IOException
             {
-                final long startTime = System.nanoTime();
+                final String description = String.format("Compiling %s from %s to %s", source, sourceName, targetName);
+
+                return tracker.perform(description, new IOOperation&amp;lt;InputStream&amp;gt;()
+                {
+                    public InputStream perform() throws IOException
+                    {
+                        final long startTime = System.nanoTime();
 
-                InputStream result = compiler.process(String.format("Compiling %s from %s to %s", source, sourceName, targetName),
-                        source.toURL().toString(),
-                        source.openStream(), contentType);
+                        InputStream result = compiler.process(description,
+                                source.toURL().toString(),
+                                source.openStream(), contentType);
 
-                final long elapsedTime = System.nanoTime() - startTime;
+                        final long elapsedTime = System.nanoTime() - startTime;
 
-                logger.info(String.format("Compiled %s to %s in %.2f ms",
-                        source, targetName,
-                        ((double) elapsedTime) * NANOS_TO_MILLIS));
+                        logger.info(String.format("Compiled %s to %s in %.2f ms",
+                                source, targetName,
+                                ((double) elapsedTime) * NANOS_TO_MILLIS));
 
-                return result;
+                        return result;
+                    }
+                });
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/74dcf0bd/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
index 7874d73..499ae88 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -14,6 +14,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 package org.apache.tapestry5.wro4j.modules;
 
+import com.github.sommeri.less4j.core.parser.AntlrException;
+import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.internal.wro4j.*;
 import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.ObjectCreator;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -21,6 +23,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.ioc.internal.util.InternalUtils;
+import org.apache.tapestry5.services.ObjectRenderer;
 import org.apache.tapestry5.services.assets.ResourceMinimizer;
 import org.apache.tapestry5.services.assets.ResourceTransformer;
 import org.apache.tapestry5.services.assets.StreamableResourceSource;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -31,6 +36,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import ro.isdc.wro.extensions.processor.js.RhinoCoffeeScriptProcessor;
 import ro.isdc.wro.extensions.processor.support.coffeescript.CoffeeScript;
 import ro.isdc.wro.model.resource.processor.impl.css.CssCompressorProcessor;
 
+import java.util.List;
+
 /**
  * Configures CoffeeScript-to-JavaScript compilation.
  *
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -121,4 +128,38 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
         configuration.addInstance("text/css", CSSMinimizer.class);
         configuration.addInstance("text/javascript", JavaScriptMinimizer.class);
     }
+
+    &amp;lt; at &amp;gt;Contribute(ObjectRenderer.class)
+    &amp;lt; at &amp;gt;Primary
+    public static void decodeLessErrors(MappedConfiguration&amp;lt;Class, ObjectRenderer&amp;gt; configuration)
+    {
+        configuration.add(AntlrException.class, new ObjectRenderer&amp;lt;AntlrException&amp;gt;()
+        {
+            public void render(AntlrException e, MarkupWriter writer)
+            {
+                List&amp;lt;String&amp;gt; strings = CollectionFactory.newList();
+
+                if (InternalUtils.isNonBlank(e.getMessage()))
+                {
+                    strings.add(e.getMessage());
+                }
+
+                // Inside WRO4J we see that the LessSource is a StringSource with no useful toString(), so
+                // it is omitted. We may need to create our own processors, stripping away a couple of layers of
+                // WRO4J to get proper exception reporting!
+
+                if (e.getLine() &amp;gt; 0)
+                {
+                    strings.add("line " + e.getLine());
+                }
+
+                if (e.getCharacter() &amp;gt; 0)
+                {
+                    strings.add("position " + e.getCharacter());
+                }
+
+                writer.write(InternalUtils.join(strings, " - "));
+            }
+        });
+    }
 }


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-23T01:16:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53819">
    <title>[1/2] git commit: Add support for Less compilation</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53819</link>
    <description>&lt;pre&gt;Updated Branches:
  refs/heads/master d111e421b -&amp;gt; 74dcf0bd0


Add support for Less compilation


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

Branch: refs/heads/master
Commit: 09a94cd5926e061212b09f78576772dae68e1ce9
Parents: d111e42
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Wed May 22 17:34:26 2013 -0700
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Wed May 22 17:34:26 2013 -0700

----------------------------------------------------------------------
 54_RELEASE_NOTES.txt                               |    5 +-
 .../wro4j/CoffeeScriptResourceCompiler.java        |   71 ---------------
 .../wro4j/ResourceProcessorSourceImpl.java         |    7 ++-
 .../internal/wro4j/ResourceTransformerFactory.java |   43 +++++++++
 .../wro4j/ResourceTransformerFactoryImpl.java      |   70 ++++++++++++++
 .../tapestry5/wro4j/modules/WRO4JModule.java       |   25 ++++--
 .../src/test/groovy/t5/wro4j/pages/Index.groovy    |    2 +-
 .../src/test/resources/META-INF/assets/index.less  |    5 +
 8 files changed, 146 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/54_RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 0ce07d9..884ed40 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -57,8 +57,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; asset URLs are distinct.
 Tapestry 5.4 now re-writes CSS files, expanding any `url()` references in them into fully qualify URLs; this
 is to allow for the checksum embedded into each URL, which breaks relative references.
 
-Tapestry 5.4 introduces a new module, tapestry-wro4j, that provides support for compiling CoffeeScript and JavaScript,
-and for minimizing CSS and JavaScript. All processing takes place at runtime.
+Tapestry 5.4 introduces a new module, tapestry-wro4j, that provides support for compiling CoffeeScript into JavaScript,
+Less into CSS, and for minimizing CSS and JavaScript. All processing takes place at runtime.
 
 ## ControlGroup Mixin
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -91,6 +91,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; for example).
 
 By default, tapestry-wro4j enables:
 - compilation of CoffeeScript to JavaScript (using Java's Rhino JavaScript engine)
+- compilation of Less to CSS
 - minification of CSS using Andy Robert's csscompressor
 - minification of JavaScript using the Google Closure compiler (in simple optimizations mode)
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
deleted file mode 100644
index 432dfe5..0000000
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
+++ /dev/null
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,71 +0,0 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-// 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.wro4j;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.assets.ResourceDependencies;
-import org.apache.tapestry5.services.assets.ResourceTransformer;
-import org.apache.tapestry5.wro4j.services.ResourceProcessor;
-import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
-import org.slf4j.Logger;
-import ro.isdc.wro.extensions.processor.js.RhinoCoffeeScriptProcessor;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Compiles CoffeeScript to JavaScript, using {&amp;lt; at &amp;gt;link RhinoCoffeeScriptProcessor}. Because what is most commonly written
- * are AMD Modules, which have (effectively) an implicit hygienic function wrapper, we compile as with "--bare".
- *
- * &amp;lt; at &amp;gt;since 5.4
- */
-public class CoffeeScriptResourceCompiler implements ResourceTransformer
-{
-    private final Logger logger;
-
-    private static final double NANOS_TO_MILLIS = 1.0d / 1000000.0d;
-
-    private final ResourceProcessor compiler;
-
-    public CoffeeScriptResourceCompiler(Logger logger, ResourceProcessorSource processorSource)
-    {
-        this.logger = logger;
-
-        // Could set up some special kind of injection for this, but overkill for the couple of places it is used.
-        compiler = processorSource.getProcessor("CoffeeScriptCompiler");
-    }
-
-    public String getTransformedContentType()
-    {
-        return "text/javascript";
-    }
-
-    public InputStream transform(final Resource source, ResourceDependencies dependencies) throws IOException
-    {
-        final long startTime = System.nanoTime();
-
-        InputStream result = compiler.process(String.format("Compiling %s from CoffeeScript to JavaScript", source),
-                source.toURL().toString(),
-                source.openStream(), "text/javascript");
-
-        final long elapsedTime = System.nanoTime() - startTime;
-
-        logger.info(String.format("Compiled %s to JavaScript in %.2f ms",
-                source,
-                ((double) elapsedTime) * NANOS_TO_MILLIS));
-
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
index 266832c..cb94760 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -79,7 +79,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceProcessorSourceImpl implements ResourceProcessorSource
 
                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(5000);
 
-                lazyCreator.createObject().process(resource, new InputStreamReader(input), new OutputStreamWriter(outputStream));
+                OutputStreamWriter writer = new OutputStreamWriter(outputStream);
+
+                lazyCreator.createObject().process(resource, new InputStreamReader(input), writer);
+
+                // close the writer to flush content into the outputStream
+                writer.close();
 
                 return new BytestreamCache(outputStream).openStream();
             }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactory.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactory.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactory.java
new file mode 100644
index 0000000..4016ebe
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactory.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,43 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+// 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.wro4j;
+
+import org.apache.tapestry5.services.assets.ResourceTransformer;
+
+/**
+ * Creates ResourceTransformer around a named {&amp;lt; at &amp;gt;link org.apache.tapestry5.wro4j.services.ResourceProcessor}.
+ *
+ * &amp;lt; at &amp;gt;since 5.4
+ * &amp;lt; at &amp;gt;see org.apache.tapestry5.services.assets.StreamableResourceSource
+ */
+public interface ResourceTransformerFactory
+{
+
+    /**
+     * Constructs a compiler around a named processor.
+     *
+     * &amp;lt; at &amp;gt;param contentType
+     *         transformed content type, e.g., "text/javascript"
+     * &amp;lt; at &amp;gt;param processorName
+     *         name of processor to do work
+     * &amp;lt; at &amp;gt;param sourceName
+     *         for debugging: source name, e.g., "CoffeeScript"
+     * &amp;lt; at &amp;gt;param targetName
+     *         for debugging: target name, e.g., "JavaScript"
+     * &amp;lt; at &amp;gt;return transformer
+     * &amp;lt; at &amp;gt;see org.apache.tapestry5.wro4j.services.ResourceProcessorSource
+     */
+    ResourceTransformer createCompiler(String contentType, String processorName, String sourceName, String targetName);
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
new file mode 100644
index 0000000..5893bd1
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceTransformerFactoryImpl.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,70 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+// 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.wro4j;
+
+import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.services.assets.ResourceDependencies;
+import org.apache.tapestry5.services.assets.ResourceTransformer;
+import org.apache.tapestry5.wro4j.services.ResourceProcessor;
+import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
+import org.slf4j.Logger;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ResourceTransformerFactoryImpl implements ResourceTransformerFactory
+{
+    private static final double NANOS_TO_MILLIS = 1.0d / 1000000.0d;
+
+    private final Logger logger;
+
+    private final ResourceProcessorSource source;
+
+    public ResourceTransformerFactoryImpl(Logger logger, ResourceProcessorSource source)
+    {
+        this.logger = logger;
+        this.source = source;
+    }
+
+    public ResourceTransformer createCompiler(final String contentType, String processorName, final String sourceName, final String targetName)
+    {
+        final ResourceProcessor compiler = source.getProcessor(processorName);
+
+        return new ResourceTransformer()
+        {
+            public String getTransformedContentType()
+            {
+                return contentType;
+            }
+
+            public InputStream transform(Resource source, ResourceDependencies dependencies) throws IOException
+            {
+                final long startTime = System.nanoTime();
+
+                InputStream result = compiler.process(String.format("Compiling %s from %s to %s", source, sourceName, targetName),
+                        source.toURL().toString(),
+                        source.openStream(), contentType);
+
+                final long elapsedTime = System.nanoTime() - startTime;
+
+                logger.info(String.format("Compiled %s to %s in %.2f ms",
+                        source, targetName,
+                        ((double) elapsedTime) * NANOS_TO_MILLIS));
+
+                return result;
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
index 108858b..7874d73 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -14,10 +14,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 package org.apache.tapestry5.wro4j.modules;
 
-import org.apache.tapestry5.internal.wro4j.CSSMinimizer;
-import org.apache.tapestry5.internal.wro4j.CoffeeScriptResourceCompiler;
-import org.apache.tapestry5.internal.wro4j.JavaScriptMinimizer;
-import org.apache.tapestry5.internal.wro4j.ResourceProcessorSourceImpl;
+import org.apache.tapestry5.internal.wro4j.*;
 import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.ObjectCreator;
 import org.apache.tapestry5.ioc.ObjectLocator;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -28,6 +25,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import org.apache.tapestry5.services.assets.ResourceMinimizer;
 import org.apache.tapestry5.services.assets.ResourceTransformer;
 import org.apache.tapestry5.services.assets.StreamableResourceSource;
 import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
+import ro.isdc.wro.extensions.processor.css.Less4jProcessor;
 import ro.isdc.wro.extensions.processor.js.GoogleClosureCompressorProcessor;
 import ro.isdc.wro.extensions.processor.js.RhinoCoffeeScriptProcessor;
 import ro.isdc.wro.extensions.processor.support.coffeescript.CoffeeScript;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,6 +41,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
     public static void bind(ServiceBinder binder)
     {
         binder.bind(ResourceProcessorSource.class, ResourceProcessorSourceImpl.class);
+        binder.bind(ResourceTransformerFactory.class, ResourceTransformerFactoryImpl.class);
     }
 
     /**
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -53,6 +52,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
      * &amp;lt;dt&amp;gt;JavaScriptMinimizer&amp;lt;/dt&amp;gt;
      * &amp;lt;dd&amp;gt;{&amp;lt; at &amp;gt;link GoogleClosureCompressorProcessor} configured for simple optimizations. Advanced optimizations assume that all code is loaded
      * in a single bundle, not a given for Tapestry.&amp;lt;/dd&amp;gt;
+     * &amp;lt;dt&amp;gt;LessCompiler&amp;lt;/dt&amp;gt; &amp;lt;dd&amp;gt;Compiles Less source files into CSS.&amp;lt;/dd&amp;gt;
      * &amp;lt;/dl&amp;gt;
      *
      * &amp;lt; at &amp;gt;param configuration
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -94,13 +94,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
                 return new GoogleClosureCompressorProcessor();
             }
         });
+
+        configuration.add("LessCompiler", new ObjectCreator()
+        {
+            public Object createObject()
+            {
+                return new Less4jProcessor();
+            }
+        });
     }
 
     &amp;lt; at &amp;gt;Contribute(StreamableResourceSource.class)
-    public static void provideCoffeeScriptCompilation
-            (MappedConfiguration&amp;lt;String, ResourceTransformer&amp;gt; configuration)
+    public static void provideCompilations
+            (MappedConfiguration&amp;lt;String, ResourceTransformer&amp;gt; configuration, ResourceTransformerFactory factory)
     {
-        configuration.addInstance("coffee", CoffeeScriptResourceCompiler.class);
+        configuration.add("coffee",
+                factory.createCompiler("text/javascript", "CoffeeScriptCompiler", "CoffeeScript", "JavaScript"));
+
+        configuration.add("less", factory.createCompiler("text/css", "LessCompiler", "Less", "CSS"));
     }
 
     &amp;lt; at &amp;gt;Contribute(ResourceMinimizer.class)

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/test/groovy/t5/wro4j/pages/Index.groovy
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/test/groovy/t5/wro4j/pages/Index.groovy b/tapestry-wro4j/src/test/groovy/t5/wro4j/pages/Index.groovy
index 690577e..78b58da 100644
--- a/tapestry-wro4j/src/test/groovy/t5/wro4j/pages/Index.groovy
+++ b/tapestry-wro4j/src/test/groovy/t5/wro4j/pages/Index.groovy
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2,7 +2,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; package t5.wro4j.pages
 
 import org.apache.tapestry5.annotations.Import
 
-&amp;lt; at &amp;gt;Import(stack = "core", module = "index")
+&amp;lt; at &amp;gt;Import(stack = "core", module = "index", stylesheet = "index.less")
 class Index {
 
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/09a94cd5/tapestry-wro4j/src/test/resources/META-INF/assets/index.less
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/test/resources/META-INF/assets/index.less b/tapestry-wro4j/src/test/resources/META-INF/assets/index.less
new file mode 100644
index 0000000..738be7b
--- /dev/null
+++ b/tapestry-wro4j/src/test/resources/META-INF/assets/index.less
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+container {
+  alert {
+    font-size: x-large;
+  }
+}
\ No newline at end of file


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-23T01:16:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53818">
    <title>Re: Jenkins build is back to normal : tapestry-trunk-freestyle #1060</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53818</link>
    <description>&lt;pre&gt;agree - even though Maven sucks in various ways
  ----- Original Message ----- 
  From: Thiago H de Paula Figueiredo 
  To: Tapestry development 
  Sent: Wednesday, May 22, 2013 12:12 AM
  Subject: Re: Jenkins build is back to normal : tapestry-trunk-freestyle #1060


  On Tue, 21 May 2013 16:05:26 -0300, Bob Harner &amp;lt;bobharner&amp;lt; at &amp;gt;gmail.com&amp;gt; wrote:

  &amp;gt; I think it's important to keep the Maven archetypes for Tapestry users.
  &amp;gt; Unlike Tapestry developers, I believe there are loads more people using
  &amp;gt; Tapestry with Maven than with Gradle, at least for now.

  +1 for Maven archetype. Maven is still way more popular than Gradle and is  
  supported by more IDEs out-of-the-box.

  -- 
  Thiago H. de Paula Figueiredo

  ---------------------------------------------------------------------
  To unsubscribe, e-mail: dev-unsubscribe&amp;lt; at &amp;gt;tapestry.apache.org
  For additional commands, e-mail: dev-help&amp;lt; at &amp;gt;tapestry.apache.org
&lt;/pre&gt;</description>
    <dc:creator>John</dc:creator>
    <dc:date>2013-05-22T07:59:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53817">
    <title>Re: Jenkins build is back to normal : tapestry-trunk-freestyle #1060</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53817</link>
    <description>&lt;pre&gt;

+1 for Maven archetype. Maven is still way more popular than Gradle and is  
supported by more IDEs out-of-the-box.

&lt;/pre&gt;</description>
    <dc:creator>Thiago H de Paula Figueiredo</dc:creator>
    <dc:date>2013-05-21T23:12:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53816">
    <title>Re: Jenkins build is back to normal : tapestry-trunk-freestyle #1060</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53816</link>
    <description>&lt;pre&gt;I think it's important to keep the Maven archetypes for Tapestry users.
Unlike Tapestry developers, I believe there are loads more people using
Tapestry with Maven than with Gradle, at least for now.

On Tue, May 21, 2013 at 11:51 AM, Howard Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;gmail.com&amp;gt;wrote:

&lt;/pre&gt;</description>
    <dc:creator>Bob Harner</dc:creator>
    <dc:date>2013-05-21T19:05:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53815">
    <title>Re: Jenkins build is back to normal : tapestry-trunk-freestyle #1060</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53815</link>
    <description>&lt;pre&gt;That would be terrific.

Also, Gradle 1.6 has, I think, a Gradle alternative to Maven archetypes;
perhaps we can switch and be free of Maven entirely.


On Mon, May 20, 2013 at 11:49 PM, Massimo Lusetti &amp;lt;mlusetti&amp;lt; at &amp;gt;gmail.com&amp;gt;wrote:




&lt;/pre&gt;</description>
    <dc:creator>Howard Lewis Ship</dc:creator>
    <dc:date>2013-05-21T15:51:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53814">
    <title>[jira] [Reopened] (TAP5-2106) Tapestry should pass CSS file URLs that are not relative file references (inlcuding VML URLs) through unchanged</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53814</link>
    <description>&lt;pre&gt;
     [ https://issues.apache.org/jira/browse/TAP5-2106?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship reopened TAP5-2106:
----------------------------------------

    

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

&lt;/pre&gt;</description>
    <dc:creator>Howard M. Lewis Ship (JIRA</dc:creator>
    <dc:date>2013-05-21T01:02:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53813">
    <title>Build failed in Jenkins: tapestry-trunk-freestyle #1061</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53813</link>
    <description>&lt;pre&gt;See &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/1061/changes&amp;gt;

Changes:

[hlship] Setup CSS Minimization

[hlship] Missing copyright

[hlship] Enable JavaScript Minification using Google Closure compiler

[hlship] Update release notes

------------------------------------------
[...truncated 307 lines...]
:tapestry-javadoc:sourcesJar UP-TO-DATE
:tapestry-javadoc:uploadPublishedUploading: org/apache/tapestry/tapestry-javadoc/5.4-SNAPSHOT/tapestry-javadoc-5.4-20130520.223140-67.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 22K from remote
Uploaded 22K
Uploading: org/apache/tapestry/tapestry-javadoc/5.4-SNAPSHOT/tapestry-javadoc-5.4-20130520.223140-67-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 14K from remote
Uploaded 14K

:tapestry-jmx:compileJava UP-TO-DATE
:tapestry-jmx:compileGroovy UP-TO-DATE
:tapestry-jmx:processResources UP-TO-DATE
:tapestry-jmx:classes UP-TO-DATE
:tapestry-jmx:jar UP-TO-DATE
:tapestry-jmx:assemble UP-TO-DATE
:tapestry-jmx:compileTestJava UP-TO-DATE
:tapestry-jmx:compileTestGroovy UP-TO-DATE
:tapestry-jmx:processTestResources UP-TO-DATE
:tapestry-jmx:testClasses UP-TO-DATE
:tapestry-jmx:test UP-TO-DATE
:tapestry-jmx:check UP-TO-DATE
:tapestry-jmx:build UP-TO-DATE
:tapestry-jmx:sourcesJar UP-TO-DATE
:tapestry-jmx:uploadPublishedUploading: org/apache/tapestry/tapestry-jmx/5.4-SNAPSHOT/tapestry-jmx-5.4-20130520.223150-67.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 9K from remote
Uploaded 9K
Uploading: org/apache/tapestry/tapestry-jmx/5.4-SNAPSHOT/tapestry-jmx-5.4-20130520.223150-67-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 9K from remote
Uploaded 9K

:tapestry-jpa:compileJava UP-TO-DATE
:tapestry-jpa:compileGroovy UP-TO-DATE
:tapestry-jpa:processResources UP-TO-DATE
:tapestry-jpa:classes UP-TO-DATE
:tapestry-jpa:jar UP-TO-DATE
:tapestry-jpa:assemble UP-TO-DATE
:tapestry-jpa:compileTestJava UP-TO-DATE
:tapestry-jpa:compileTestGroovy UP-TO-DATE
:tapestry-jpa:processTestResources UP-TO-DATE
:tapestry-jpa:testClasses UP-TO-DATE
:tapestry-jpa:test UP-TO-DATE
:tapestry-jpa:check UP-TO-DATE
:tapestry-jpa:build UP-TO-DATE
:tapestry-jpa:sourcesJar UP-TO-DATE
:tapestry-jpa:uploadPublishedUploading: org/apache/tapestry/tapestry-jpa/5.4-SNAPSHOT/tapestry-jpa-5.4-20130520.223205-61.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 49K from remote
Uploaded 49K
Uploading: org/apache/tapestry/tapestry-jpa/5.4-SNAPSHOT/tapestry-jpa-5.4-20130520.223205-61-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 41K from remote
Uploaded 41K

:tapestry-json:assemble UP-TO-DATE
:tapestry-json:compileTestJava UP-TO-DATE
:tapestry-json:compileTestGroovy UP-TO-DATE
:tapestry-json:processTestResources UP-TO-DATE
:tapestry-json:testClasses UP-TO-DATE
:tapestry-json:test UP-TO-DATE
:tapestry-json:check UP-TO-DATE
:tapestry-json:build UP-TO-DATE
:tapestry-json:sourcesJar UP-TO-DATE
:tapestry-json:uploadPublishedUploading: org/apache/tapestry/tapestry-json/5.4-SNAPSHOT/tapestry-json-5.4-20130520.223215-61.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-json/5.4-SNAPSHOT/tapestry-json-5.4-20130520.223215-61-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 31K from remote
Uploaded 31K

:tapestry-kaptcha:compileJava UP-TO-DATE
:tapestry-kaptcha:compileGroovy UP-TO-DATE
:tapestry-kaptcha:processResources UP-TO-DATE
:tapestry-kaptcha:classes UP-TO-DATE
:tapestry-kaptcha:jar UP-TO-DATE
:tapestry-kaptcha:assemble UP-TO-DATE
:tapestry-kaptcha:compileTestJava UP-TO-DATE
:tapestry-kaptcha:compileTestGroovy UP-TO-DATE
:tapestry-kaptcha:processTestResources UP-TO-DATE
:tapestry-kaptcha:testClasses UP-TO-DATE
:tapestry-kaptcha:test UP-TO-DATE
:tapestry-kaptcha:check UP-TO-DATE
:tapestry-kaptcha:build UP-TO-DATE
:tapestry-kaptcha:sourcesJar UP-TO-DATE
:tapestry-kaptcha:uploadPublishedUploading: org/apache/tapestry/tapestry-kaptcha/5.4-SNAPSHOT/tapestry-kaptcha-5.4-20130520.223224-61.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 22K from remote
Uploaded 22K
Uploading: org/apache/tapestry/tapestry-kaptcha/5.4-SNAPSHOT/tapestry-kaptcha-5.4-20130520.223224-61-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 26K from remote
Uploaded 26K

:tapestry-mongodb:compileJava UP-TO-DATE
:tapestry-mongodb:compileGroovy UP-TO-DATE
:tapestry-mongodb:processResources UP-TO-DATE
:tapestry-mongodb:classes UP-TO-DATE
:tapestry-mongodb:jar UP-TO-DATE
:tapestry-mongodb:assemble UP-TO-DATE
:tapestry-mongodb:compileTestJava UP-TO-DATE
:tapestry-mongodb:compileTestGroovy UP-TO-DATE
:tapestry-mongodb:processTestResources UP-TO-DATE
:tapestry-mongodb:testClasses UP-TO-DATE
:tapestry-mongodb:test UP-TO-DATE
:tapestry-mongodb:check UP-TO-DATE
:tapestry-mongodb:build UP-TO-DATE
:tapestry-mongodb:sourcesJar UP-TO-DATE
:tapestry-mongodb:uploadPublishedUploading: org/apache/tapestry/tapestry-mongodb/5.4-SNAPSHOT/tapestry-mongodb-5.4-20130520.223234-25.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 12K from remote
Uploaded 12K
Uploading: org/apache/tapestry/tapestry-mongodb/5.4-SNAPSHOT/tapestry-mongodb-5.4-20130520.223234-25-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 10K from remote
Uploaded 10K

:tapestry-spring:compileJava UP-TO-DATE
:tapestry-spring:compileGroovy UP-TO-DATE
:tapestry-spring:processResources UP-TO-DATE
:tapestry-spring:classes UP-TO-DATE
:tapestry-spring:jar UP-TO-DATE
:tapestry-spring:assemble UP-TO-DATE
:tapestry-spring:compileTestJava UP-TO-DATE
:tapestry-spring:compileTestGroovy UP-TO-DATE
:tapestry-spring:processTestResources UP-TO-DATE
:tapestry-spring:testClasses UP-TO-DATE
:tapestry-spring:test UP-TO-DATE
:tapestry-spring:check UP-TO-DATE
:tapestry-spring:build UP-TO-DATE
:tapestry-spring:sourcesJar UP-TO-DATE
:tapestry-spring:uploadPublishedUploading: org/apache/tapestry/tapestry-spring/5.4-SNAPSHOT/tapestry-spring-5.4-20130520.223244-56.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 30K from remote
Uploaded 30K
Uploading: org/apache/tapestry/tapestry-spring/5.4-SNAPSHOT/tapestry-spring-5.4-20130520.223244-56-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 20K from remote
Uploaded 20K

:tapestry-test:assemble UP-TO-DATE
:tapestry-test:compileTestJava UP-TO-DATE
:tapestry-test:compileTestGroovy UP-TO-DATE
:tapestry-test:processTestResources UP-TO-DATE
:tapestry-test:testClasses UP-TO-DATE
:tapestry-test:test UP-TO-DATE
:tapestry-test:check UP-TO-DATE
:tapestry-test:build UP-TO-DATE
:tapestry-test:sourcesJar UP-TO-DATE
:tapestry-test:uploadPublishedUploading: org/apache/tapestry/tapestry-test/5.4-SNAPSHOT/tapestry-test-5.4-20130520.223253-56.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 455K from remote
Uploaded 455K
Uploading: org/apache/tapestry/tapestry-test/5.4-SNAPSHOT/tapestry-test-5.4-20130520.223253-56-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 32K from remote
Uploaded 32K

:tapestry-test-data:assemble UP-TO-DATE
:tapestry-test-data:compileTestJava UP-TO-DATE
:tapestry-test-data:compileTestGroovy UP-TO-DATE
:tapestry-test-data:processTestResources UP-TO-DATE
:tapestry-test-data:testClasses UP-TO-DATE
:tapestry-test-data:test UP-TO-DATE
:tapestry-test-data:check UP-TO-DATE
:tapestry-test-data:build UP-TO-DATE
:tapestry-test-data:sourcesJar UP-TO-DATE
:tapestry-test-data:uploadPublishedUploading: org/apache/tapestry/tapestry-test-data/5.4-SNAPSHOT/tapestry-test-data-5.4-20130520.223303-11.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 419K from remote
Uploaded 419K
Uploading: org/apache/tapestry/tapestry-test-data/5.4-SNAPSHOT/tapestry-test-data-5.4-20130520.223303-11-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 419K from remote
Uploaded 419K

:tapestry-upload:compileJava UP-TO-DATE
:tapestry-upload:compileGroovy UP-TO-DATE
:tapestry-upload:processResources UP-TO-DATE
:tapestry-upload:classes UP-TO-DATE
:tapestry-upload:jar UP-TO-DATE
:tapestry-upload:assemble UP-TO-DATE
:tapestry-upload:compileTestJava UP-TO-DATE
:tapestry-upload:compileTestGroovy UP-TO-DATE
:tapestry-upload:processTestResources UP-TO-DATE
:tapestry-upload:testClasses UP-TO-DATE
:tapestry-upload:test UP-TO-DATE
:tapestry-upload:check UP-TO-DATE
:tapestry-upload:build UP-TO-DATE
:tapestry-upload:sourcesJar UP-TO-DATE
:tapestry-upload:uploadPublishedUploading: org/apache/tapestry/tapestry-upload/5.4-SNAPSHOT/tapestry-upload-5.4-20130520.223316-56.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 25K from remote
Uploaded 25K
Uploading: org/apache/tapestry/tapestry-upload/5.4-SNAPSHOT/tapestry-upload-5.4-20130520.223316-56-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 26K from remote
Uploaded 26K

:tapestry-wro4j:compileJavaNote: &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/ws/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java&amp;gt; uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

:tapestry-wro4j:compileGroovy UP-TO-DATE
:tapestry-wro4j:processResources UP-TO-DATE
:tapestry-wro4j:classes
:tapestry-wro4j:jar
:tapestry-wro4j:assemble
:tapestry-wro4j:compileTestJava
:tapestry-wro4j:compileTestGroovy
:tapestry-wro4j:processTestResources UP-TO-DATE
:tapestry-wro4j:testClasses
:tapestry-wro4j:test
:tapestry-wro4j:check
:tapestry-wro4j:build
:tapestry-wro4j:sourcesJar
:tapestry-wro4j:uploadPublishedUploading: org/apache/tapestry/tapestry-wro4j/5.4-SNAPSHOT/tapestry-wro4j-5.4-20130520.223329-5.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 23K from remote
Uploaded 23K
Uploading: org/apache/tapestry/tapestry-wro4j/5.4-SNAPSHOT/tapestry-wro4j-5.4-20130520.223329-5-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 19K from remote
Uploaded 19K

:tapestry5-annotations:assemble UP-TO-DATE
:tapestry5-annotations:compileTestJava UP-TO-DATE
:tapestry5-annotations:compileTestGroovy UP-TO-DATE
:tapestry5-annotations:processTestResources UP-TO-DATE
:tapestry5-annotations:testClasses UP-TO-DATE
:tapestry5-annotations:test UP-TO-DATE
:tapestry5-annotations:check UP-TO-DATE
:tapestry5-annotations:build UP-TO-DATE
:tapestry5-annotations:sourcesJar UP-TO-DATE
:tapestry5-annotations:uploadPublishedUploading: org/apache/tapestry/tapestry5-annotations/5.4-SNAPSHOT/tapestry5-annotations-5.4-20130520.223338-55.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 15K from remote
Uploaded 15K
Uploading: org/apache/tapestry/tapestry5-annotations/5.4-SNAPSHOT/tapestry5-annotations-5.4-20130520.223338-55-sources.jar to repository remote at https://repository.apache.org/content/repositories/snapshots
Transferring 24K from remote
Uploaded 24K

:continuousIntegration

BUILD SUCCESSFUL

Total time: 4 mins 57.667 secs
[tapestry-trunk-freestyle] $ /bin/bash -xe /tmp/hudson1906659064808262807.sh
+ pkill Xvfb
Recording test results
Test reports were found but none of them are new. Did tests run? 
For example, &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/ws/plastic/build/test-results/TEST-org.apache.tapestry5.internal.plastic.ClassInstantiatorTests.xml&amp;gt; is 2 mo 22 days old

Build step 'Publish JUnit test result report' changed build result to FAILURE
TestNG Reports Processing: START
Looking for TestNG results report in workspace using pattern: **/build/reports/tests/testng-results.xml
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
testng-results.xml was last modified before this build started. Ignoring it.
Saving reports...
Found matching files but did not find any TestNG results.
&lt;/pre&gt;</description>
    <dc:creator>Apache Jenkins Server</dc:creator>
    <dc:date>2013-05-20T22:36:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53812">
    <title>[3/4] git commit: Enable JavaScript Minification using Google Closure compiler</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53812</link>
    <description>&lt;pre&gt;Enable JavaScript Minification using Google Closure compiler


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

Branch: refs/heads/master
Commit: d1aa91101fb7881680b43c96840b976aaf43fb11
Parents: 1f04d76
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Mon May 20 22:28:44 2013 +0100
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Mon May 20 22:28:44 2013 +0100

----------------------------------------------------------------------
 .../internal/wro4j/JavaScriptMinimizer.java        |   43 +++++++++++++++
 .../tapestry5/wro4j/modules/WRO4JModule.java       |   24 ++++++++
 2 files changed, 67 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1aa9110/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/JavaScriptMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/JavaScriptMinimizer.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/JavaScriptMinimizer.java
new file mode 100644
index 0000000..7e11577
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/JavaScriptMinimizer.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,43 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+// 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.wro4j;
+
+import org.apache.tapestry5.ioc.OperationTracker;
+import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
+import org.apache.tapestry5.services.assets.StreamableResource;
+import org.apache.tapestry5.wro4j.services.ResourceProcessor;
+import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
+import org.slf4j.Logger;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class JavaScriptMinimizer extends AbstractMinimizer
+{
+    private final ResourceProcessor processor;
+
+    public JavaScriptMinimizer(Logger logger, OperationTracker tracker, AssetChecksumGenerator checksumGenerator, ResourceProcessorSource processorSource)
+    {
+        super(logger, tracker, checksumGenerator, "text/javascript");
+
+        processor = processorSource.getProcessor("JavaScriptMinimizer");
+    }
+
+    &amp;lt; at &amp;gt;Override
+    protected InputStream doMinimize(StreamableResource resource) throws IOException
+    {
+        return processor.process("Minimizing " + resource, resource.getDescription(), resource.openStream(), "text/javascript");
+    }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d1aa9110/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
index dbf264b..108858b 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,6 +16,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; package org.apache.tapestry5.wro4j.modules;
 
 import org.apache.tapestry5.internal.wro4j.CSSMinimizer;
 import org.apache.tapestry5.internal.wro4j.CoffeeScriptResourceCompiler;
+import org.apache.tapestry5.internal.wro4j.JavaScriptMinimizer;
 import org.apache.tapestry5.internal.wro4j.ResourceProcessorSourceImpl;
 import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.ObjectCreator;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -27,6 +28,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import org.apache.tapestry5.services.assets.ResourceMinimizer;
 import org.apache.tapestry5.services.assets.ResourceTransformer;
 import org.apache.tapestry5.services.assets.StreamableResourceSource;
 import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
+import ro.isdc.wro.extensions.processor.js.GoogleClosureCompressorProcessor;
 import ro.isdc.wro.extensions.processor.js.RhinoCoffeeScriptProcessor;
 import ro.isdc.wro.extensions.processor.support.coffeescript.CoffeeScript;
 import ro.isdc.wro.model.resource.processor.impl.css.CssCompressorProcessor;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,6 +45,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
         binder.bind(ResourceProcessorSource.class, ResourceProcessorSourceImpl.class);
     }
 
+    /**
+     * Configures the default set of processors.
+     * &amp;lt;dl&amp;gt;
+     * &amp;lt;dt&amp;gt;CoffeeScriptCompiler&amp;lt;/dt&amp;gt; &amp;lt;dd&amp;gt;{&amp;lt; at &amp;gt;link RhinoCoffeeScriptProcessor}, configured as with --bare&amp;lt;/dd&amp;gt;
+     * &amp;lt;dt&amp;gt;CSSMinimizer&amp;lt;/dt&amp;gt; &amp;lt;dd&amp;gt;{&amp;lt; at &amp;gt;link CssCompressorProcessor} (see &amp;lt;a href="https://github.com/andyroberts/csscompressor"&amp;gt;csscompressor on GitHub&amp;lt;/a&amp;gt;&amp;lt;/dd&amp;gt;
+     * &amp;lt;dt&amp;gt;JavaScriptMinimizer&amp;lt;/dt&amp;gt;
+     * &amp;lt;dd&amp;gt;{&amp;lt; at &amp;gt;link GoogleClosureCompressorProcessor} configured for simple optimizations. Advanced optimizations assume that all code is loaded
+     * in a single bundle, not a given for Tapestry.&amp;lt;/dd&amp;gt;
+     * &amp;lt;/dl&amp;gt;
+     *
+     * &amp;lt; at &amp;gt;param configuration
+     * &amp;lt; at &amp;gt;param locator
+     */
     &amp;lt; at &amp;gt;Contribute(ResourceProcessorSource.class)
     public static void provideDefaultProcessors(MappedConfiguration&amp;lt;String, ObjectCreator&amp;gt; configuration, final ObjectLocator locator)
     {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -71,6 +86,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
                 return new CssCompressorProcessor();
             }
         });
+
+        configuration.add("JavaScriptMinimizer", new ObjectCreator()
+        {
+            public Object createObject()
+            {
+                return new GoogleClosureCompressorProcessor();
+            }
+        });
     }
 
     &amp;lt; at &amp;gt;Contribute(StreamableResourceSource.class)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -85,5 +108,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
     public static void setupDefaultResourceMinimizers(MappedConfiguration&amp;lt;String, ResourceMinimizer&amp;gt; configuration)
     {
         configuration.addInstance("text/css", CSSMinimizer.class);
+        configuration.addInstance("text/javascript", JavaScriptMinimizer.class);
     }
 }


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-20T21:32:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53811">
    <title>[1/4] git commit: Setup CSS Minimization</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53811</link>
    <description>&lt;pre&gt;Updated Branches:
  refs/heads/master 29de524cc -&amp;gt; d111e421b


Setup CSS Minimization


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

Branch: refs/heads/master
Commit: aba68ad6b9e445e3e9a56a53d3525d2100930e71
Parents: 29de524
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Mon May 20 22:08:33 2013 +0100
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Mon May 20 22:10:24 2013 +0100

----------------------------------------------------------------------
 .../internal/wro4j/AbstractMinimizer.java          |   38 ++++----------
 .../tapestry5/internal/wro4j/CSSMinimizer.java     |   29 +++++++++++
 .../wro4j/CoffeeScriptResourceCompiler.java        |    2 +-
 .../wro4j/ResourceProcessorSourceImpl.java         |   11 +++-
 .../tapestry5/wro4j/modules/WRO4JModule.java       |   23 ++++++++-
 .../wro4j/services/ResourceProcessor.java          |    4 +-
 .../src/test/java/t5/wro4j/services/AppModule.java |    3 +-
 7 files changed, 76 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/AbstractMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/AbstractMinimizer.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/AbstractMinimizer.java
index 37a0f62..05be59f 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/AbstractMinimizer.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/AbstractMinimizer.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -14,19 +14,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 package org.apache.tapestry5.internal.wro4j;
 
+import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.services.assets.BytestreamCache;
 import org.apache.tapestry5.internal.services.assets.StreamableResourceImpl;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
 import org.apache.tapestry5.services.assets.CompressionStatus;
 import org.apache.tapestry5.services.assets.ResourceMinimizer;
 import org.apache.tapestry5.services.assets.StreamableResource;
 import org.slf4j.Logger;
 
-import javax.management.RuntimeErrorException;
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 
 /**
  * Base class for resource minimizers.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -57,29 +58,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public abstract class AbstractMinimizer implements ResourceMinimizer
     {
         long startNanos = System.nanoTime();
 
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
+        final ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
 
-        final Writer writer = new OutputStreamWriter(bos);
-
-        tracker.perform("Minimizing " + resourceType, new IOOperation&amp;lt;Void&amp;gt;()
+        tracker.perform("Minimizing " + input, new IOOperation&amp;lt;Void&amp;gt;()
         {
             public Void perform() throws IOException
             {
-                try
-                {
-                    doMinimize(input, writer);
-                } catch (RuntimeErrorException ex)
-                {
-                    throw new RuntimeException(String.format("Unable to minimize %s: %s", resourceType,
-                            ExceptionUtils.toMessage(ex)), ex);
-                }
+                InputStream in = doMinimize(input);
+
+                TapestryInternalUtils.copy(in, bos);
 
                 return null;
             }
         });
 
-        writer.close();
-
         // The content is minimized, but can still be (GZip) compressed.
 
         StreamableResource output = new StreamableResourceImpl("minimized " + input.getDescription(),
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -104,20 +96,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public abstract class AbstractMinimizer implements ResourceMinimizer
         return output;
     }
 
-    protected Reader toReader(StreamableResource input) throws IOException
-    {
-        InputStream is = input.openStream();
-
-        return new InputStreamReader(is, "UTF-8");
-    }
-
     /**
      * Implemented in subclasses to do the actual work.
      *
      * &amp;lt; at &amp;gt;param resource
      *         content to minimize
-     * &amp;lt; at &amp;gt;param output
-     *         writer for minimized version of input
+     * &amp;lt; at &amp;gt;return stream of minimized content
      */
-    protected abstract void doMinimize(StreamableResource resource, Writer output) throws IOException;
+    protected abstract InputStream doMinimize(StreamableResource resource) throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
new file mode 100644
index 0000000..b06a5c8
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,29 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+package org.apache.tapestry5.internal.wro4j;
+
+import org.apache.tapestry5.ioc.OperationTracker;
+import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
+import org.apache.tapestry5.services.assets.StreamableResource;
+import org.apache.tapestry5.wro4j.services.ResourceProcessor;
+import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
+import org.slf4j.Logger;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class CSSMinimizer extends AbstractMinimizer
+{
+    private final ResourceProcessor processor;
+
+    public CSSMinimizer(Logger logger, OperationTracker tracker, AssetChecksumGenerator checksumGenerator, ResourceProcessorSource processorSource)
+    {
+        super(logger, tracker, checksumGenerator, "text/css");
+
+        processor = processorSource.getProcessor("CSSMinimizer");
+    }
+
+    &amp;lt; at &amp;gt;Override
+    protected InputStream doMinimize(StreamableResource resource) throws IOException
+    {
+        return processor.process("Minimizing " + resource, resource.getDescription(), resource.openStream(), "text/css");
+    }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
index 558e3e4..432dfe5 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CoffeeScriptResourceCompiler.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -58,7 +58,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class CoffeeScriptResourceCompiler implements ResourceTransformer
 
         InputStream result = compiler.process(String.format("Compiling %s from CoffeeScript to JavaScript", source),
                 source.toURL().toString(),
-                source.openStream());
+                source.openStream(), "text/javascript");
 
         final long elapsedTime = System.nanoTime() - startTime;
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
index 4536592..266832c 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -35,9 +35,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceProcessorSourceImpl implements ResourceProcessorSource
 
     private final Map&amp;lt;String, ResourceProcessor&amp;gt; cache = CollectionFactory.newCaseInsensitiveMap();
 
+    private final Map&amp;lt;String, ResourceType&amp;gt; contentType2resourceType = CollectionFactory.newMap();
+
+
     public ResourceProcessorSourceImpl(Map&amp;lt;String, ObjectCreator&amp;gt; configuration)
     {
         this.configuration = configuration;
+
+        contentType2resourceType.put("text/css", ResourceType.CSS);
+        contentType2resourceType.put("text/javascript", ResourceType.JS);
     }
 
     // Not called very often so synchronized is easier.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -67,10 +73,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class ResourceProcessorSourceImpl implements ResourceProcessorSource
 
         return new ResourceProcessor()
         {
-            public InputStream process(String operationDescription, String inputURL, InputStream input) throws IOException
+            public InputStream process(String operationDescription, String inputURL, InputStream input, String contentType) throws IOException
             {
-                // That second parameter will cause us some grief, shortly:
-                Resource resource = Resource.create(inputURL, ResourceType.JS);
+                Resource resource = Resource.create(inputURL, contentType2resourceType.get(contentType));
 
                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(5000);
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
index edd4f99..dbf264b 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/modules/WRO4JModule.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -14,17 +14,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 package org.apache.tapestry5.wro4j.modules;
 
+import org.apache.tapestry5.internal.wro4j.CSSMinimizer;
 import org.apache.tapestry5.internal.wro4j.CoffeeScriptResourceCompiler;
 import org.apache.tapestry5.internal.wro4j.ResourceProcessorSourceImpl;
 import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.ObjectCreator;
+import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
+import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.services.assets.ResourceMinimizer;
 import org.apache.tapestry5.services.assets.ResourceTransformer;
 import org.apache.tapestry5.services.assets.StreamableResourceSource;
 import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
 import ro.isdc.wro.extensions.processor.js.RhinoCoffeeScriptProcessor;
 import ro.isdc.wro.extensions.processor.support.coffeescript.CoffeeScript;
+import ro.isdc.wro.model.resource.processor.impl.css.CssCompressorProcessor;
 
 /**
  * Configures CoffeeScript-to-JavaScript compilation.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,7 +44,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
     }
 
     &amp;lt; at &amp;gt;Contribute(ResourceProcessorSource.class)
-    public static void provideDefaultProcessors(MappedConfiguration&amp;lt;String, ObjectCreator&amp;gt; configuration)
+    public static void provideDefaultProcessors(MappedConfiguration&amp;lt;String, ObjectCreator&amp;gt; configuration, final ObjectLocator locator)
     {
         configuration.add("CoffeeScriptCompiler",
                 new ObjectCreator()
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -57,6 +62,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
                     }
                 }
         );
+
+
+        configuration.add("CSSMinimizer", new ObjectCreator()
+        {
+            public Object createObject()
+            {
+                return new CssCompressorProcessor();
+            }
+        });
     }
 
     &amp;lt; at &amp;gt;Contribute(StreamableResourceSource.class)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -65,4 +79,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class WRO4JModule
     {
         configuration.addInstance("coffee", CoffeeScriptResourceCompiler.class);
     }
+
+    &amp;lt; at &amp;gt;Contribute(ResourceMinimizer.class)
+    &amp;lt; at &amp;gt;Primary
+    public static void setupDefaultResourceMinimizers(MappedConfiguration&amp;lt;String, ResourceMinimizer&amp;gt; configuration)
+    {
+        configuration.addInstance("text/css", CSSMinimizer.class);
+    }
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessor.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessor.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessor.java
index d63e800..5e88521 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessor.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessor.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,14 +30,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public interface ResourceProcessor
     /**
      * Processes an input stream, producing an output stream.
      *
+     *
      * &amp;lt; at &amp;gt;param operationDescription
      *         used to {&amp;lt; at &amp;gt;linkplain org.apache.tapestry5.ioc.OperationTracker#perform(String, org.apache.tapestry5.ioc.IOOperation) track the operation}
      * &amp;lt; at &amp;gt;param inputURL
      *         represents the resource being processed (typically, just used for error reporting)
      * &amp;lt; at &amp;gt;param input
      *         stream of bytes to process
+     * &amp;lt; at &amp;gt;param contentType "text/javascript" or "text/css"
      * &amp;lt; at &amp;gt;return processed stream
      * &amp;lt; at &amp;gt;throws IOException
      */
-    InputStream process(String operationDescription, String inputURL, InputStream input) throws IOException;
+    InputStream process(String operationDescription, String inputURL, InputStream input, String contentType) throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/aba68ad6/tapestry-wro4j/src/test/java/t5/wro4j/services/AppModule.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/test/java/t5/wro4j/services/AppModule.java b/tapestry-wro4j/src/test/java/t5/wro4j/services/AppModule.java
index 82792e1..0d7f1e0 100644
--- a/tapestry-wro4j/src/test/java/t5/wro4j/services/AppModule.java
+++ b/tapestry-wro4j/src/test/java/t5/wro4j/services/AppModule.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -22,8 +22,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; public class AppModule
 
     &amp;lt; at &amp;gt;Contribute(SymbolProvider.class)
     &amp;lt; at &amp;gt;ApplicationDefaults
-    public static void enableJQuery(MappedConfiguration&amp;lt;String, Object&amp;gt; configuration)
+    public static void setupEnvironment(MappedConfiguration&amp;lt;String, Object&amp;gt; configuration)
     {
         configuration.add(SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER, "jquery");
+        configuration.add(SymbolConstants.MINIFICATION_ENABLED, true);
     }
 }


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-20T21:32:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53810">
    <title>[4/4] git commit: Update release notes</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53810</link>
    <description>&lt;pre&gt;Update release notes


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

Branch: refs/heads/master
Commit: d111e421bba1171da03d9729d2e27967068048f9
Parents: d1aa911
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Mon May 20 22:32:11 2013 +0100
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Mon May 20 22:32:11 2013 +0100

----------------------------------------------------------------------
 54_RELEASE_NOTES.txt |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d111e421/54_RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index 477d4f0..0ce07d9 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -57,6 +57,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; asset URLs are distinct.
 Tapestry 5.4 now re-writes CSS files, expanding any `url()` references in them into fully qualify URLs; this
 is to allow for the checksum embedded into each URL, which breaks relative references.
 
+Tapestry 5.4 introduces a new module, tapestry-wro4j, that provides support for compiling CoffeeScript and JavaScript,
+and for minimizing CSS and JavaScript. All processing takes place at runtime.
+
 ## ControlGroup Mixin
 
 This new mixin for Field components adds the outer &amp;lt;div&amp;gt; and &amp;lt;label&amp;gt; elements for a Field to layout correctly
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -86,6 +89,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; The WRO4J support is separate and optional, as it is not an Apache Software Foun
 large number of dependencies needed to run the various processors (some of which are written in Ruby and require JRuby,
 for example).
 
+By default, tapestry-wro4j enables:
+- compilation of CoffeeScript to JavaScript (using Java's Rhino JavaScript engine)
+- minification of CSS using Andy Robert's csscompressor
+- minification of JavaScript using the Google Closure compiler (in simple optimizations mode)
+
 ## RenderSupport Removed
 
 The RenderSupport interface, which was deprecated in Tapestry 5.2, has been removed entirely.


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-20T21:32:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53809">
    <title>[2/4] git commit: Missing copyright</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53809</link>
    <description>&lt;pre&gt;Missing copyright


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

Branch: refs/heads/master
Commit: 1f04d76e2ee44593e26c4d2afe4be18bd62236f8
Parents: aba68ad
Author: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Authored: Mon May 20 22:14:10 2013 +0100
Committer: Howard M. Lewis Ship &amp;lt;hlship&amp;lt; at &amp;gt;apache.org&amp;gt;
Committed: Mon May 20 22:14:10 2013 +0100

----------------------------------------------------------------------
 .../tapestry5/internal/wro4j/CSSMinimizer.java     |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1f04d76e/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
index b06a5c8..f5b7033 100644
--- a/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/CSSMinimizer.java
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,3 +1,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+// 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.wro4j;
 
 import org.apache.tapestry5.ioc.OperationTracker;


&lt;/pre&gt;</description>
    <dc:creator>hlship&lt; at &gt;apache.org</dc:creator>
    <dc:date>2013-05-20T21:32:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53808">
    <title>[jira] [Commented] (TAP5-2106) Tapestry should pass CSS file URLs that are not relative file references (inlcuding VML URLs) through unchanged</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53808</link>
    <description>&lt;pre&gt;
    [ https://issues.apache.org/jira/browse/TAP5-2106?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;amp;focusedCommentId=13662337#comment-13662337 ] 

Dimitris Zenios commented on TAP5-2106:
---------------------------------------

It looks like is still not fixed.

&amp;lt; at &amp;gt;import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
 * Default theme for reveal.js.
 *
 * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
 */
&amp;lt; at &amp;gt;font-face {
  font-family: 'League Gothic';
  src: url("../../lib/font/league_gothic-webfont.eot");
  src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
  font-weight: normal;
  font-style: normal; }


This piece of code is not replaced correctly.This is the result

&amp;lt; at &amp;gt;import url("https://fonts.googleapis.com/css");
/**
 * Default theme for reveal.js.
 *
 * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
 */
&amp;lt; at &amp;gt;font-face {
  font-family: 'League Gothic';
  src: url("/partner/assets/meta/11098f6a/reveal/lib/font/league_gothic-webfont.eot");
  src: url("/partner/assets/meta/11098f6a/reveal/lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
  font-weight: normal;
  font-style: normal; }


From the http import all the url parameters are removed and from the font face only the first one is being replaced
                

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

&lt;/pre&gt;</description>
    <dc:creator>Dimitris Zenios (JIRA</dc:creator>
    <dc:date>2013-05-20T20:37:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53807">
    <title>Re: Jenkins build is back to normal : tapestry-trunk-freestyle #1060</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53807</link>
    <description>&lt;pre&gt;Looks like we still have some non-determinism in the build; your changes
(thanks, BTW) shouldn't have affected the test results.


On Sun, May 19, 2013 at 1:48 AM, Apache Jenkins Server &amp;lt;
jenkins&amp;lt; at &amp;gt;builds.apache.org&amp;gt; wrote:



&lt;/pre&gt;</description>
    <dc:creator>Howard Lewis Ship</dc:creator>
    <dc:date>2013-05-20T15:52:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53806">
    <title>Jenkins build is back to normal : tapestry-trunk-freestyle #1060</title>
    <link>http://permalink.gmane.org/gmane.comp.jakarta.tapestry.devel/53806</link>
    <description>&lt;pre&gt;See &amp;lt;https://builds.apache.org/job/tapestry-trunk-freestyle/1060/changes&amp;gt;
&lt;/pre&gt;</description>
    <dc:creator>Apache Jenkins Server</dc:creator>
    <dc:date>2013-05-19T08:48:57</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.jakarta.tapestry.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.jakarta.tapestry.devel</link>
  </textinput>
</rdf:RDF>
