You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2013/05/17 19:14:52 UTC

[3/3] git commit: Remove tapestry-yuicompressor Build improved/overridable infrastructure for tapestry-wro4j

Remove tapestry-yuicompressor
Build improved/overridable infrastructure for tapestry-wro4j


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

Branch: refs/heads/master
Commit: 32beedda3426c5b90b93b5cc42d8535df4979f3a
Parents: a5600e8
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Fri May 17 10:14:44 2013 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Fri May 17 10:14:44 2013 -0700

----------------------------------------------------------------------
 54_RELEASE_NOTES.txt                               |   14 +
 settings.gradle                                    |    2 +-
 .../internal/wro4j/AbstractMinimizer.java          |  123 ++++
 .../wro4j/CoffeeScriptResourceCompiler.java        |   67 +--
 .../wro4j/ResourceProcessorSourceImpl.java         |   83 +++
 .../tapestry5/wro4j/modules/WRO4JModule.java       |   35 +-
 .../wro4j/services/ResourceProcessor.java          |   43 ++
 .../wro4j/services/ResourceProcessorSource.java    |   39 ++
 tapestry-yuicompressor/LICENSE-2.0.txt             |  202 ------
 tapestry-yuicompressor/NOTICE.txt                  |  492 ---------------
 tapestry-yuicompressor/build.gradle                |   15 -
 .../internal/yuicompressor/AbstractMinimizer.java  |  123 ----
 .../yuicompressor/CSSResourceMinimizer.java        |   53 --
 .../yuicompressor/JavaScriptResourceMinimizer.java |  269 --------
 .../internal/yuicompressor/package-info.java       |   18 -
 .../yuicompressor/modules/YuiCompressorModule.java |   43 --
 .../yuicompressor/modules/package-info.java        |   18 -
 tapestry-yuicompressor/src/test/conf/testng.xml    |   11 -
 .../itest/YUICompressorIntegrationTests.groovy     |   61 --
 .../yuicompressor/testapp/pages/BadJavaScript.java |    9 -
 .../java/yuicompressor/testapp/pages/Index.java    |   55 --
 .../yuicompressor/testapp/services/AppModule.java  |   23 -
 .../src/test/resources/log4j.properties            |   17 -
 .../yuicompressor/testapp/pages/BadJavaScript.tml  |    6 -
 .../yuicompressor/testapp/pages/Index.tml          |   26 -
 .../resources/yuicompressor/testapp/pages/bad.js   |   30 -
 .../src/test/webapp/WEB-INF/web.xml                |   19 -
 27 files changed, 356 insertions(+), 1540 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/54_RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt
index da6c633..477d4f0 100644
--- a/54_RELEASE_NOTES.txt
+++ b/54_RELEASE_NOTES.txt
@@ -72,6 +72,20 @@ The useful RandomDataSource class has been extracted into a new module, tapestry
 
 # Breaking Changes:
 
+## tapestry-yuicompressor replaced with tapestry-wro4j
+
+The tapestry-yuicompressor module has been removed and superseded by tapestry-wro4j. WRO4J (Web Resource
+Optimizer for Java) is a Apache-licensed project that provides support for CoffeeScript support, Less and
+SASS processing, and various forms of JavaScript and CSS minimization. The new tapestry-wro4j module enables
+a base set of these.
+
+With tapestry-wro4j in place, you can write your client-side code in CoffeeScript (with the ".coffee" file
+extension) and Tapestry will take care of converting it, at runtime, to JavaScript.
+
+The WRO4J support is separate and optional, as it is not an Apache Software Foundation project, and it has a
+large number of dependencies needed to run the various processors (some of which are written in Ruby and require JRuby,
+for example).
+
 ## RenderSupport Removed
 
 The RenderSupport interface, which was deprecated in Tapestry 5.2, has been removed entirely.

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/settings.gradle
----------------------------------------------------------------------
diff --git a/settings.gradle b/settings.gradle
index 4338dbc..6b3e63f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,6 +1,6 @@
 include "plastic", "tapestry5-annotations", "tapestry-test", "tapestry-func", "tapestry-ioc", "tapestry-json", "tapestry-core"
 include "tapestry-hibernate-core", "tapestry-hibernate", "tapestry-jmx", "tapestry-upload", "tapestry-spring"
-include "tapestry-beanvalidator", "tapestry-yuicompressor", "tapestry-jpa", "tapestry-kaptcha"
+include "tapestry-beanvalidator", "tapestry-jpa", "tapestry-kaptcha"
 include "tapestry-javadoc", "quickstart", "tapestry-clojure", "tapestry-mongodb"
 include "tapestry-test-data", 'tapestry-internal-test'
 include "tapestry-wro4j"

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/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
new file mode 100644
index 0000000..37a0f62
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/AbstractMinimizer.java
@@ -0,0 +1,123 @@
+// Copyright 2011-2013 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// 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.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.*;
+
+/**
+ * Base class for resource minimizers.
+ *
+ * @since 5.3
+ */
+public abstract class AbstractMinimizer implements ResourceMinimizer
+{
+    private static final double NANOS_TO_MILLIS = 1.0d / 1000000.0d;
+
+    protected final Logger logger;
+
+    protected final OperationTracker tracker;
+
+    private final AssetChecksumGenerator checksumGenerator;
+
+    private final String resourceType;
+
+    public AbstractMinimizer(Logger logger, OperationTracker tracker, AssetChecksumGenerator checksumGenerator, String resourceType)
+    {
+        this.logger = logger;
+        this.tracker = tracker;
+        this.resourceType = resourceType;
+        this.checksumGenerator = checksumGenerator;
+    }
+
+    public StreamableResource minimize(final StreamableResource input) throws IOException
+    {
+        long startNanos = System.nanoTime();
+
+        ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
+
+        final Writer writer = new OutputStreamWriter(bos);
+
+        tracker.perform("Minimizing " + resourceType, new IOOperation<Void>()
+        {
+            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);
+                }
+
+                return null;
+            }
+        });
+
+        writer.close();
+
+        // The content is minimized, but can still be (GZip) compressed.
+
+        StreamableResource output = new StreamableResourceImpl("minimized " + input.getDescription(),
+                input.getContentType(), CompressionStatus.COMPRESSABLE,
+                input.getLastModified(), new BytestreamCache(bos), checksumGenerator);
+
+        if (logger.isInfoEnabled())
+        {
+            long elapsedNanos = System.nanoTime() - startNanos;
+
+            int inputSize = input.getSize();
+            int outputSize = output.getSize();
+
+            double elapsedMillis = ((double) elapsedNanos) * NANOS_TO_MILLIS;
+            // e.g., reducing 100 bytes to 25 would be a (100-25)/100 reduction, or 75%
+            double reduction = 100d * ((double) (inputSize - outputSize)) / ((double) inputSize);
+
+            logger.info(String.format("Minimized %s (%,d input bytes of %s to %,d output bytes in %.2f ms, %.2f%% reduction)",
+                    input.getDescription(), inputSize, resourceType, outputSize, elapsedMillis, reduction));
+        }
+
+        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.
+     *
+     * @param resource
+     *         content to minimize
+     * @param output
+     *         writer for minimized version of input
+     */
+    protected abstract void doMinimize(StreamableResource resource, Writer output) throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/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 9dd9ed3..558e3e4 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
@@ -14,23 +14,20 @@
 
 package org.apache.tapestry5.internal.wro4j;
 
