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 2014/09/03 23:14:21 UTC
[1/6] git commit: Convert ContentType to be an immutable data class
Convert some usages of String (for content type) to use ContentType
Repository: tapestry-5
Updated Branches:
refs/heads/master 789e395e6 -> 475af4cc9
Convert ContentType to be an immutable data class
Convert some usages of String (for content type) to use ContentType
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/85622bc3
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/85622bc3
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/85622bc3
Branch: refs/heads/master
Commit: 85622bc3510757c81e3634c205bd0ba947b9d93d
Parents: 789e395
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 13:37:23 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 13:37:23 2014 -0700
----------------------------------------------------------------------
54_RELEASE_NOTES.md | 6 +
.../java/org/apache/tapestry5/ContentType.java | 179 +++++++++----------
.../tapestry5/internal/InternalConstants.java | 6 +
.../AjaxPartialResponseRendererImpl.java | 16 +-
.../services/JSONArrayEventResultProcessor.java | 25 ++-
.../services/PageContentTypeAnalyzerImpl.java | 4 +-
.../internal/services/ResourceStreamerImpl.java | 2 +-
.../ResponseCompressionAnalyzerImpl.java | 11 +-
.../services/assets/CSSURLRewriter.java | 30 ++--
.../internal/services/assets/DelegatingSRS.java | 3 +-
.../assets/JavaScriptStackAssemblerImpl.java | 5 +-
.../services/assets/StreamableResourceImpl.java | 11 +-
.../assets/StreamableResourceSourceImpl.java | 9 +-
.../services/assets/UTF8ForTextAssets.java | 10 +-
.../services/javascript/ModuleManagerImpl.java | 5 +-
.../internal/test/PageTesterModule.java | 7 +-
.../services/ResponseCompressionAnalyzer.java | 5 +-
.../services/assets/ResourceTransformer.java | 5 +-
.../services/assets/StreamableResource.java | 9 +-
.../assets/StreamableResourceSource.java | 9 +-
.../tapestry5/util/TextStreamResponse.java | 4 +-
.../apache/tapestry5/root/ContentTypeTest.java | 71 +++++---
.../webresources/CoffeeScriptCompiler.java | 10 +-
.../DelegatingResourceTransformer.java | 32 ++++
.../webresources/LessResourceTransformer.java | 9 +-
.../ResourceTransformerFactoryImpl.java | 48 ++---
26 files changed, 291 insertions(+), 240 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/54_RELEASE_NOTES.md
----------------------------------------------------------------------
diff --git a/54_RELEASE_NOTES.md b/54_RELEASE_NOTES.md
index 19a598e..4b35667 100644
--- a/54_RELEASE_NOTES.md
+++ b/54_RELEASE_NOTES.md
@@ -455,3 +455,9 @@ Tapestry now determines if a client-persistent field is mutable and contains cha
checks as for session-persistent objects (the OptimizedSessionPersistedObject interface and so forth).
Previously, Tapestry would load a mutable object into a field, but a change to the internal state
of that mutable field would not always be preserved in the serialized object data attached to links.
+
+## ContentType
+
+The ContentType objects, used to represent a content types such as "text/html" in a structured manner,
+has been revised significantly in 5.4; it is now an immutable data type. In addition, a few scattered
+interfaces that used a String content type have been changed to use the ContentType class instead.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java b/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
index 87f0a1b..93739f3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
@@ -1,5 +1,3 @@
-// Copyright 2007-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
@@ -14,55 +12,84 @@
package org.apache.tapestry5;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.internal.util.InternalUtils;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* Represents an HTTP content type. Allows to set various elements like the MIME type, the character set, and other
* parameters. This is similar to a number of other implementations of the same concept in JAF, etc. We have created
* this simple implementation to avoid including the whole libraries.
+ * <p/>
+ * As of Tapestry 5.4, this is now an immutable data type.
*/
public final class ContentType
{
- private String baseType = "";
+ private final String baseType;
- private String subType = "";
+ private final String subType;
- private final Map<String, String> parameters = CollectionFactory.newCaseInsensitiveMap();
+ private final Map<String, String> parameters;
- /**
- * Creates a new empty content type.
- */
- public ContentType()
- {
- }
+ private static final Pattern PATTERN = Pattern.compile("^(.+)/([^;]+)(;(.+=[^;]+))*$");
/**
* Creates a new content type from the argument. The format of the argument has to be basetype/subtype(;key=value)*
*
- * @param contentType the content type that needs to be represented
+ * @param contentType
+ * the content type that needs to be represented
*/
public ContentType(String contentType)
{
- parse(contentType);
+ Matcher matcher = PATTERN.matcher(contentType);
+
+ if (!matcher.matches())
+ {
+ throw new IllegalArgumentException(String.format("Not a parseable content type '%s'.", contentType));
+ }
+
+ this.baseType = matcher.group(1);
+ this.subType = matcher.group(2);
+ this.parameters = parseKeyValues(matcher.group(4));
}
- /**
- * Creates a new content type with the given MIME type and charset
- */
- public ContentType(String contentType, String charset)
+ private ContentType(String baseType, String subType, Map<String, String> parameters)
{
- this(contentType);
-
- setParameter(InternalConstants.CHARSET_CONTENT_TYPE_PARAMETER, charset);
+ this.baseType = baseType;
+ this.subType = subType;
+ this.parameters = parameters;
}
+ private static Map<String, String> parseKeyValues(String keyValues)
+ {
+ if (keyValues == null)
+ {
+ return Collections.emptyMap();
+ }
+
+ Map<String, String> parameters = CollectionFactory.newCaseInsensitiveMap();
+
+ StringTokenizer tk = new StringTokenizer(keyValues, ";");
+
+ while (tk.hasMoreTokens())
+ {
+ String token = tk.nextToken();
+ int sep = token.indexOf('=');
+
+ parameters.put(token.substring(0, sep), token.substring(sep + 1));
+ }
+
+ return parameters;
+ }
+
/**
* Returns true only if the other object is another instance of ContentType, and has the same baseType, subType and
* set of parameters.
@@ -88,15 +115,6 @@ public final class ContentType
}
/**
- * @param baseType
- */
- public void setBaseType(String baseType)
- {
- assert baseType != null;
- this.baseType = baseType;
- }
-
- /**
* @return the sub-type of the content type
*/
public String getSubType()
@@ -105,16 +123,7 @@ public final class ContentType
}
/**
- * @param subType
- */
- public void setSubType(String subType)
- {
- assert subType != null;
- this.subType = subType;
- }
-
- /**
- * @return the MIME type of the content type
+ * @return the MIME type of the content type (the base type and the subtype, seperated with a '/').
*/
public String getMimeType()
{
@@ -130,7 +139,7 @@ public final class ContentType
}
/**
- * @return the character set (the "charset" parameter) or null.
+ * @return the character set (the "charset" parameter) or null.
*/
public String getCharset()
{
@@ -138,7 +147,8 @@ public final class ContentType
}
/**
- * @param key the name of the content type parameter
+ * @param key
+ * the name of the content type parameter
* @return the value of the content type parameter
*/
public String getParameter(String key)
@@ -147,72 +157,59 @@ public final class ContentType
return parameters.get(key);
}
- /**
- * @param key the name of the content type parameter
- * @param value the value of the content type parameter
- */
- public void setParameter(String key, String value)
+ private String unparse()
{
- assert key != null;
- assert value != null;
- parameters.put(key, value);
+ StringBuilder buffer = new StringBuilder(getMimeType());
+
+ for (String parameterName : getParameterNames())
+ {
+ buffer.append(";");
+ buffer.append(parameterName);
+ buffer.append("=");
+ buffer.append(parameters.get(parameterName));
+ }
+
+ return buffer.toString();
}
/**
- * Parses the argument and configures the content type accordingly. The format of the argument has to be
- * type/subtype(;key=value)*
+ * Returns a new content type with the indicated parameter.
*
- * @param contentType the content type that needs to be represented
+ * @since 5.4
*/
- public void parse(String contentType)
+ public ContentType withParameter(String key, String value)
{
- baseType = "";
- subType = "";
- parameters.clear();
-
- StringTokenizer tokens = new StringTokenizer(contentType, ";");
- if (!tokens.hasMoreTokens()) return;
+ assert InternalUtils.isNonBlank(key);
+ assert InternalUtils.isNonBlank(value);
- String mimeType = tokens.nextToken();
- StringTokenizer mimeTokens = new StringTokenizer(mimeType, "/");
- setBaseType(mimeTokens.hasMoreTokens() ? mimeTokens.nextToken() : "");
- setSubType(mimeTokens.hasMoreTokens() ? mimeTokens.nextToken() : "");
+ Map<String, String> newParameters = CollectionFactory.newCaseInsensitiveMap();
- while (tokens.hasMoreTokens())
- {
- String parameter = tokens.nextToken();
+ newParameters.putAll(parameters);
+ newParameters.put(key, value);
- StringTokenizer parameterTokens = new StringTokenizer(parameter, "=");
- String key = parameterTokens.hasMoreTokens() ? parameterTokens.nextToken() : "";
- String value = parameterTokens.hasMoreTokens() ? parameterTokens.nextToken() : "";
- setParameter(key, value);
- }
+ return new ContentType(baseType, subType, newParameters);
}
- /**
- * @return the string representation of this content type
- */
- public String unparse()
+ public ContentType withCharset(String charset)
{
- StringBuilder buffer = new StringBuilder(getMimeType());
-
- for (String parameterName : getParameterNames())
- {
- buffer.append(";");
- buffer.append(parameterName);
- buffer.append("=");
- buffer.append(parameters.get(parameterName));
- }
-
- return buffer.toString();
+ return withParameter(InternalConstants.CHARSET_CONTENT_TYPE_PARAMETER, charset);
}
/**
- * @return the string representation of this content type. Same as unparse().
+ * @return the string representation of this content type.
*/
@Override
public String toString()
{
return unparse();
}
+
+ /**
+ * @return true if the content type includes parameters (such as 'charset').
+ * @since 5.4
+ */
+ public boolean hasParameters()
+ {
+ return !parameters.isEmpty();
+ }
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
index 9ad6b7c..a308268 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
@@ -12,6 +12,7 @@
package org.apache.tapestry5.internal;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.dom.MarkupModel;
import org.apache.tapestry5.ioc.util.TimeInterval;
import org.apache.tapestry5.services.javascript.JavaScriptStack;
@@ -207,4 +208,9 @@ public final class InternalConstants
* @since 5.4
*/
public static final String SUPPRESS_NAMESPACED_IDS = "t:suppress-namespaced-ids";
+
+ /**
+ * @since 5.4
+ */
+ public static final ContentType JAVASCRIPT_CONTENT_TYPE = new ContentType("text/javascript");
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
index 8def717..22ffce9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
@@ -1,5 +1,3 @@
-// Copyright 2007-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
@@ -23,7 +21,10 @@ import org.apache.tapestry5.ioc.IOOperation;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.MarkupWriterFactory;
+import org.apache.tapestry5.services.PartialMarkupRenderer;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
import java.io.IOException;
import java.io.PrintWriter;
@@ -38,10 +39,10 @@ public class AjaxPartialResponseRendererImpl implements AjaxPartialResponseRende
private final PartialMarkupRenderer partialMarkupRenderer;
- private final String outputEncoding;
-
private final boolean compactJSON;
+ private final ContentType contentType;
+
public AjaxPartialResponseRendererImpl(MarkupWriterFactory factory,
Request request,
@@ -61,8 +62,9 @@ public class AjaxPartialResponseRendererImpl implements AjaxPartialResponseRende
this.request = request;
this.response = response;
this.partialMarkupRenderer = partialMarkupRenderer;
- this.outputEncoding = outputEncoding;
this.compactJSON = compactJSON;
+
+ contentType = new ContentType(InternalConstants.JSON_MIME_TYPE).withCharset(outputEncoding);
}
public void renderPartialPageMarkup(final JSONObject reply) throws IOException
@@ -77,8 +79,6 @@ public class AjaxPartialResponseRendererImpl implements AjaxPartialResponseRende
// separated, and trying to keep stateless and stateful (i.e., perthread scope) services
// separated. So we inform the stateful queue service what it needs to do here ...
- ContentType contentType = new ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
-
String pageName = (String) request.getAttribute(InternalConstants.PAGE_NAME_ATTRIBUTE_NAME);
MarkupWriter writer = factory.newPartialMarkupWriter(pageName);
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
index 5da19fb..0e650b9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
@@ -1,5 +1,3 @@
-// Copyright 2008, 2010 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
@@ -14,9 +12,6 @@
package org.apache.tapestry5.internal.services;
-import java.io.IOException;
-import java.io.PrintWriter;
-
import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.internal.InternalConstants;
@@ -25,31 +20,33 @@ import org.apache.tapestry5.json.JSONArray;
import org.apache.tapestry5.services.ComponentEventResultProcessor;
import org.apache.tapestry5.services.Response;
+import java.io.IOException;
+import java.io.PrintWriter;
+
public class JSONArrayEventResultProcessor implements ComponentEventResultProcessor<JSONArray>
{
private final Response response;
- private final String outputEncoding;
-
private final boolean compactJSON;
+ private final ContentType contentType;
+
public JSONArrayEventResultProcessor(Response response,
- @Symbol(SymbolConstants.CHARSET)
- String outputEncoding,
+ @Symbol(SymbolConstants.CHARSET)
+ String outputEncoding,
- @Symbol(SymbolConstants.COMPACT_JSON)
- boolean compactJSON)
+ @Symbol(SymbolConstants.COMPACT_JSON)
+ boolean compactJSON)
{
this.response = response;
- this.outputEncoding = outputEncoding;
this.compactJSON = compactJSON;
+
+ contentType = new ContentType(InternalConstants.JSON_MIME_TYPE).withCharset(outputEncoding);
}
public void processResultValue(JSONArray value) throws IOException
{
- ContentType contentType = new ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
-
PrintWriter pw = response.getPrintWriter(contentType.toString());
value.print(pw, compactJSON);
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java
index dd2eba1..322ebc7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java
@@ -1,5 +1,3 @@
-// Copyright 2007, 2008, 2010 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
@@ -46,6 +44,6 @@ public class PageContentTypeAnalyzerImpl implements PageContentTypeAnalyzer
// Draconian but necessary: overwrite the content type they selected with the application-wide output charset.
- return new ContentType(contentTypeString, outputCharset);
+ return new ContentType(contentTypeString).withCharset(outputCharset);
}
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
index 9176555..f939dff 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
@@ -224,7 +224,7 @@ public class ResourceStreamerImpl implements ResourceStreamer
responseCustomizer.customizeResponse(streamable, response);
}
- OutputStream os = response.getOutputStream(streamable.getContentType());
+ OutputStream os = response.getOutputStream(streamable.getContentType().toString());
streamable.streamTo(os);
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java
index 1fd4072..0b393d0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java
@@ -1,5 +1,3 @@
-// Copyright 2009-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
@@ -14,8 +12,7 @@
package org.apache.tapestry5.internal.services;
-import javax.servlet.http.HttpServletRequest;
-
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.TapestryInternalUtils;
@@ -23,6 +20,8 @@ import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
import org.apache.tapestry5.services.assets.CompressionAnalyzer;
+import javax.servlet.http.HttpServletRequest;
+
public class ResponseCompressionAnalyzerImpl implements ResponseCompressionAnalyzer
{
private final HttpServletRequest request;
@@ -77,8 +76,8 @@ public class ResponseCompressionAnalyzerImpl implements ResponseCompressionAnaly
return false;
}
- public boolean isGZipEnabled(String contentType)
+ public boolean isGZipEnabled(ContentType contentType)
{
- return isGZipSupported() && compressionAnalyzer.isCompressable(contentType);
+ return isGZipSupported() && compressionAnalyzer.isCompressable(contentType.getMimeType());
}
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
index 2678411..042781f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
@@ -13,6 +13,7 @@
package org.apache.tapestry5.internal.services.assets;
import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.IOOperation;
import org.apache.tapestry5.ioc.OperationTracker;
@@ -39,8 +40,8 @@ import java.util.regex.Pattern;
* One potential problem with URL rewriting is the way that URLs for referenced resources are generated; we are
* somewhat banking on the fact that referenced resources are non-compressable images.
*
- * @since 5.4
* @see SymbolConstants#STRICT_CSS_URL_REWRITING
+ * @since 5.4
*/
public class CSSURLRewriter extends DelegatingSRS
{
@@ -66,13 +67,15 @@ public class CSSURLRewriter extends DelegatingSRS
private final AssetSource assetSource;
private final AssetChecksumGenerator checksumGenerator;
-
+
private final Logger logger = LoggerFactory.getLogger(CSSURLRewriter.class);
-
+
private final boolean strictCssUrlRewriting;
- public CSSURLRewriter(StreamableResourceSource delegate, OperationTracker tracker, AssetSource assetSource,
- AssetChecksumGenerator checksumGenerator, boolean strictCssUrlRewriting)
+ private final ContentType CSS_CONTENT_TYPE = new ContentType("text/css");
+
+ public CSSURLRewriter(StreamableResourceSource delegate, OperationTracker tracker, AssetSource assetSource,
+ AssetChecksumGenerator checksumGenerator, boolean strictCssUrlRewriting)
{
super(delegate);
this.tracker = tracker;
@@ -113,7 +116,8 @@ public class CSSURLRewriter extends DelegatingSRS
BytestreamCache cache = new BytestreamCache(filtered.getBytes("UTF-8"));
- return new StreamableResourceImpl(base.getDescription(), "text/css",
+ return new StreamableResourceImpl(base.getDescription(),
+ CSS_CONTENT_TYPE,
CompressionStatus.COMPRESSABLE,
base.getLastModified(),
cache, checksumGenerator, base.getResponseCustomizer());
@@ -162,7 +166,7 @@ public class CSSURLRewriter extends DelegatingSRS
Asset asset = assetSource.getAsset(baseResource, url, null);
- if (asset != null)
+ if (asset != null)
{
String assetURL = asset.toClientURL();
@@ -175,21 +179,19 @@ public class CSSURLRewriter extends DelegatingSRS
appendReplacement(matcher, output, assetURL);
didReplace = true;
-
- }
- else
+
+ } else
{
final String message = String.format("URL %s, referenced in file %s, doesn't exist.", url, baseResource.toURL(), baseResource);
- if (strictCssUrlRewriting)
+ if (strictCssUrlRewriting)
{
throw new RuntimeException(message);
- }
- else if (logger.isWarnEnabled())
+ } else if (logger.isWarnEnabled())
{
logger.warn(message);
}
}
-
+
}
if (!didReplace)
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
index a06752a..8a18036 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
@@ -14,6 +14,7 @@
package org.apache.tapestry5.internal.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.services.assets.ResourceDependencies;
import org.apache.tapestry5.services.assets.StreamableResource;
@@ -37,7 +38,7 @@ public abstract class DelegatingSRS implements StreamableResourceSource
this.delegate = delegate;
}
- public Set<String> fileExtensionsForContentType(String contentType)
+ public Set<String> fileExtensionsForContentType(ContentType contentType)
{
return delegate.fileExtensionsForContentType(contentType);
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
index db242cc..76a9824 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
@@ -13,6 +13,7 @@
package org.apache.tapestry5.internal.services.assets;
import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.ioc.annotations.Symbol;
@@ -32,9 +33,9 @@ import java.util.regex.Pattern;
public class JavaScriptStackAssemblerImpl implements JavaScriptStackAssembler
{
- private static final String JAVASCRIPT_CONTENT_TYPE = "text/javascript;charset=utf-8";
+ private static final ContentType JAVASCRIPT_CONTENT_TYPE = new ContentType("text/javascript;charset=utf-8");
- private ThreadLocale threadLocale;
+ private final ThreadLocale threadLocale;
private final ResourceChangeTracker resourceChangeTracker;
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceImpl.java
index e245f64..40a4e31 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceImpl.java
@@ -12,6 +12,7 @@
package org.apache.tapestry5.internal.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
import org.apache.tapestry5.services.assets.CompressionStatus;
@@ -24,7 +25,9 @@ import java.io.OutputStream;
public class StreamableResourceImpl implements StreamableResource
{
- protected final String description, contentType;
+ protected final String description;
+
+ private final ContentType contentType;
protected final CompressionStatus compression;
@@ -36,7 +39,7 @@ public class StreamableResourceImpl implements StreamableResource
protected final ResponseCustomizer responseCustomizer;
- public StreamableResourceImpl(String description, String contentType, CompressionStatus compression, long lastModified, BytestreamCache bytestreamCache, AssetChecksumGenerator assetChecksumGenerator, ResponseCustomizer responseCustomizer)
+ public StreamableResourceImpl(String description, ContentType contentType, CompressionStatus compression, long lastModified, BytestreamCache bytestreamCache, AssetChecksumGenerator assetChecksumGenerator, ResponseCustomizer responseCustomizer)
{
this.lastModified = lastModified;
this.description = description;
@@ -57,7 +60,7 @@ public class StreamableResourceImpl implements StreamableResource
return compression;
}
- public String getContentType()
+ public ContentType getContentType()
{
return contentType;
}
@@ -124,7 +127,7 @@ public class StreamableResourceImpl implements StreamableResource
}
@Override
- public StreamableResource withContentType(String newContentType)
+ public StreamableResource withContentType(ContentType newContentType)
{
return new StreamableResourceImpl(description, newContentType, compression, lastModified, bytestreamCache, assetChecksumGenerator, responseCustomizer);
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
index 1c4a67a..37cfd2d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
@@ -12,6 +12,7 @@
package org.apache.tapestry5.internal.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.internal.TapestryInternalUtils;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
@@ -46,7 +47,7 @@ public class StreamableResourceSourceImpl implements StreamableResourceSource
this.checksumGenerator = checksumGenerator;
}
- public Set<String> fileExtensionsForContentType(String contentType)
+ public Set<String> fileExtensionsForContentType(ContentType contentType)
{
Set<String> result = CollectionFactory.newSet();
@@ -86,9 +87,11 @@ public class StreamableResourceSourceImpl implements StreamableResourceSource
transformed.close();
- String contentType = rt == null ? contentTypeAnalyzer.getContentType(baseResource) : rt.getTransformedContentType();
+ ContentType contentType = rt == null
+ ? new ContentType(contentTypeAnalyzer.getContentType(baseResource))
+ : rt.getTransformedContentType();
- boolean compressable = compressionAnalyzer.isCompressable(contentType);
+ boolean compressable = compressionAnalyzer.isCompressable(contentType.getMimeType());
long lastModified = resourceChangeTracker.trackResource(baseResource);
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
index 3bf3413..6b315bd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
@@ -12,6 +12,7 @@
package org.apache.tapestry5.internal.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.services.assets.ResourceDependencies;
import org.apache.tapestry5.services.assets.StreamableResource;
@@ -33,17 +34,18 @@ public class UTF8ForTextAssets extends DelegatingSRS
super(delegate);
}
-
@Override
public StreamableResource getStreamableResource(Resource baseResource, StreamableResourceProcessing processing, ResourceDependencies dependencies) throws IOException
{
StreamableResource resource = delegate.getStreamableResource(baseResource, processing, dependencies);
- if (resource.getContentType().startsWith("text/")
- && !resource.getContentType().contains(";")
+ ContentType contentType = resource.getContentType();
+
+ if (contentType.getBaseType().equals("text")
+ && ! contentType.hasParameters()
&& processing != StreamableResourceProcessing.FOR_AGGREGATION)
{
- return resource.withContentType(resource.getContentType() + ";charset=utf-8");
+ return resource.withContentType(contentType.withCharset("utf-8"));
}
return resource;
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
index cb8e886..21de19b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
@@ -1,5 +1,3 @@
-// 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
@@ -16,6 +14,7 @@ package org.apache.tapestry5.internal.services.javascript;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.dom.Element;
+import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.Resource;
@@ -82,7 +81,7 @@ public class ModuleManagerImpl implements ModuleManager
classpathRoot = assetSource.resourceForPath("");
extensions = CollectionFactory.newSet("js");
- extensions.addAll(streamableResourceSource.fileExtensionsForContentType("text/javascript"));
+ extensions.addAll(streamableResourceSource.fileExtensionsForContentType(InternalConstants.JAVASCRIPT_CONTENT_TYPE));
baseConfig = buildBaseConfig(configuration, !productionMode);
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
index a3c8e54..f604c05 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
@@ -1,5 +1,3 @@
-// Copyright 2007-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
@@ -14,6 +12,7 @@
package org.apache.tapestry5.internal.test;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.internal.services.CookieSink;
import org.apache.tapestry5.internal.services.CookieSource;
import org.apache.tapestry5.ioc.MappedConfiguration;
@@ -66,9 +65,9 @@ public class PageTesterModule
// on.
configuration.add(ResponseCompressionAnalyzer.class, new ResponseCompressionAnalyzer()
{
- public boolean isGZipEnabled(String contentType)
+ public boolean isGZipEnabled(ContentType contentType)
{
- return locator.getObject(CompressionAnalyzer.class, null).isCompressable(contentType);
+ return locator.getObject(CompressionAnalyzer.class, null).isCompressable(contentType.getMimeType());
}
public boolean isGZipSupported()
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java
index d9a61b2..3518f20 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java
@@ -1,5 +1,3 @@
-// Copyright 2009-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
@@ -14,6 +12,7 @@
package org.apache.tapestry5.services;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.services.assets.CompressionAnalyzer;
/**
@@ -41,5 +40,5 @@ public interface ResponseCompressionAnalyzer
* @return true if the content can be compressed for the current request
* @since 5.4
*/
- boolean isGZipEnabled(String contentType);
+ boolean isGZipEnabled(ContentType contentType);
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
index 457bd47..686fa58 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
@@ -1,5 +1,3 @@
-// Copyright 2011, 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
@@ -14,6 +12,7 @@
package org.apache.tapestry5.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.ioc.Resource;
import java.io.IOException;
@@ -35,7 +34,7 @@ public interface ResourceTransformer
*
* @since 5.4
*/
- String getTransformedContentType();
+ ContentType getTransformedContentType();
/**
* Read the source input stream and provide a new input stream of the transformed content.
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
index 9f52fd6..255f35a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
@@ -12,7 +12,9 @@
package org.apache.tapestry5.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.ioc.annotations.IncompatibleChange;
import java.io.IOException;
import java.io.InputStream;
@@ -40,9 +42,10 @@ public interface StreamableResource
CompressionStatus getCompression();
/**
- * Returns the MIME content type, for example, "image/jpeg".
+ * Returns the resource's content type.
*/
- String getContentType();
+ @IncompatibleChange(release = "5.4", details = "Changed from type String to ContentType")
+ ContentType getContentType();
/**
* The size, in bytes, of the underlying bytestream.
@@ -102,5 +105,5 @@ public interface StreamableResource
* @param newContentType
* @since 5.4
*/
- StreamableResource withContentType(String newContentType);
+ StreamableResource withContentType(ContentType newContentType);
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
index 4a35499..70974aa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
@@ -14,6 +14,7 @@
package org.apache.tapestry5.services.assets;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
@@ -38,12 +39,12 @@ public interface StreamableResourceSource
* based for a file with that extension.
*
* @param contentType
- * to search for
- * @return set of file extension, possibly empty, in no particular order. These are the bare extensions, i.e.
- * "js", "coffee".
+ * to search for (just a MIME type, such as "text/javascript")
+ * @return set of file extension, possibly empty, in no particular order. These are the bare extensions, e.g.,
+ * "js", "coffee".
* @since 5.4
*/
- Set<String> fileExtensionsForContentType(String contentType);
+ Set<String> fileExtensionsForContentType(ContentType contentType);
/**
* Converts a Resource (which must be non-null and exist) into a streamable resource, along with
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java b/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java
index 75d22a7..d3ad2f1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java
@@ -1,5 +1,3 @@
-// Copyright 2007, 2008, 2010 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
@@ -49,7 +47,7 @@ public class TextStreamResponse implements StreamResponse
*/
public TextStreamResponse(String contentType, String charset, String text)
{
- this(new ContentType(contentType, charset), text);
+ this(new ContentType(contentType).withCharset(charset), text);
}
public TextStreamResponse(ContentType contentType, String text)
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java
index 2e16fc9..b469efc 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java
@@ -1,5 +1,3 @@
-// Copyright 2007, 2008 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
@@ -15,12 +13,13 @@
package org.apache.tapestry5.root;
import org.apache.tapestry5.ContentType;
-import org.testng.Assert;
+import org.apache.tapestry5.ioc.test.TestBase;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.List;
-public class ContentTypeTest extends Assert
+public class ContentTypeTest extends TestBase
{
@Test
public void simple_equals()
@@ -73,10 +72,41 @@ public class ContentTypeTest extends Assert
assertEquals(contentType.getCharset(), "utf-8");
+ assertTrue(contentType.hasParameters());
+
String nonexistant = contentType.getParameter("nonexistant");
+
assertTrue(nonexistant == null);
}
+ @DataProvider
+ public Object[][] invalid_content_type_strings_data()
+ {
+ return new Object[][]{
+ {""},
+ {"foo/"},
+ {"foo/bar;"},
+ {"foo/bar;baz"},
+ {"foo/bar;baz="},
+ {"foo/bar;baz=biff;"}
+ };
+ }
+
+ @Test(dataProvider = "invalid_content_type_strings_data")
+ public void invalid_content_type_strings(String input)
+ {
+ try
+ {
+ new ContentType(input);
+
+ unreachable();
+ } catch (IllegalArgumentException ex)
+ {
+
+ }
+
+ }
+
@Test
public void parse_without_parameters() throws Exception
{
@@ -89,40 +119,39 @@ public class ContentTypeTest extends Assert
assertEquals(contentType.getMimeType(), "text/html");
assertTrue(contentType.getParameterNames().isEmpty());
+
+ assertFalse(contentType.hasParameters());
}
@Test
public void unparse_with_parameters() throws Exception
{
- ContentType contentType = new ContentType();
-
- contentType.setBaseType("text");
- contentType.setSubType("html");
- contentType.setParameter("charset", "utf-8");
+ ContentType contentType = new ContentType("text/html").withCharset("utf-8");
- assertEquals(contentType.unparse(), "text/html;charset=utf-8");
+ assertEquals(contentType.toString(), "text/html;charset=utf-8");
}
@Test
public void unparse_no_parameters() throws Exception
{
- ContentType contentType = new ContentType();
-
- contentType.setBaseType("text");
- contentType.setSubType("html");
+ ContentType contentType = new ContentType("text/html");
- assertEquals(contentType.unparse(), "text/html");
+ assertEquals(contentType.toString(), "text/html");
}
@Test
- public void to_string_is_unparse()
+ public void add_charset() throws Exception
{
- ContentType contentType = new ContentType();
+ ContentType base = new ContentType("text/html");
+
+ ContentType charset = base.withCharset("utf-8");
+
+ assertTrue(charset.hasParameters());
- contentType.setBaseType("text");
- contentType.setSubType("html");
- contentType.setParameter("charset", "utf-8");
+ assertNotSame(base, charset);
+ assertNotEquals(base, charset);
- assertEquals(contentType.toString(), contentType.unparse());
+ assertEquals(base.toString(), "text/html");
+ assertEquals(charset.toString(), "text/html;charset=utf-8");
}
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CoffeeScriptCompiler.java
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CoffeeScriptCompiler.java b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CoffeeScriptCompiler.java
index 1f11579..cdbf504 100644
--- a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CoffeeScriptCompiler.java
+++ b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CoffeeScriptCompiler.java
@@ -1,5 +1,3 @@
-// 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
@@ -15,7 +13,9 @@
package org.apache.tapestry5.internal.webresources;
import org.apache.commons.io.IOUtils;
+import org.apache.tapestry5.ContentType;
import org.apache.tapestry5.annotations.Path;
+import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.ioc.OperationTracker;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
@@ -36,9 +36,9 @@ public class CoffeeScriptCompiler implements ResourceTransformer
private final RhinoExecutorPool executorPool;
@Override
- public String getTransformedContentType()
+ public ContentType getTransformedContentType()
{
- return "text/javascript";
+ return InternalConstants.JAVASCRIPT_CONTENT_TYPE;
}
public CoffeeScriptCompiler(@Path("classpath:org/apache/tapestry5/webresources/internal/coffee-script.js")
@@ -64,7 +64,7 @@ public class CoffeeScriptCompiler implements ResourceTransformer
}
- private String getString(NativeObject object, String key)
+ private static String getString(NativeObject object, String key)
{
return object.get(key).toString();
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/DelegatingResourceTransformer.java
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/DelegatingResourceTransformer.java b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/DelegatingResourceTransformer.java
new file mode 100644
index 0000000..75cccbd
--- /dev/null
+++ b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/DelegatingResourceTransformer.java
@@ -0,0 +1,32 @@
+// 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 org.apache.tapestry5.ContentType;
+import org.apache.tapestry5.services.assets.ResourceTransformer;
+
+public abstract class DelegatingResourceTransformer implements ResourceTransformer
+{
+ protected final ResourceTransformer delegate;
+
+ protected DelegatingResourceTransformer(ResourceTransformer delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public ContentType getTransformedContentType()
+ {
+ return delegate.getTransformedContentType();
+ }
+}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/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 ebaf35d..e60568a 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,5 +1,3 @@
-// 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
@@ -18,6 +16,7 @@ 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.tapestry5.ContentType;
import org.apache.tapestry5.internal.services.assets.BytestreamCache;
import org.apache.tapestry5.ioc.Resource;
import org.apache.tapestry5.services.assets.ResourceDependencies;
@@ -33,12 +32,14 @@ import java.io.UnsupportedEncodingException;
*/
public class LessResourceTransformer implements ResourceTransformer
{
+ private static final ContentType CSS = new ContentType("text/css");
+
private final LessCompiler compiler = new DefaultLessCompiler();
@Override
- public String getTransformedContentType()
+ public ContentType getTransformedContentType()
{
- return "text/css";
+ return CSS;
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/85622bc3/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
index 904fa54..4731004 100644
--- a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
+++ b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
@@ -126,17 +126,11 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
}
}
- private ResourceTransformer wrapWithTracking(final String sourceName, final String targetName, final ResourceTransformer core)
+ private ResourceTransformer wrapWithTracking(final String sourceName, final String targetName, ResourceTransformer core)
{
- return new ResourceTransformer()
+ return new DelegatingResourceTransformer(core)
{
@Override
- public String getTransformedContentType()
- {
- return core.getTransformedContentType();
- }
-
- @Override
public InputStream transform(final Resource source, final ResourceDependencies dependencies) throws IOException
{
final String description = String.format("Compiling %s from %s to %s", source, sourceName, targetName);
@@ -146,29 +140,23 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
@Override
public InputStream perform() throws IOException
{
- return core.transform(source, dependencies);
+ return delegate.transform(source, dependencies);
}
});
}
};
}
- private ResourceTransformer wrapWithTiming(final String targetName, final ResourceTransformer coreCompiler)
+ private ResourceTransformer wrapWithTiming(final String targetName, ResourceTransformer coreCompiler)
{
- return new ResourceTransformer()
+ return new DelegatingResourceTransformer(coreCompiler)
{
@Override
- public String getTransformedContentType()
- {
- return coreCompiler.getTransformedContentType();
- }
-
- @Override
public InputStream transform(final Resource source, final ResourceDependencies dependencies) throws IOException
{
final long startTime = System.nanoTime();
- InputStream result = coreCompiler.transform(source, dependencies);
+ InputStream result = delegate.transform(source, dependencies);
final long elapsedTime = System.nanoTime() - startTime;
@@ -188,19 +176,13 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
* somewhat primitive: a change to *any* resource in a given domain results in the cache of all of those resources
* being discarded.
*/
- private ResourceTransformer wrapWithInMemoryCaching(final ResourceTransformer core, final String targetName)
+ private ResourceTransformer wrapWithInMemoryCaching( ResourceTransformer core, final String targetName)
{
- return new ResourceTransformer()
+ return new DelegatingResourceTransformer(core)
{
final Map<Resource, Compiled> cache = CollectionFactory.newConcurrentMap();
@Override
- public String getTransformedContentType()
- {
- return core.getTransformedContentType();
- }
-
- @Override
public InputStream transform(Resource source, ResourceDependencies dependencies) throws IOException
{
Compiled compiled = cache.get(source);
@@ -215,7 +197,7 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
compiled = new Compiled(source);
- InputStream is = core.transform(source, new ResourceDependenciesSplitter(dependencies, compiled));
+ InputStream is = delegate.transform(source, new ResourceDependenciesSplitter(dependencies, compiled));
compiled.store(is);
@@ -228,17 +210,11 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
};
}
- private ResourceTransformer wrapWithFileSystemCaching(final ResourceTransformer core, final String targetName)
+ private ResourceTransformer wrapWithFileSystemCaching( ResourceTransformer core, final String targetName)
{
- return new ResourceTransformer()
+ return new DelegatingResourceTransformer(core)
{
@Override
- public String getTransformedContentType()
- {
- return core.getTransformedContentType();
- }
-
- @Override
public InputStream transform(Resource source, ResourceDependencies dependencies) throws IOException
{
long checksum = ResourceTransformUtils.toChecksum(source);
@@ -254,7 +230,7 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
return new BufferedInputStream(new FileInputStream(cacheFile));
}
- InputStream compiled = core.transform(source, dependencies);
+ InputStream compiled = delegate.transform(source, dependencies);
// We need the InputStream twice; once to return, and once to write out to the cache file for later.
[6/6] git commit: Perform lookup by ContentType mimeType (a String),
not the ContentType itself
Posted by hl...@apache.org.
Perform lookup by ContentType mimeType (a String), not the ContentType itself
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/475af4cc
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/475af4cc
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/475af4cc
Branch: refs/heads/master
Commit: 475af4cc9e7385df17d9afd560076c2ec13ae374
Parents: 820ffe7
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:14:30 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:14:30 2014 -0700
----------------------------------------------------------------------
.../internal/services/assets/MasterResourceMinimizer.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/475af4cc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
index 6b62543..1b42702 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
@@ -1,5 +1,3 @@
-// Copyright 2011 The Apache Software Foundation
-//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
@@ -39,7 +37,7 @@ public class MasterResourceMinimizer implements ResourceMinimizer
/** Does nothing; an override of this service can be installed to provide minimization. */
public StreamableResource minimize(StreamableResource resource) throws IOException
{
- ResourceMinimizer minimizer = configuration.get(resource.getContentType());
+ ResourceMinimizer minimizer = configuration.get(resource.getContentType().getMimeType());
return minimizer == null ? resource : minimizer.minimize(resource);
}
[4/6] git commit: Fix out-of-date message (WRO4J is not longer used)
Posted by hl...@apache.org.
Fix out-of-date message (WRO4J is not longer used)
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/deb317ed
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/deb317ed
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/deb317ed
Branch: refs/heads/master
Commit: deb317ed2e4cac88d0d724eb1a75908c40ecbaed
Parents: fc5fe93
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:13:53 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:13:53 2014 -0700
----------------------------------------------------------------------
.../src/test/resources/t5/webresources/pages/Index.tml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/deb317ed/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml b/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
index 26a47ee..3d26bd2 100644
--- a/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
+++ b/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
@@ -1,6 +1,6 @@
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
- <p>This page is used to demonstrate the integration of WRO4J.</p>
+ <p>This page is used to demonstrate the integration of Google Closure (for JavaScript minimization) and YUI's CSSCompressor (for CSS minification).</p>
<div class="alert alert-success" id="banner"/>
[2/6] git commit: Do correct check for the text/css content type
Posted by hl...@apache.org.
Do correct check for the text/css content type
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/6aebeeaf
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/6aebeeaf
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/6aebeeaf
Branch: refs/heads/master
Commit: 6aebeeafcd5ce582a5fc4db6a45a314a69ee4d73
Parents: 85622bc
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:02:11 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:02:11 2014 -0700
----------------------------------------------------------------------
.../apache/tapestry5/internal/services/assets/CSSURLRewriter.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6aebeeaf/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
index 042781f..1a60a10 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
@@ -89,7 +89,7 @@ public class CSSURLRewriter extends DelegatingSRS
{
StreamableResource base = delegate.getStreamableResource(baseResource, processing, dependencies);
- if (base.getContentType().equals("text/css"))
+ if (base.getContentType().equals(CSS_CONTENT_TYPE))
{
return filter(base, baseResource);
}
[6/6] git commit: Perform lookup by ContentType mimeType (a String),
not the ContentType itself
Posted by hl...@apache.org.
Perform lookup by ContentType mimeType (a String), not the ContentType itself
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/475af4cc
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/475af4cc
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/475af4cc
Branch: refs/heads/master
Commit: 475af4cc9e7385df17d9afd560076c2ec13ae374
Parents: 820ffe7
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:14:30 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:14:30 2014 -0700
----------------------------------------------------------------------
.../internal/services/assets/MasterResourceMinimizer.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/475af4cc/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
index 6b62543..1b42702 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
@@ -1,5 +1,3 @@
-// Copyright 2011 The Apache Software Foundation
-//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
@@ -39,7 +37,7 @@ public class MasterResourceMinimizer implements ResourceMinimizer
/** Does nothing; an override of this service can be installed to provide minimization. */
public StreamableResource minimize(StreamableResource resource) throws IOException
{
- ResourceMinimizer minimizer = configuration.get(resource.getContentType());
+ ResourceMinimizer minimizer = configuration.get(resource.getContentType().getMimeType());
return minimizer == null ? resource : minimizer.minimize(resource);
}
[4/6] git commit: Fix out-of-date message (WRO4J is not longer used)
Posted by hl...@apache.org.
Fix out-of-date message (WRO4J is not longer used)
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/deb317ed
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/deb317ed
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/deb317ed
Branch: refs/heads/master
Commit: deb317ed2e4cac88d0d724eb1a75908c40ecbaed
Parents: fc5fe93
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:13:53 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:13:53 2014 -0700
----------------------------------------------------------------------
.../src/test/resources/t5/webresources/pages/Index.tml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/deb317ed/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml b/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
index 26a47ee..3d26bd2 100644
--- a/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
+++ b/tapestry-webresources/src/test/resources/t5/webresources/pages/Index.tml
@@ -1,6 +1,6 @@
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
- <p>This page is used to demonstrate the integration of WRO4J.</p>
+ <p>This page is used to demonstrate the integration of Google Closure (for JavaScript minimization) and YUI's CSSCompressor (for CSS minification).</p>
<div class="alert alert-success" id="banner"/>
[3/6] git commit: Ensure that the UTF8ForTextAssets interceptor
operates on the output of the CSSURLRewrite interceptor
Posted by hl...@apache.org.
Ensure that the UTF8ForTextAssets interceptor operates on the output of the CSSURLRewrite interceptor
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/fc5fe930
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/fc5fe930
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/fc5fe930
Branch: refs/heads/master
Commit: fc5fe93073d752badad8e57031592937d99f0028
Parents: 6aebeea
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:04:19 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:04:19 2014 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/tapestry5/modules/AssetsModule.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fc5fe930/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
index b070ff8..b41e36e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
@@ -166,7 +166,7 @@ public class AssetsModule
* @since 5.4
*/
@Decorate(id = "TextUTF8", serviceInterface = StreamableResourceSource.class)
- @Order("after:CSSURLRewrite")
+ @Order("before:CSSURLRewrite")
public StreamableResourceSource setupTextAssetsAsUTF8(StreamableResourceSource delegate)
{
return new UTF8ForTextAssets(delegate);
[3/6] git commit: Ensure that the UTF8ForTextAssets interceptor
operates on the output of the CSSURLRewrite interceptor
Posted by hl...@apache.org.
Ensure that the UTF8ForTextAssets interceptor operates on the output of the CSSURLRewrite interceptor
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/fc5fe930
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/fc5fe930
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/fc5fe930
Branch: refs/heads/master
Commit: fc5fe93073d752badad8e57031592937d99f0028
Parents: 6aebeea
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:04:19 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:04:19 2014 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/tapestry5/modules/AssetsModule.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fc5fe930/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
index b070ff8..b41e36e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
@@ -166,7 +166,7 @@ public class AssetsModule
* @since 5.4
*/
@Decorate(id = "TextUTF8", serviceInterface = StreamableResourceSource.class)
- @Order("after:CSSURLRewrite")
+ @Order("before:CSSURLRewrite")
public StreamableResourceSource setupTextAssetsAsUTF8(StreamableResourceSource delegate)
{
return new UTF8ForTextAssets(delegate);
[5/6] git commit: Ensure correct ordering of interceptors
Posted by hl...@apache.org.
Ensure correct ordering of interceptors
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/820ffe77
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/820ffe77
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/820ffe77
Branch: refs/heads/master
Commit: 820ffe77946e5803065b57fffa59e3fc7534fd0b
Parents: deb317e
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:14:08 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:14:08 2014 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/tapestry5/modules/AssetsModule.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/820ffe77/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
index b41e36e..4eab1ec 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
@@ -123,7 +123,7 @@ public class AssetsModule
// Goes after cache, to ensure that what we are caching is the minified version.
@Decorate(id = "Minification", serviceInterface = StreamableResourceSource.class)
- @Order("after:Cache")
+ @Order("after:Cache,TextUTF8")
public StreamableResourceSource enableMinification(StreamableResourceSource delegate, ResourceMinimizer minimizer,
@Symbol(SymbolConstants.MINIFICATION_ENABLED)
boolean enabled)
@@ -166,7 +166,7 @@ public class AssetsModule
* @since 5.4
*/
@Decorate(id = "TextUTF8", serviceInterface = StreamableResourceSource.class)
- @Order("before:CSSURLRewrite")
+ @Order("after:Cache")
public StreamableResourceSource setupTextAssetsAsUTF8(StreamableResourceSource delegate)
{
return new UTF8ForTextAssets(delegate);
[5/6] git commit: Ensure correct ordering of interceptors
Posted by hl...@apache.org.
Ensure correct ordering of interceptors
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/820ffe77
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/820ffe77
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/820ffe77
Branch: refs/heads/master
Commit: 820ffe77946e5803065b57fffa59e3fc7534fd0b
Parents: deb317e
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:14:08 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:14:08 2014 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/tapestry5/modules/AssetsModule.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/820ffe77/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
index b41e36e..4eab1ec 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
@@ -123,7 +123,7 @@ public class AssetsModule
// Goes after cache, to ensure that what we are caching is the minified version.
@Decorate(id = "Minification", serviceInterface = StreamableResourceSource.class)
- @Order("after:Cache")
+ @Order("after:Cache,TextUTF8")
public StreamableResourceSource enableMinification(StreamableResourceSource delegate, ResourceMinimizer minimizer,
@Symbol(SymbolConstants.MINIFICATION_ENABLED)
boolean enabled)
@@ -166,7 +166,7 @@ public class AssetsModule
* @since 5.4
*/
@Decorate(id = "TextUTF8", serviceInterface = StreamableResourceSource.class)
- @Order("before:CSSURLRewrite")
+ @Order("after:Cache")
public StreamableResourceSource setupTextAssetsAsUTF8(StreamableResourceSource delegate)
{
return new UTF8ForTextAssets(delegate);
[2/6] git commit: Do correct check for the text/css content type
Posted by hl...@apache.org.
Do correct check for the text/css content type
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/6aebeeaf
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/6aebeeaf
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/6aebeeaf
Branch: refs/heads/master
Commit: 6aebeeafcd5ce582a5fc4db6a45a314a69ee4d73
Parents: 85622bc
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Sep 3 14:02:11 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Sep 3 14:02:11 2014 -0700
----------------------------------------------------------------------
.../apache/tapestry5/internal/services/assets/CSSURLRewriter.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/6aebeeaf/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
index 042781f..1a60a10 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
@@ -89,7 +89,7 @@ public class CSSURLRewriter extends DelegatingSRS
{
StreamableResource base = delegate.getStreamableResource(baseResource, processing, dependencies);
- if (base.getContentType().equals("text/css"))
+ if (base.getContentType().equals(CSS_CONTENT_TYPE))
{
return filter(base, baseResource);
}