Repository: tapestry-5 Updated Branches: refs/heads/master 323cb8c34 -> 814fdb509
Make LessResourceTransformer easier to subclass and extend Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/814fdb50 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/814fdb50 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/814fdb50 Branch: refs/heads/master Commit: 814fdb509f712052d38b324caeadbcb2c0df180d Parents: 323cb8c Author: Howard M. Lewis Ship <[email protected]> Authored: Fri May 30 13:33:30 2014 -0700 Committer: Howard M. Lewis Ship <[email protected]> Committed: Fri May 30 15:02:32 2014 -0700 ---------------------------------------------------------------------- .../webresources/LessResourceTransformer.java | 95 ++++--------------- .../webresources/ResourceLessSource.java | 97 ++++++++++++++++++++ 2 files changed, 114 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/814fdb50/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/LessResourceTransformer.java ---------------------------------------------------------------------- diff --git a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/LessResourceTransformer.java b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/LessResourceTransformer.java index 6ed705f..ebaf35d 100644 --- a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/LessResourceTransformer.java +++ b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/LessResourceTransformer.java @@ -1,3 +1,5 @@ +// Copyright 2013-2014 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 @@ -16,14 +18,14 @@ import com.github.sommeri.less4j.Less4jException; import com.github.sommeri.less4j.LessCompiler; import com.github.sommeri.less4j.LessSource; import com.github.sommeri.less4j.core.DefaultLessCompiler; -import org.apache.commons.io.IOUtils; import org.apache.tapestry5.internal.services.assets.BytestreamCache; import org.apache.tapestry5.ioc.Resource; -import org.apache.tapestry5.ioc.internal.util.InternalUtils; import org.apache.tapestry5.services.assets.ResourceDependencies; import org.apache.tapestry5.services.assets.ResourceTransformer; -import java.io.*; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; /** * Direct wrapper around the LessCompiler, so that Less source files may use {@code @import}, which isn't @@ -39,79 +41,6 @@ public class LessResourceTransformer implements ResourceTransformer return "text/css"; } - protected class ResourceLessSource extends LessSource - { - private final Resource resource; - - private final ResourceDependencies dependencies; - - protected ResourceLessSource(Resource resource, ResourceDependencies dependencies) - { - this.resource = resource; - this.dependencies = dependencies; - } - - @Override - public LessSource relativeSource(String filename) throws FileNotFound, CannotReadFile, StringSourceException - { - Resource relative = resource.forFile(filename); - - if (!relative.exists()) - { - throw new FileNotFound(); - } - - dependencies.addDependency(relative); - - return new ResourceLessSource(relative, dependencies); - } - - @Override - public String getContent() throws FileNotFound, CannotReadFile - { - // Adapted from Less's URLSource - Reader input = null; - try - { - input = new InputStreamReader(resource.openStream()); - String content = IOUtils.toString(input).replace("\r\n", "\n"); - - return content; - } catch (FileNotFoundException ex) - { - throw new FileNotFound(); - } catch (IOException ex) - { - throw new CannotReadFile(); - } finally - { - InternalUtils.close(input); - } - } - - @Override - public byte[] getBytes() throws FileNotFound, CannotReadFile - { - Reader input = null; - try - { - input = new InputStreamReader(resource.openStream()); - - return IOUtils.toByteArray(input); - } catch (FileNotFoundException ex) - { - throw new FileNotFound(); - } catch (IOException ex) - { - throw new CannotReadFile(); - } finally - { - InternalUtils.close(input); - } - - } - } - @Override public InputStream transform(Resource source, ResourceDependencies dependencies) throws IOException @@ -121,13 +50,13 @@ public class LessResourceTransformer implements ResourceTransformer return compiled.openStream(); } - protected BytestreamCache invokeLessCompiler(Resource source, ResourceDependencies dependencies) throws IOException + private BytestreamCache invokeLessCompiler(Resource source, ResourceDependencies dependencies) throws IOException { try { LessSource lessSource = new ResourceLessSource(source, dependencies); - LessCompiler.CompilationResult compilationResult = compiler.compile(lessSource); + LessCompiler.CompilationResult compilationResult = compile(compiler, lessSource); // Currently, ignoring any warnings. @@ -141,4 +70,14 @@ public class LessResourceTransformer implements ResourceTransformer throw new IOException(ex); } } + + /** + * Invoked from {@link #transform(org.apache.tapestry5.ioc.Resource, org.apache.tapestry5.services.assets.ResourceDependencies)} + * to perform the actual work of compiling a {@link org.apache.tapestry5.ioc.Resource} which has been wrapped as a + * {@link com.github.sommeri.less4j.LessSource}. + */ + protected LessCompiler.CompilationResult compile(LessCompiler compiler, LessSource lessSource) throws Less4jException + { + return compiler.compile(lessSource); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/814fdb50/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceLessSource.java ---------------------------------------------------------------------- diff --git a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceLessSource.java b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceLessSource.java new file mode 100644 index 0000000..25de63d --- /dev/null +++ b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceLessSource.java @@ -0,0 +1,97 @@ +// 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.webresources; + +import com.github.sommeri.less4j.LessSource; +import org.apache.commons.io.IOUtils; +import org.apache.tapestry5.ioc.Resource; +import org.apache.tapestry5.ioc.internal.util.InternalUtils; +import org.apache.tapestry5.services.assets.ResourceDependencies; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; + +public class ResourceLessSource extends LessSource +{ + private final Resource resource; + + private final ResourceDependencies dependencies; + + ResourceLessSource(Resource resource, ResourceDependencies dependencies) + { + this.resource = resource; + this.dependencies = dependencies; + } + + @Override + public LessSource relativeSource(String filename) throws FileNotFound, CannotReadFile, StringSourceException + { + Resource relative = resource.forFile(filename); + + if (!relative.exists()) + { + throw new FileNotFound(); + } + + dependencies.addDependency(relative); + + return new ResourceLessSource(relative, dependencies); + } + + @Override + public String getContent() throws FileNotFound, CannotReadFile + { + // Adapted from Less's URLSource + Reader input = null; + try + { + input = new InputStreamReader(resource.openStream()); + String content = IOUtils.toString(input).replace("\r\n", "\n"); + + return content; + } catch (FileNotFoundException ex) + { + throw new FileNotFound(); + } catch (IOException ex) + { + throw new CannotReadFile(); + } finally + { + InternalUtils.close(input); + } + } + + @Override + public byte[] getBytes() throws FileNotFound, CannotReadFile + { + Reader input = null; + try + { + input = new InputStreamReader(resource.openStream()); + + return IOUtils.toByteArray(input); + } catch (FileNotFoundException ex) + { + throw new FileNotFound(); + } catch (IOException ex) + { + throw new CannotReadFile(); + } finally + { + InternalUtils.close(input); + } + + } +}