-import org.apache.tapestry5.internal.services.assets.BytestreamCache;
-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;
+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 ro.isdc.wro.extensions.processor.support.coffeescript.CoffeeScript;
-import ro.isdc.wro.model.resource.ResourceType;
-import ro.isdc.wro.model.resource.processor.ResourcePreProcessor;
 
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
 
 /**
  * Compiles CoffeeScript to JavaScript, using {@link RhinoCoffeeScriptProcessor}. Because what is most commonly written
- * are AMD Modules, which have (effectively) an implicit hygenic function wrapper, we compile as with "--bare".
+ * are AMD Modules, which have (effectively) an implicit hygienic function wrapper, we compile as with "--bare".
  *
  * @since 5.4
  */
@@ -38,25 +35,16 @@ public class CoffeeScriptResourceCompiler implements ResourceTransformer
 {
     private final Logger logger;
 
-    private final OperationTracker tracker;
-
     private static final double NANOS_TO_MILLIS = 1.0d / 1000000.0d;
 
-    private final ResourcePreProcessor compiler =
-            new RhinoCoffeeScriptProcessor()
-            {
-
-                @Override
-                protected CoffeeScript newCoffeeScript()
-                {
-                    return new CoffeeScript().setOptions("bare");
-                }
-            };
+    private final ResourceProcessor compiler;
 
-    public CoffeeScriptResourceCompiler(Logger logger, OperationTracker tracker)
+    public CoffeeScriptResourceCompiler(Logger logger, ResourceProcessorSource processorSource)
     {
         this.logger = logger;
-        this.tracker = tracker;
+
+        // 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()
@@ -64,37 +52,20 @@ public class CoffeeScriptResourceCompiler implements ResourceTransformer
         return "text/javascript";
     }
 
-
     public InputStream transform(final Resource source, ResourceDependencies dependencies) throws IOException
     {
+        final long startTime = System.nanoTime();
 
-        return tracker.perform(String.format("Compiling %s from CoffeeScript to JavaScript", source),
-                new IOOperation<InputStream>()
-                {
-                    public InputStream perform() throws IOException
-                    {
-                        final long startTime = System.nanoTime();
-
-
-                        ro.isdc.wro.model.resource.Resource res = ro.isdc.wro.model.resource.Resource.create(
-                                source.toURL().toString(),
-                                ResourceType.JS);
-
-                        Reader reader = new InputStreamReader(source.openStream());
-                        ByteArrayOutputStream out = new ByteArrayOutputStream(5000);
-                        Writer writer = new OutputStreamWriter(out);
-
-                        compiler.process(res, reader, writer);
-
-                        final long elapsedTime = System.nanoTime() - startTime;
+        InputStream result = compiler.process(String.format("Compiling %s from CoffeeScript to JavaScript", source),
+                source.toURL().toString(),
+                source.openStream());
 
+        final long elapsedTime = System.nanoTime() - startTime;
 
-                        logger.info(String.format("Compiled %s to JavaScript in %.2f ms",
-                                source,
-                                ((double) elapsedTime) * NANOS_TO_MILLIS));
+        logger.info(String.format("Compiled %s to JavaScript in %.2f ms",
+                source,
+                ((double) elapsedTime) * NANOS_TO_MILLIS));
 
-                        return new BytestreamCache(out).openStream();
-                    }
-                });
+        return result;
     }
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/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
new file mode 100644
index 0000000..4536592
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/internal/wro4j/ResourceProcessorSourceImpl.java
@@ -0,0 +1,83 @@
+// 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.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;
+import org.apache.tapestry5.wro4j.services.ResourceProcessor;
+import org.apache.tapestry5.wro4j.services.ResourceProcessorSource;
+import ro.isdc.wro.model.resource.Resource;
+import ro.isdc.wro.model.resource.ResourceType;
+import ro.isdc.wro.model.resource.processor.ResourcePreProcessor;
+
+import java.io.*;
+import java.util.Map;
+
+public class ResourceProcessorSourceImpl implements ResourceProcessorSource
+{
+    private final Map<String, ObjectCreator> configuration;
+
+    private final Map<String, ResourceProcessor> cache = CollectionFactory.newCaseInsensitiveMap();
+
+    public ResourceProcessorSourceImpl(Map<String, ObjectCreator> configuration)
+    {
+        this.configuration = configuration;
+    }
+
+    // Not called very often so synchronized is easier.
+    public synchronized ResourceProcessor getProcessor(String name)
+    {
+        ResourceProcessor result = cache.get(name);
+
+        if (result == null)
+        {
+            result = create(name);
+            cache.put(name, result);
+        }
+
+        return result;
+    }
+
+    private ResourceProcessor create(String name)
+    {
+        ObjectCreator<ResourcePreProcessor> creator = configuration.get(name);
+
+        if (creator == null)
+        {
+            throw new UnknownValueException(String.format("Unknown resource processor '%s'.", name), new AvailableValues("configured processors", configuration));
+        }
+
+        final ObjectCreator<ResourcePreProcessor> lazyCreator = new CachingObjectCreator<ResourcePreProcessor>(creator);
+
+        return new ResourceProcessor()
+        {
+            public InputStream process(String operationDescription, String inputURL, InputStream input) throws IOException
+            {
+                // That second parameter will cause us some grief, shortly:
+                Resource resource = Resource.create(inputURL, ResourceType.JS);
+
+                ByteArrayOutputStream outputStream = new ByteArrayOutputStream(5000);
+
+                lazyCreator.createObject().process(resource, new InputStreamReader(input), new OutputStreamWriter(outputStream));
+
+                return new BytestreamCache(outputStream).openStream();
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/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 006448c..edd4f99 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
@@ -15,10 +15,16 @@
 package org.apache.tapestry5.wro4j.modules;
 
 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.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 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;
 
 /**
  * Configures CoffeeScript-to-JavaScript compilation.
@@ -27,8 +33,35 @@ import org.apache.tapestry5.services.assets.StreamableResourceSource;
  */
 public class WRO4JModule
 {
+    public static void bind(ServiceBinder binder)
+    {
+        binder.bind(ResourceProcessorSource.class, ResourceProcessorSourceImpl.class);
+    }
+
+    @Contribute(ResourceProcessorSource.class)
+    public static void provideDefaultProcessors(MappedConfiguration<String, ObjectCreator> configuration)
+    {
+        configuration.add("CoffeeScriptCompiler",
+                new ObjectCreator()
+                {
+                    public Object createObject()
+                    {
+                        return new RhinoCoffeeScriptProcessor()
+                        {
+                            @Override
+                            protected CoffeeScript newCoffeeScript()
+                            {
+                                return new CoffeeScript().setOptions("bare");
+                            }
+                        };
+                    }
+                }
+        );
+    }
+
     @Contribute(StreamableResourceSource.class)
-    public static void provideCoffeeScriptCompilation(MappedConfiguration<String, ResourceTransformer> configuration)
+    public static void provideCoffeeScriptCompilation
+            (MappedConfiguration<String, ResourceTransformer> configuration)
     {
         configuration.addInstance("coffee", CoffeeScriptResourceCompiler.class);
     }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/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
new file mode 100644
index 0000000..d63e800
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessor.java
@@ -0,0 +1,43 @@
+// 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.wro4j.services;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A wrapper around a WRO4J {@link ro.isdc.wro.model.resource.processor.ResourcePreProcessor}. This can represent
+ * a compilation process (such as CoffeeScript to JavaScript), or a transformation process (such as minimizing
+ * JavaScript or CSS).
+ *
+ * @see ResourceProcessorSource
+ * @since 5.4
+ */
+public interface ResourceProcessor
+{
+    /**
+     * Processes an input stream, producing an output stream.
+     *
+     * @param operationDescription
+     *         used to {@linkplain org.apache.tapestry5.ioc.OperationTracker#perform(String, org.apache.tapestry5.ioc.IOOperation) track the operation}
+     * @param inputURL
+     *         represents the resource being processed (typically, just used for error reporting)
+     * @param input
+     *         stream of bytes to process
+     * @return processed stream
+     * @throws IOException
+     */
+    InputStream process(String operationDescription, String inputURL, InputStream input) throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessorSource.java
----------------------------------------------------------------------
diff --git a/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessorSource.java b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessorSource.java
new file mode 100644
index 0000000..d09456a
--- /dev/null
+++ b/tapestry-wro4j/src/main/java/org/apache/tapestry5/wro4j/services/ResourceProcessorSource.java
@@ -0,0 +1,39 @@
+// 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.wro4j.services;
+
+import org.apache.tapestry5.ioc.ObjectCreator;
+import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
+
+/**
+ * Factory for {@link ResourceProcessor} instances; its configuration assigns names to {@linkplain ObjectCreator factories} that produce a {@link ro.isdc.wro.model.resource.processor.ResourcePreProcessor}, which is
+ * wrapped and returned as a {@link ResourceProcessor}.
+ *
+ * @since 5.4
+ */
+@UsesMappedConfiguration(ObjectCreator.class)
+public interface ResourceProcessorSource
+{
+    /**
+     * Returns the processor (which are cached once created)
+     *
+     * @param name
+     *         name identifying the processor.
+     * @return the processor
+     * @throws RuntimeException
+     *         if no processor with name exists
+     */
+    ResourceProcessor getProcessor(String name);
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/LICENSE-2.0.txt
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/LICENSE-2.0.txt b/tapestry-yuicompressor/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/tapestry-yuicompressor/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   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.

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/NOTICE.txt
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/NOTICE.txt b/tapestry-yuicompressor/NOTICE.txt
deleted file mode 100644
index 91ca961..0000000
--- a/tapestry-yuicompressor/NOTICE.txt
+++ /dev/null
@@ -1,492 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-
-This product requires the Rhino JavaScript interpreter (http://www.mozilla.org/rhino/),
-which uses the Mozilla Public License 1.1:
-
-                          MOZILLA PUBLIC LICENSE
-                                Version 1.1
-
-                              ---------------
-
-1. Definitions.
-
-     1.0.1. "Commercial Use" means distribution or otherwise making the
-     Covered Code available to a third party.
-
-     1.1. "Contributor" means each entity that creates or contributes to
-     the creation of Modifications.
-
-     1.2. "Contributor Version" means the combination of the Original
-     Code, prior Modifications used by a Contributor, and the Modifications
-     made by that particular Contributor.
-
-     1.3. "Covered Code" means the Original Code or Modifications or the
-     combination of the Original Code and Modifications, in each case
-     including portions thereof.
-
-     1.4. "Electronic Distribution Mechanism" means a mechanism generally
-     accepted in the software development community for the electronic
-     transfer of data.
-
-     1.5. "Executable" means Covered Code in any form other than Source
-     Code.
-
-     1.6. "Initial Developer" means the individual or entity identified
-     as the Initial Developer in the Source Code notice required by Exhibit
-     A.
-
-     1.7. "Larger Work" means a work which combines Covered Code or
-     portions thereof with code not governed by the terms of this License.
-
-     1.8. "License" means this document.
-
-     1.8.1. "Licensable" means having the right to grant, to the maximum
-     extent possible, whether at the time of the initial grant or
-     subsequently acquired, any and all of the rights conveyed herein.
-
-     1.9. "Modifications" means any addition to or deletion from the
-     substance or structure of either the Original Code or any previous
-     Modifications. When Covered Code is released as a series of files, a
-     Modification is:
-          A. Any addition to or deletion from the contents of a file
-          containing Original Code or previous Modifications.
-
-          B. Any new file that contains any part of the Original Code or
-          previous Modifications.
-
-     1.10. "Original Code" means Source Code of computer software code
-     which is described in the Source Code notice required by Exhibit A as
-     Original Code, and which, at the time of its release under this
-     License is not already Covered Code governed by this License.
-
-     1.10.1. "Patent Claims" means any patent claim(s), now owned or
-     hereafter acquired, including without limitation,  method, process,
-     and apparatus claims, in any patent Licensable by grantor.
-
-     1.11. "Source Code" means the preferred form of the Covered Code for
-     making modifications to it, including all modules it contains, plus
-     any associated interface definition files, scripts used to control
-     compilation and installation of an Executable, or source code
-     differential comparisons against either the Original Code or another
-     well known, available Covered Code of the Contributor's choice. The
-     Source Code can be in a compressed or archival form, provided the
-     appropriate decompression or de-archiving software is widely available
-     for no charge.
-
-     1.12. "You" (or "Your")  means an individual or a legal entity
-     exercising rights under, and complying with all of the terms of, this
-     License or a future version of this License issued under Section 6.1.
-     For legal entities, "You" includes any entity which controls, is
-     controlled by, or is under common control with You. For purposes of
-     this definition, "control" means (a) the power, direct or indirect,
-     to cause the direction or management of such entity, whether by
-     contract or otherwise, or (b) ownership of more than fifty percent
-     (50%) of the outstanding shares or beneficial ownership of such
-     entity.
-
-2. Source Code License.
-
-     2.1. The Initial Developer Grant.
-     The Initial Developer hereby grants You a world-wide, royalty-free,
-     non-exclusive license, subject to third party intellectual property
-     claims:
-          (a)  under intellectual property rights (other than patent or
-          trademark) Licensable by Initial Developer to use, reproduce,
-          modify, display, perform, sublicense and distribute the Original
-          Code (or portions thereof) with or without Modifications, and/or
-          as part of a Larger Work; and
-
-          (b) under Patents Claims infringed by the making, using or
-          selling of Original Code, to make, have made, use, practice,
-          sell, and offer for sale, and/or otherwise dispose of the
-          Original Code (or portions thereof).
-
-          (c) the licenses granted in this Section 2.1(a) and (b) are
-          effective on the date Initial Developer first distributes
-          Original Code under the terms of this License.
-
-          (d) Notwithstanding Section 2.1(b) above, no patent license is
-          granted: 1) for code that You delete from the Original Code; 2)
-          separate from the Original Code;  or 3) for infringements caused
-          by: i) the modification of the Original Code or ii) the
-          combination of the Original Code with other software or devices.
-
-     2.2. Contributor Grant.
-     Subject to third party intellectual property claims, each Contributor
-     hereby grants You a world-wide, royalty-free, non-exclusive license
-
-          (a)  under intellectual property rights (other than patent or
-          trademark) Licensable by Contributor, to use, reproduce, modify,
-          display, perform, sublicense and distribute the Modifications
-          created by such Contributor (or portions thereof) either on an
-          unmodified basis, with other Modifications, as Covered Code
-          and/or as part of a Larger Work; and
-
-          (b) under Patent Claims infringed by the making, using, or
-          selling of  Modifications made by that Contributor either alone
-          and/or in combination with its Contributor Version (or portions
-          of such combination), to make, use, sell, offer for sale, have
-          made, and/or otherwise dispose of: 1) Modifications made by that
-          Contributor (or portions thereof); and 2) the combination of
-          Modifications made by that Contributor with its Contributor
-          Version (or portions of such combination).
-
-          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
-          effective on the date Contributor first makes Commercial Use of
-          the Covered Code.
-
-          (d)    Notwithstanding Section 2.2(b) above, no patent license is
-          granted: 1) for any code that Contributor has deleted from the
-          Contributor Version; 2)  separate from the Contributor Version;
-          3)  for infringements caused by: i) third party modifications of
-          Contributor Version or ii)  the combination of Modifications made
-          by that Contributor with other software  (except as part of the
-          Contributor Version) or other devices; or 4) under Patent Claims
-          infringed by Covered Code in the absence of Modifications made by
-          that Contributor.
-
-3. Distribution Obligations.
-
-     3.1. Application of License.
-     The Modifications which You create or to which You contribute are
-     governed by the terms of this License, including without limitation
-     Section 2.2. The Source Code version of Covered Code may be
-     distributed only under the terms of this License or a future version
-     of this License released under Section 6.1, and You must include a
-     copy of this License with every copy of the Source Code You
-     distribute. You may not offer or impose any terms on any Source Code
-     version that alters or restricts the applicable version of this
-     License or the recipients' rights hereunder. However, You may include
-     an additional document offering the additional rights described in
-     Section 3.5.
-
-     3.2. Availability of Source Code.
-     Any Modification which You create or to which You contribute must be
-     made available in Source Code form under the terms of this License
-     either on the same media as an Executable version or via an accepted
-     Electronic Distribution Mechanism to anyone to whom you made an
-     Executable version available; and if made available via Electronic
-     Distribution Mechanism, must remain available for at least twelve (12)
-     months after the date it initially became available, or at least six
-     (6) months after a subsequent version of that particular Modification
-     has been made available to such recipients. You are responsible for
-     ensuring that the Source Code version remains available even if the
-     Electronic Distribution Mechanism is maintained by a third party.
-
-     3.3. Description of Modifications.
-     You must cause all Covered Code to which You contribute to contain a
-     file documenting the changes You made to create that Covered Code and
-     the date of any change. You must include a prominent statement that
-     the Modification is derived, directly or indirectly, from Original
-     Code provided by the Initial Developer and including the name of the
-     Initial Developer in (a) the Source Code, and (b) in any notice in an
-     Executable version or related documentation in which You describe the
-     origin or ownership of the Covered Code.
-
-     3.4. Intellectual Property Matters
-          (a) Third Party Claims.
-          If Contributor has knowledge that a license under a third party's
-          intellectual property rights is required to exercise the rights
-          granted by such Contributor under Sections 2.1 or 2.2,
-          Contributor must include a text file with the Source Code
-          distribution titled "LEGAL" which describes the claim and the
-          party making the claim in sufficient detail that a recipient will
-          know whom to contact. If Contributor obtains such knowledge after
-          the Modification is made available as described in Section 3.2,
-          Contributor shall promptly modify the LEGAL file in all copies
-          Contributor makes available thereafter and shall take other steps
-          (such as notifying appropriate mailing lists or newsgroups)
-          reasonably calculated to inform those who received the Covered
-          Code that new knowledge has been obtained.
-
-          (b) Contributor APIs.
-          If Contributor's Modifications include an application programming
-          interface and Contributor has knowledge of patent licenses which
-          are reasonably necessary to implement that API, Contributor must
-          also include this information in the LEGAL file.
-
-               (c)    Representations.
-          Contributor represents that, except as disclosed pursuant to
-          Section 3.4(a) above, Contributor believes that Contributor's
-          Modifications are Contributor's original creation(s) and/or
-          Contributor has sufficient rights to grant the rights conveyed by
-          this License.
-
-     3.5. Required Notices.
-     You must duplicate the notice in Exhibit A in each file of the Source
-     Code.  If it is not possible to put such notice in a particular Source
-     Code file due to its structure, then You must include such notice in a
-     location (such as a relevant directory) where a user would be likely
-     to look for such a notice.  If You created one or more Modification(s)
-     You may add your name as a Contributor to the notice described in
-     Exhibit A.  You must also duplicate this License in any documentation
-     for the Source Code where You describe recipients' rights or ownership
-     rights relating to Covered Code.  You may choose to offer, and to
-     charge a fee for, warranty, support, indemnity or liability
-     obligations to one or more recipients of Covered Code. However, You
-     may do so only on Your own behalf, and not on behalf of the Initial
-     Developer or any Contributor. You must make it absolutely clear than
-     any such warranty, support, indemnity or liability obligation is
-     offered by You alone, and You hereby agree to indemnify the Initial
-     Developer and every Contributor for any liability incurred by the
-     Initial Developer or such Contributor as a result of warranty,
-     support, indemnity or liability terms You offer.
-
-     3.6. Distribution of Executable Versions.
-     You may distribute Covered Code in Executable form only if the
-     requirements of Section 3.1-3.5 have been met for that Covered Code,
-     and if You include a notice stating that the Source Code version of
-     the Covered Code is available under the terms of this License,
-     including a description of how and where You have fulfilled the
-     obligations of Section 3.2. The notice must be conspicuously included
-     in any notice in an Executable version, related documentation or
-     collateral in which You describe recipients' rights relating to the
-     Covered Code. You may distribute the Executable version of Covered
-     Code or ownership rights under a license of Your choice, which may
-     contain terms different from this License, provided that You are in
-     compliance with the terms of this License and that the license for the
-     Executable version does not attempt to limit or alter the recipient's
-     rights in the Source Code version from the rights set forth in this
-     License. If You distribute the Executable version under a different
-     license You must make it absolutely clear that any terms which differ
-     from this License are offered by You alone, not by the Initial
-     Developer or any Contributor. You hereby agree to indemnify the
-     Initial Developer and every Contributor for any liability incurred by
-     the Initial Developer or such Contributor as a result of any such
-     terms You offer.
-
-     3.7. Larger Works.
-     You may create a Larger Work by combining Covered Code with other code
-     not governed by the terms of this License and distribute the Larger
-     Work as a single product. In such a case, You must make sure the
-     requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
-     If it is impossible for You to comply with any of the terms of this
-     License with respect to some or all of the Covered Code due to
-     statute, judicial order, or regulation then You must: (a) comply with
-     the terms of this License to the maximum extent possible; and (b)
-     describe the limitations and the code they affect. Such description
-     must be included in the LEGAL file described in Section 3.4 and must
-     be included with all distributions of the Source Code. Except to the
-     extent prohibited by statute or regulation, such description must be
-     sufficiently detailed for a recipient of ordinary skill to be able to
-     understand it.
-
-5. Application of this License.
-
-     This License applies to code to which the Initial Developer has
-     attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
-     6.1. New Versions.
-     Netscape Communications Corporation ("Netscape") may publish revised
-     and/or new versions of the License from time to time. Each version
-     will be given a distinguishing version number.
-
-     6.2. Effect of New Versions.
-     Once Covered Code has been published under a particular version of the
-     License, You may always continue to use it under the terms of that
-     version. You may also choose to use such Covered Code under the terms
-     of any subsequent version of the License published by Netscape. No one
-     other than Netscape has the right to modify the terms applicable to
-     Covered Code created under this License.
-
-     6.3. Derivative Works.
-     If You create or use a modified version of this License (which you may
-     only do in order to apply it to code which is not already Covered Code
-     governed by this License), You must (a) rename Your license so that
-     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
-     "MPL", "NPL" or any confusingly similar phrase do not appear in your
-     license (except to note that your license differs from this License)
-     and (b) otherwise make it clear that Your version of the license
-     contains terms which differ from the Mozilla Public License and
-     Netscape Public License. (Filling in the name of the Initial
-     Developer, Original Code or Contributor in the notice described in
-     Exhibit A shall not of themselves be deemed to be modifications of
-     this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
-     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
-     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
-     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
-     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
-     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
-     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
-     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
-     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
-     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
-     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
-     8.1.  This License and the rights granted hereunder will terminate
-     automatically if You fail to comply with terms herein and fail to cure
-     such breach within 30 days of becoming aware of the breach. All
-     sublicenses to the Covered Code which are properly granted shall
-     survive any termination of this License. Provisions which, by their
-     nature, must remain in effect beyond the termination of this License
-     shall survive.
-
-     8.2.  If You initiate litigation by asserting a patent infringement
-     claim (excluding declatory judgment actions) against Initial Developer
-     or a Contributor (the Initial Developer or Contributor against whom
-     You file such action is referred to as "Participant")  alleging that:
-
-     (a)  such Participant's Contributor Version directly or indirectly
-     infringes any patent, then any and all rights granted by such
-     Participant to You under Sections 2.1 and/or 2.2 of this License
-     shall, upon 60 days notice from Participant terminate prospectively,
-     unless if within 60 days after receipt of notice You either: (i)
-     agree in writing to pay Participant a mutually agreeable reasonable
-     royalty for Your past and future use of Modifications made by such
-     Participant, or (ii) withdraw Your litigation claim with respect to
-     the Contributor Version against such Participant.  If within 60 days
-     of notice, a reasonable royalty and payment arrangement are not
-     mutually agreed upon in writing by the parties or the litigation claim
-     is not withdrawn, the rights granted by Participant to You under
-     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
-     the 60 day notice period specified above.
-
-     (b)  any software, hardware, or device, other than such Participant's
-     Contributor Version, directly or indirectly infringes any patent, then
-     any rights granted to You by such Participant under Sections 2.1(b)
-     and 2.2(b) are revoked effective as of the date You first made, used,
-     sold, distributed, or had made, Modifications made by that
-     Participant.
-
-     8.3.  If You assert a patent infringement claim against Participant
-     alleging that such Participant's Contributor Version directly or
-     indirectly infringes any patent where such claim is resolved (such as
-     by license or settlement) prior to the initiation of patent
-     infringement litigation, then the reasonable value of the licenses
-     granted by such Participant under Sections 2.1 or 2.2 shall be taken
-     into account in determining the amount or value of any payment or
-     license.
-
-     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
-     all end user license agreements (excluding distributors and resellers)
-     which have been validly granted by You or any distributor hereunder
-     prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
-     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
-     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
-     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
-     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
-     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
-     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
-     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
-     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
-     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
-     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
-     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
-     The Covered Code is a "commercial item," as that term is defined in
-     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
-     software" and "commercial computer software documentation," as such
-     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
-     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
-     all U.S. Government End Users acquire Covered Code with only those
-     rights set forth herein.
-
-11. MISCELLANEOUS.
-
-     This License represents the complete agreement concerning subject
-     matter hereof. If any provision of this License is held to be
-     unenforceable, such provision shall be reformed only to the extent
-     necessary to make it enforceable. This License shall be governed by
-     California law provisions (except to the extent applicable law, if
-     any, provides otherwise), excluding its conflict-of-law provisions.
-     With respect to disputes in which at least one party is a citizen of,
-     or an entity chartered or registered to do business in the United
-     States of America, any litigation relating to this License shall be
-     subject to the jurisdiction of the Federal Courts of the Northern
-     District of California, with venue lying in Santa Clara County,
-     California, with the losing party responsible for costs, including
-     without limitation, court costs and reasonable attorneys' fees and
-     expenses. The application of the United Nations Convention on
-     Contracts for the International Sale of Goods is expressly excluded.
-     Any law or regulation which provides that the language of a contract
-     shall be construed against the drafter shall not apply to this
-     License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
-     As between Initial Developer and the Contributors, each party is
-     responsible for claims and damages arising, directly or indirectly,
-     out of its utilization of rights under this License and You agree to
-     work with Initial Developer and Contributors to distribute such
-     responsibility on an equitable basis. Nothing herein is intended or
-     shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
-     Initial Developer may designate portions of the Covered Code as
-     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
-     Developer permits you to utilize portions of the Covered Code under
-     Your choice of the NPL or the alternative licenses, if any, specified
-     by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
-     ``The contents of this file are subject to the Mozilla Public License
-     Version 1.1 (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.mozilla.org/MPL/
-
-     Software distributed under the License is distributed on an "AS IS"
-     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-     License for the specific language governing rights and limitations
-     under the License.
-
-     The Original Code is ______________________________________.
-
-     The Initial Developer of the Original Code is ________________________.
-     Portions created by ______________________ are Copyright (C) ______
-     _______________________. All Rights Reserved.
-
-     Contributor(s): ______________________________________.
-
-     Alternatively, the contents of this file may be used under the terms
-     of the _____ license (the  "[___] License"), in which case the
-     provisions of [______] License are applicable instead of those
-     above.  If you wish to allow use of your version of this file only
-     under the terms of the [____] License and not to allow others to use
-     your version of this file under the MPL, indicate your decision by
-     deleting  the provisions above and replace  them with the notice and
-     other provisions required by the [___] License.  If you do not delete
-     the provisions above, a recipient may use your version of this file
-     under either the MPL or the [___] License."
-
-     [NOTE: The text of this Exhibit A may differ slightly from the text of
-     the notices in the Source Code files of the Original Code. You should
-     use the text of this Exhibit A rather than the text found in the
-     Original Code Source Code for Your Modifications.]
-
-
-
-This product requires the YUICompressor library from Yahoo, Inc. (http://developer.yahoo.com/yui/compressor/).
-YUICompressor is distributed using the BSD license:
-
-     COPYRIGHT
-
-       Copyright (c) 2007-2009, Yahoo! Inc. All rights reserved.
-
-     LICENSE
-
-       All code specific to YUI Compressor is issued under a BSD license.
-       YUI Compressor extends and implements code from Mozilla's Rhino project.
-       Rhino is issued under the Mozilla Public License (MPL), and MPL applies
-       to the Rhino source and binaries that are distributed with YUI Compressor.

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/build.gradle
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/build.gradle b/tapestry-yuicompressor/build.gradle
deleted file mode 100644
index 6aef587..0000000
--- a/tapestry-yuicompressor/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-description = "Integrates YUI Compressor to minimize JavaScript and CSS resources"
-
-dependencies {
-  compile project(':tapestry-core') 
-  compile "com.yahoo.platform.yui:yuicompressor:2.4.6"
-    
-  testCompile project(':tapestry-test')
-  testCompile project(":tapestry-internal-test")
-}
-
-jar {
-    manifest {
-        attributes 'Tapestry-Module-Classes': 'org.apache.tapestry5.yuicompressor.services.YuiCompressorModule'
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/AbstractMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/AbstractMinimizer.java b/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/AbstractMinimizer.java
deleted file mode 100644
index f7c9ea7..0000000
--- a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/AbstractMinimizer.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2011-2013 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// 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.yuicompressor;
-
-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.*;
-
-/**
- * Base class for resource minimizers.
- *
- * @since 5.3
- */
-public abstract class AbstractMinimizer implements ResourceMinimizer
-{
-    private static final double NANOS_TO_MILLIS = 1.0d / 1000000.0d;
-
-    protected final Logger logger;
-
-    protected final OperationTracker tracker;
-
-    private final AssetChecksumGenerator checksumGenerator;
-
-    private final String resourceType;
-
-    public AbstractMinimizer(Logger logger, OperationTracker tracker, AssetChecksumGenerator checksumGenerator, String resourceType)
-    {
-        this.logger = logger;
-        this.tracker = tracker;
-        this.resourceType = resourceType;
-        this.checksumGenerator = checksumGenerator;
-    }
-
-    public StreamableResource minimize(final StreamableResource input) throws IOException
-    {
-        long startNanos = System.nanoTime();
-
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
-
-        final Writer writer = new OutputStreamWriter(bos);
-
-        tracker.perform("Minimizing " + resourceType, new IOOperation<Void>()
-        {
-            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);
-                }
-
-                return null;
-            }
-        });
-
-        writer.close();
-
-        // The content is minimized, but can still be (GZip) compressed.
-
-        StreamableResource output = new StreamableResourceImpl("minimized " + input.getDescription(),
-                input.getContentType(), CompressionStatus.COMPRESSABLE,
-                input.getLastModified(), new BytestreamCache(bos), checksumGenerator);
-
-        if (logger.isInfoEnabled())
-        {
-            long elapsedNanos = System.nanoTime() - startNanos;
-
-            int inputSize = input.getSize();
-            int outputSize = output.getSize();
-
-            double elapsedMillis = ((double) elapsedNanos) * NANOS_TO_MILLIS;
-            // e.g., reducing 100 bytes to 25 would be a (100-25)/100 reduction, or 75%
-            double reduction = 100d * ((double) (inputSize - outputSize)) / ((double) inputSize);
-
-            logger.info(String.format("Minimized %s (%,d input bytes of %s to %,d output bytes in %.2f ms, %.2f%% reduction)",
-                    input.getDescription(), inputSize, resourceType, outputSize, elapsedMillis, reduction));
-        }
-
-        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.
-     *
-     * @param resource
-     *         content to minimize
-     * @param output
-     *         writer for minimized version of input
-     */
-    protected abstract void doMinimize(StreamableResource resource, Writer output) throws IOException;
-}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/CSSResourceMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/CSSResourceMinimizer.java b/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/CSSResourceMinimizer.java
deleted file mode 100644
index d786829..0000000
--- a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/CSSResourceMinimizer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2011-2013 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// 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.yuicompressor;
-
-import com.yahoo.platform.yui.compressor.CssCompressor;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
-import org.apache.tapestry5.services.assets.StreamableResource;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
-
-/**
- * Uses {@link CssCompressor} to reduce the size of CSS content.
- *
- * @since 5.3
- */
-public class CSSResourceMinimizer extends AbstractMinimizer
-{
-    public CSSResourceMinimizer(Logger logger, OperationTracker tracker, AssetChecksumGenerator checksumGenerator)
-    {
-        super(logger, tracker, checksumGenerator, "CSS");
-    }
-
-    @Override
-    protected void doMinimize(StreamableResource input, Writer output) throws IOException
-    {
-        Reader reader = toReader(input);
-
-        try
-        {
-            new CssCompressor(reader).compress(output, -1);
-        } finally
-        {
-            reader.close();
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/JavaScriptResourceMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/JavaScriptResourceMinimizer.java b/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/JavaScriptResourceMinimizer.java
deleted file mode 100644
index ddcd380..0000000
--- a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/JavaScriptResourceMinimizer.java
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright 2011-2013 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// 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.yuicompressor;
-
-import com.yahoo.platform.yui.compressor.JavaScriptCompressor;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
-import org.apache.tapestry5.services.assets.StreamableResource;
-import org.mozilla.javascript.ErrorReporter;
-import org.mozilla.javascript.EvaluatorException;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * JavaScript resource minimizer based on the YUI {@link JavaScriptCompressor}.
- *
- * @since 5.3
- */
-public class JavaScriptResourceMinimizer extends AbstractMinimizer
-{
-    private final static int RANGE = 5;
-
-    private enum Where
-    {
-        EXACT, NEAR, FAR
-    }
-
-    private static final String[] IGNORED_WARNINGS = {
-            "Try to use a single 'var' statement per scope.",
-            "Using 'eval' is not recommended",
-            "has already been declared in the same scope"
-    };
-
-    public JavaScriptResourceMinimizer(Logger logger, OperationTracker tracker, AssetChecksumGenerator checksumGenerator)
-    {
-        super(logger, tracker, checksumGenerator, "JavaScript");
-    }
-
-    protected void doMinimize(final StreamableResource resource, Writer output) throws IOException
-    {
-        final Set<Integer> errorLines = CollectionFactory.newSet();
-
-        final Runnable identifySource = new Runnable()
-        {
-            boolean sourceIdentified = false;
-
-            public void run()
-            {
-                if (!sourceIdentified)
-                {
-                    logger.error(String.format("JavaScript compression problems for resource %s:",
-                            resource.getDescription()));
-                    sourceIdentified = true;
-                }
-            }
-        };
-
-        final AtomicInteger warningCount = new AtomicInteger();
-
-        Runnable identifyWarnings = new Runnable()
-        {
-            public void run()
-            {
-                if (warningCount.get() > 0)
-                {
-                    logger.error(String.format("%,d compression warnings; enable warning logging of %s to see details.",
-                            warningCount.get(),
-                            logger.getName()));
-                }
-            }
-        };
-
-        ErrorReporter errorReporter = new ErrorReporter()
-        {
-            private String format(String message, int line, int lineOffset)
-            {
-                if (line < 0)
-                    return message;
-
-                return String.format("(%d:%d): %s", line, lineOffset, message);
-            }
-
-            public void warning(String message, String sourceName, int line, String lineSource, int lineOffset)
-            {
-                for (String ignored : IGNORED_WARNINGS)
-                {
-                    if (message.contains(ignored))
-                    {
-                        return;
-                    }
-                }
-
-                identifySource.run();
-
-                errorLines.add(line);
-
-                if (logger.isWarnEnabled())
-                {
-                    logger.warn(format(message, line, lineOffset));
-                } else
-                {
-                    warningCount.incrementAndGet();
-                }
-            }
-
-            public EvaluatorException runtimeError(String message, String sourceName, int line, String lineSource,
-                                                   int lineOffset)
-            {
-                error(message, sourceName, line, lineSource, lineOffset);
-
-                return new EvaluatorException(message);
-            }
-
-            public void error(String message, String sourceName, int line, String lineSource, int lineOffset)
-            {
-                identifySource.run();
-
-                errorLines.add(line);
-
-                logger.error(format(message, line, lineOffset));
-            }
-
-        };
-
-        Reader reader = toReader(resource);
-
-        try
-        {
-            JavaScriptCompressor compressor = new JavaScriptCompressor(reader, errorReporter);
-            compressor.compress(output, -1, true, true, false, false);
-
-            identifyWarnings.run();
-
-        } catch (EvaluatorException ex)
-        {
-            identifySource.run();
-
-            logInputLines(resource, errorLines);
-
-            recoverFromException(ex, resource, output);
-
-        } catch (Exception ex)
-        {
-            identifySource.run();
-
-            recoverFromException(ex, resource, output);
-        }
-
-        reader.close();
-    }
-
-    private void recoverFromException(Exception ex, StreamableResource resource, Writer output) throws IOException
-    {
-        logger.error(ExceptionUtils.toMessage(ex), ex);
-
-        streamUnminimized(resource, output);
-    }
-
-    private void streamUnminimized(StreamableResource resource, Writer output) throws IOException
-    {
-        Reader reader = toReader(resource);
-
-        char[] buffer = new char[5000];
-
-        try
-        {
-
-            while (true)
-            {
-                int length = reader.read(buffer);
-
-                if (length < 0)
-                {
-                    break;
-                }
-
-                output.write(buffer, 0, length);
-            }
-        } finally
-        {
-            reader.close();
-        }
-    }
-
-    private void logInputLines(StreamableResource resource, Set<Integer> lines)
-    {
-        int last = -1;
-
-        try
-        {
-            LineNumberReader lnr = new LineNumberReader(toReader(resource));
-
-            while (true)
-            {
-                String line = lnr.readLine();
-
-                if (line == null) break;
-
-                int lineNumber = lnr.getLineNumber();
-
-                Where where = where(lineNumber, lines);
-
-                if (where == Where.FAR)
-                {
-                    continue;
-                }
-
-                // Add a blank line to separate non-consecutive parts of the content.
-                if (last > 0 && last + 1 != lineNumber)
-                {
-                    logger.error("");
-                }
-
-                String formatted = String.format("%s%6d %s",
-                        where == Where.EXACT ? "*" : " ",
-                        lineNumber,
-                        line);
-
-                logger.error(formatted);
-
-                last = lineNumber;
-            }
-
-            lnr.close();
-
-        } catch (IOException ex)
-        { // Ignore.
-        }
-
-    }
-
-    private Where where(int lineNumber, Set<Integer> lines)
-    {
-        if (lines.contains(lineNumber))
-        {
-            return Where.EXACT;
-        }
-
-        for (int line : lines)
-        {
-            if (Math.abs(lineNumber - line) < RANGE)
-            {
-                return Where.NEAR;
-            }
-        }
-
-        return Where.FAR;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/package-info.java
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/package-info.java b/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/package-info.java
deleted file mode 100644
index a9be516..0000000
--- a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/package-info.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2012 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.
-
-/**
- * [INTERNAL USE ONLY] support classes for the YUICompressor; API subject to change
- */
-package org.apache.tapestry5.internal.yuicompressor;

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/YuiCompressorModule.java
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/YuiCompressorModule.java b/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/YuiCompressorModule.java
deleted file mode 100644
index e7211c4..0000000
--- a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/YuiCompressorModule.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2011-2013 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// 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.yuicompressor.modules;
-
-import com.yahoo.platform.yui.compressor.YUICompressor;
-import org.apache.tapestry5.internal.yuicompressor.CSSResourceMinimizer;
-import org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.assets.ResourceMinimizer;
-
-/**
- * Sets up Tapestry to compress JavaScript assets using {@link YUICompressor}.
- * 
- * @since 5.3
- */
-public class YuiCompressorModule
-{
-    /**
-     * Contibutes minimizers for <code>text/javascript</code> and <code>test/css</code>.
-     * 
-     */
-    @Contribute(ResourceMinimizer.class)
-    @Primary
-    public static void contributeMinimizers(MappedConfiguration<String, ResourceMinimizer> configuration)
-    {
-        configuration.addInstance("text/javascript", JavaScriptResourceMinimizer.class);
-        configuration.addInstance("text/css", CSSResourceMinimizer.class);
-    }
-}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/package-info.java
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/package-info.java b/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/package-info.java
deleted file mode 100644
index 4fca63c..0000000
--- a/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/yuicompressor/modules/package-info.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2012-2013 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// 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.
-
-/**
- * [INTERNAL USE ONLY] support services for the YUICompressor; API subject to change
- */
-package org.apache.tapestry5.yuicompressor.modules;

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/32beedda/tapestry-yuicompressor/src/test/conf/testng.xml
----------------------------------------------------------------------
diff --git a/tapestry-yuicompressor/src/test/conf/testng.xml b/tapestry-yuicompressor/src/test/conf/testng.xml
deleted file mode 100644
index 76bb2f7..0000000
--- a/tapestry-yuicompressor/src/test/conf/testng.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="Tapestry YUICompressor Integration" annotations="1.5" verbose="2">
-
-  <parameter name="tapestry.web-app-folder" value="src/test/webapp"/>
-
-  <test name="Integration Tests">
-    <packages>
-      <package name="org.apache.tapestry5.yuicompressor.itest"/>
-    </packages>
-  </test>
-</suite>