Author: ddumont
Date: Wed Feb 20 18:14:58 2013
New Revision: 1448337
URL: http://svn.apache.org/r1448337
Log:
Make jscontent max-age configurable for the server.
Modified:
shindig/trunk/java/common/conf/shindig.properties
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
Modified: shindig/trunk/java/common/conf/shindig.properties
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/common/conf/shindig.properties?rev=1448337&r1=1448336&r2=1448337&view=diff
==============================================================================
--- shindig/trunk/java/common/conf/shindig.properties (original)
+++ shindig/trunk/java/common/conf/shindig.properties Wed Feb 20 18:14:58 2013
@@ -215,3 +215,9 @@ shindig.allowJSONP=true
# Comma separated tags that need to have its relative path to be resolved as
absolute.
# Possible values are RESOURCES and HYPERLINKS
shindig.gadgets.rewriter.absolutePath.tags=RESOURCES
+
+# Configure cache characteristics of js content (max-age in seconds)
+# where -1 caches "forever, 0 means "no-cache"
+shindig.jscontent.unversioned.maxage=3600
+shindig.jscontent.versioned.maxage=-1
+shindig.jscontent.invalid.maxage=0
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java?rev=1448337&r1=1448336&r2=1448337&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java
Wed Feb 20 18:14:58 2013
@@ -18,8 +18,8 @@
*/
package org.apache.shindig.gadgets.js;
-import com.google.common.collect.Sets;
-import com.google.inject.Inject;
+import java.util.List;
+import java.util.Set;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetException;
@@ -32,16 +32,25 @@ import org.apache.shindig.gadgets.rewrit
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
import org.apache.shindig.gadgets.uri.UriStatus;
-import java.util.List;
-import java.util.Set;
+import com.google.common.collect.Sets;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
/**
* Retrieves the requested Javascript code using a {@link JsProcessor}.
*/
public class GetJsContentProcessor implements JsProcessor {
+ public static final int DEFAULT_VERSIONED_MAXAGE = -1;
+ public static final int DEFAULT_UNVERSIONED_MAXAGE = 3600;
+ public static final int DEFAULT_INVALID_MAXAGE = 0;
+
private final FeatureRegistryProvider registryProvider;
private final JsCompiler compiler;
+ private int versionedMaxAge = DEFAULT_VERSIONED_MAXAGE;
+ private int unversionedMaxAge = DEFAULT_UNVERSIONED_MAXAGE;
+ private int invalidMaxAge = DEFAULT_INVALID_MAXAGE;
+
@Inject
public GetJsContentProcessor(
FeatureRegistryProvider registryProvider,
@@ -50,6 +59,25 @@ public class GetJsContentProcessor imple
this.compiler = compiler;
}
+ @Inject(optional=true)
+ public void setVersionedMaxAge(@Named("shindig.jscontent.versioned.maxage")
Integer maxAge) {
+ if (maxAge != null) {
+ versionedMaxAge = maxAge;
+ }
+ }
+ @Inject(optional=true)
+ public void
setUnversionedMaxAge(@Named("shindig.jscontent.unversioned.maxage") Integer
maxAge) {
+ if (maxAge != null) {
+ unversionedMaxAge = maxAge;
+ }
+ }
+ @Inject(optional=true)
+ public void setInvalidMaxAge(@Named("shindig.jscontent.invalid.maxage")
Integer maxAge) {
+ if (maxAge != null) {
+ invalidMaxAge = maxAge;
+ }
+ }
+
public boolean process(JsRequest request, JsResponseBuilder builder) throws
JsException {
// Get JavaScript content from features aliases request.
JsUri jsUri = request.getJsUri();
@@ -104,17 +132,14 @@ public class GetJsContentProcessor imple
protected void setResponseCacheTtl(JsResponseBuilder builder, UriStatus
vstatus) {
switch (vstatus) {
case VALID_VERSIONED:
- // Versioned files get cached indefinitely
- builder.setCacheTtlSecs(-1);
+ builder.setCacheTtlSecs(versionedMaxAge);
break;
case VALID_UNVERSIONED:
- // Unversioned files get cached for 1 hour.
- builder.setCacheTtlSecs(60 * 60);
+ builder.setCacheTtlSecs(unversionedMaxAge);
break;
case INVALID_VERSION:
// URL is invalid in some way, likely version mismatch.
- // Indicate no-cache forcing subsequent requests to regenerate URLs.
- builder.setCacheTtlSecs(0);
+ builder.setCacheTtlSecs(invalidMaxAge);
break;
}
}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java?rev=1448337&r1=1448336&r2=1448337&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
Wed Feb 20 18:14:58 2013
@@ -72,6 +72,9 @@ public class GetJsContentProcessorTest {
request = control.createMock(JsRequest.class);
response = new JsResponseBuilder();
processor = new GetJsContentProcessor(new
DefaultFeatureRegistryProvider(registry), compiler);
+
processor.setVersionedMaxAge(GetJsContentProcessor.DEFAULT_VERSIONED_MAXAGE);
+
processor.setUnversionedMaxAge(GetJsContentProcessor.DEFAULT_UNVERSIONED_MAXAGE);
+ processor.setInvalidMaxAge(GetJsContentProcessor.DEFAULT_INVALID_MAXAGE);
}
@Test
@@ -79,7 +82,7 @@ public class GetJsContentProcessorTest {
setupForVersionAndProxy(true, UriStatus.VALID_UNVERSIONED);
control.replay();
processor.process(request, response);
- checkResponse(true, 3600, JS_CODE1 + JS_CODE2, "");
+ checkResponse(true, GetJsContentProcessor.DEFAULT_UNVERSIONED_MAXAGE,
JS_CODE1 + JS_CODE2, "");
control.verify();
}
@@ -88,7 +91,7 @@ public class GetJsContentProcessorTest {
setupForVersionAndProxy(true, UriStatus.VALID_VERSIONED);
control.replay();
processor.process(request, response);
- checkResponse(true, -1, JS_CODE1 + JS_CODE2, "");
+ checkResponse(true, GetJsContentProcessor.DEFAULT_VERSIONED_MAXAGE,
JS_CODE1 + JS_CODE2, "");
control.verify();
}
@@ -97,7 +100,7 @@ public class GetJsContentProcessorTest {
setupForVersionAndProxy(true, UriStatus.INVALID_VERSION);
control.replay();
processor.process(request, response);
- checkResponse(true, 0, JS_CODE1 + JS_CODE2, "");
+ checkResponse(true, GetJsContentProcessor.DEFAULT_INVALID_MAXAGE, JS_CODE1
+ JS_CODE2, "");
control.verify();
}
@@ -106,7 +109,7 @@ public class GetJsContentProcessorTest {
setupForVersionAndProxy(false, UriStatus.VALID_UNVERSIONED);
control.replay();
processor.process(request, response);
- checkResponse(false, 3600, JS_CODE1 + JS_CODE2, "");
+ checkResponse(false, GetJsContentProcessor.DEFAULT_UNVERSIONED_MAXAGE,
JS_CODE1 + JS_CODE2, "");
control.verify();
}
@@ -129,7 +132,7 @@ public class GetJsContentProcessorTest {
control.replay();
processor.process(request, response);
- checkResponse(true, 3600, JS_CODE1, "export2", "extern2");
+ checkResponse(true, GetJsContentProcessor.DEFAULT_UNVERSIONED_MAXAGE,
JS_CODE1, "export2", "extern2");
control.verify();
}