Author: mhermanto
Date: Wed May 18 22:17:39 2011
New Revision: 1124452
URL: http://svn.apache.org/viewvc?rev=1124452&view=rev
Log:
New JS pipeline now respects/ignores unknown feature.
http://codereview.appspot.com/4515109/
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessor.java
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/AddJslLoadedVariableProcessorTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessor.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessor.java?rev=1124452&r1=1124451&r2=1124452&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessor.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessor.java
Wed May 18 22:17:39 2011
@@ -19,8 +19,6 @@
package org.apache.shindig.gadgets.js;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.inject.Inject;
@@ -28,11 +26,9 @@ import org.apache.commons.lang.StringEsc
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.features.FeatureRegistry;
import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
-import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
import java.util.Collection;
-import java.util.List;
import java.util.Set;
/**
@@ -42,7 +38,6 @@ import java.util.Set;
*/
public class AddJslLoadedVariableProcessor implements JsProcessor {
private static final String CODE_ID = "[jsload-loaded-info]";
- private static final Joiner UNKNOWN_FEATURE_ERR = Joiner.on(", ");
@VisibleForTesting
static final String TEMPLATE =
@@ -55,7 +50,7 @@ public class AddJslLoadedVariableProcess
this.registry = featureRegistry;
}
- public boolean process(JsRequest jsRequest, JsResponseBuilder builder)
throws JsException {
+ public boolean process(JsRequest jsRequest, JsResponseBuilder builder) {
JsUri jsUri = jsRequest.getJsUri();
if (!jsUri.isNohint()) {
Set<String> result = getBundleNames(jsUri, false);
@@ -67,16 +62,11 @@ public class AddJslLoadedVariableProcess
}
// TODO: factor this logic into somewhere shared. it's now used in
GetJsContentProcessor.
- private Set<String> getBundleNames(JsUri jsUri, boolean loaded) throws
JsException {
+ private Set<String> getBundleNames(JsUri jsUri, boolean loaded) {
GadgetContext ctx = new JsGadgetContext(jsUri);
- Collection<String> libs = loaded ? jsUri.getLoadedLibs() :
jsUri.getLibs();
- List<String> unsupported = Lists.newLinkedList();
- FeatureRegistry.LookupResult lookup = registry.getFeatureResources(ctx,
libs, unsupported);
- if (!unsupported.isEmpty()) {
- String message = loaded ? "loaded" : "requested";
- throw new JsException(HttpResponse.SC_BAD_REQUEST,
- "Unknown " + message + " feature(s): " +
UNKNOWN_FEATURE_ERR.join(unsupported));
- }
+ Collection<String> libs = loaded ? jsUri.getLoadedLibs() : jsUri.getLibs();
+ // TODO: possibly warn on unknown/unrecognized libs.
+ FeatureRegistry.LookupResult lookup = registry.getFeatureResources(ctx,
libs, null);
Set<String> ret = Sets.newLinkedHashSet(); // ordered set for testability.
for (FeatureBundle bundle : lookup.getBundles()) {
ret.add(bundle.getName());
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=1124452&r1=1124451&r2=1124452&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 May 18 22:17:39 2011
@@ -18,8 +18,6 @@
package org.apache.shindig.gadgets.js;
-import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.inject.Inject;
@@ -30,12 +28,10 @@ import org.apache.shindig.gadgets.featur
import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
import org.apache.shindig.gadgets.features.FeatureRegistryProvider;
import org.apache.shindig.gadgets.features.FeatureResource;
-import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.rewrite.js.JsCompiler;
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
import org.apache.shindig.gadgets.uri.UriStatus;
-import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -43,8 +39,6 @@ import java.util.Set;
* Retrieves the requested Javascript code using a {@link JsProcessor}.
*/
public class GetJsContentProcessor implements JsProcessor {
- private static final Joiner UNKNOWN_FEATURE_ERR = Joiner.on(", ");
-
private final FeatureRegistryProvider registryProvider;
private final JsCompiler compiler;
@@ -67,8 +61,12 @@ public class GetJsContentProcessor imple
} catch (GadgetException e) {
throw new JsException(e.getHttpStatusCode(), e.getMessage());
}
- List<FeatureBundle> requestedBundles = getAllBundles(registry, ctx,
jsUri.getLibs(), false);
- List<FeatureBundle> loadedBundles = getAllBundles(registry, ctx,
jsUri.getLoadedLibs(), true);
+
+ // TODO: possibly warn on unknown/unrecognized libs.
+ List<FeatureBundle> requestedBundles = registry.getFeatureResources(
+ ctx, jsUri.getLibs(), null).getBundles();
+ List<FeatureBundle> loadedBundles = registry.getFeatureResources(
+ ctx, jsUri.getLoadedLibs(), null).getBundles();
Set<String> loadedFeatures = Sets.newHashSet();
for (FeatureBundle bundle : loadedBundles) {
@@ -97,18 +95,6 @@ public class GetJsContentProcessor imple
return true;
}
- private List<FeatureBundle> getAllBundles(FeatureRegistry registry,
GadgetContext ctx,
- Collection<String> requested, boolean loaded) throws JsException {
- List<String> unsupported = Lists.newLinkedList();
- FeatureRegistry.LookupResult lookup = registry.getFeatureResources(ctx,
requested, unsupported);
- if (!unsupported.isEmpty()) {
- String message = loaded ? "loaded" : "requested";
- throw new JsException(HttpResponse.SC_BAD_REQUEST,
- "Unknown " + message + " feature(s): " +
UNKNOWN_FEATURE_ERR.join(unsupported));
- }
- return lookup.getBundles();
- }
-
/**
* Sets the cache TTL depending on the value of the {@link UriStatus} object.
*
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessorTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessorTest.java?rev=1124452&r1=1124451&r2=1124452&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessorTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AddJslLoadedVariableProcessorTest.java
Wed May 18 22:17:39 2011
@@ -21,6 +21,7 @@ package org.apache.shindig.gadgets.js;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.isNull;
import static org.junit.Assert.assertEquals;
import com.google.common.collect.ImmutableList;
@@ -43,8 +44,6 @@ import java.util.List;
* Tests for {@link AddJslLoadedVariableProcessor}.
*/
public class AddJslLoadedVariableProcessorTest {
- private static final List<String> EMPTY_STRING_LIST =
ImmutableList.<String>of();
-
private static final String REQ_1_LIB = "foo";
private static final String REQ_1_DEP_LIB = "bar";
private static final String REQ_2_LIB = "gig";
@@ -96,6 +95,7 @@ public class AddJslLoadedVariableProcess
EasyMock.expect(request.getJsUri()).andReturn(jsUri);
}
+ @SuppressWarnings("unchecked")
private void setUpRegistry() {
FeatureBundle bundle1 = mockBundle(REQ_1_LIB);
FeatureBundle bundle2 = mockBundle(REQ_1_DEP_LIB);
@@ -103,10 +103,10 @@ public class AddJslLoadedVariableProcess
FeatureBundle bundle4 = mockBundle(LOAD_LIB);
LookupResult reqResult = mockLookupResult(Lists.newArrayList(bundle1,
bundle2, bundle3));
expect(registry.getFeatureResources(isA(JsGadgetContext.class),
eq(REQ_LIBS),
- eq(EMPTY_STRING_LIST))).andReturn(reqResult);
+ isNull(List.class))).andReturn(reqResult);
LookupResult loadResult = mockLookupResult(Lists.newArrayList(bundle4));
expect(registry.getFeatureResources(isA(JsGadgetContext.class),
eq(LOAD_LIBS),
- eq(EMPTY_STRING_LIST))).andReturn(loadResult);
+ isNull(List.class))).andReturn(loadResult);
}
private LookupResult mockLookupResult(List<FeatureBundle> bundles) {
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=1124452&r1=1124451&r2=1124452&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 May 18 22:17:39 2011
@@ -22,6 +22,7 @@ import static org.easymock.EasyMock.crea
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.isNull;
import static org.junit.Assert.*;
import java.util.List;
@@ -151,6 +152,7 @@ public class GetJsContentProcessorTest {
JsContent.fromFeature(JS_CODE2, "source2", bundle, resource2)));
}
+ @SuppressWarnings("unchecked")
private void setupJsUriAndRegistry(UriStatus uriStatus,
List<String> reqLibs, List<FeatureBundle> reqLookupBundles,
List<String> loadLibs, List<FeatureBundle> loadLookupBundles) {
@@ -168,9 +170,9 @@ public class GetJsContentProcessorTest {
LookupResult loadLookup = mockLookupResult(loadLookupBundles);
expect(registry.getFeatureResources(isA(JsGadgetContext.class),
eq(reqLibs),
- eq(EMPTY_STRING_LIST))).andReturn(reqLookup);
+ isNull(List.class))).andReturn(reqLookup);
expect(registry.getFeatureResources(isA(JsGadgetContext.class),
eq(loadLibs),
- eq(EMPTY_STRING_LIST))).andReturn(loadLookup);
+ isNull(List.class))).andReturn(loadLookup);
}
private LookupResult mockLookupResult(List<FeatureBundle> bundles) {