You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2009/04/18 00:16:10 UTC

svn commit: r766166 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/ main/java/org/apache/shindig/gadgets/render/ test/java/org/apache/shindig/gadgets/ test/java/org/apache/shindig/gadgets/render/

Author: johnh
Date: Fri Apr 17 22:16:10 2009
New Revision: 766166

URL: http://svn.apache.org/viewvc?rev=766166&view=rev
Log:
Change LockedDomainService APIs to take Gadget rather than GadgetSpec. This in turn affords access to Gadget.getAllFeatures(...) making it possible for transitively-included "locked-domain" to enable that feature.

Resolves SHINDIG-1015.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/LockedDomainService.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/HashLockedDomainServiceTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java Fri Apr 17 22:16:10 2009
@@ -125,7 +125,7 @@
       default:
         Uri iframeBaseUri = iframeBaseUris.get(context.getContainer());
         uri = iframeBaseUri != null ? new UriBuilder(iframeBaseUri) : new UriBuilder();
-        String host = lockedDomainService.getLockedDomainForGadget(spec, context.getContainer());
+        String host = lockedDomainService.getLockedDomainForGadget(gadget, context.getContainer());
         if (host != null) {
           uri.setAuthority(host);
         }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java Fri Apr 17 22:16:10 2009
@@ -19,7 +19,6 @@
 
 import org.apache.shindig.common.util.Base32;
 import org.apache.shindig.config.ContainerConfig;
-import org.apache.shindig.gadgets.spec.GadgetSpec;
 
 import com.google.common.collect.Maps;
 import com.google.inject.Inject;
@@ -88,7 +87,7 @@
     return true;
   }
 
-  public boolean gadgetCanRender(String host, GadgetSpec gadget, String container) {
+  public boolean gadgetCanRender(String host, Gadget gadget, String container) {
     container = normalizeContainer(container);
     if (enabled) {
       if (gadgetWantsLockedDomain(gadget) ||
@@ -101,7 +100,7 @@
     return true;
   }
 
-  public String getLockedDomainForGadget(GadgetSpec gadget, String container) {
+  public String getLockedDomainForGadget(Gadget gadget, String container) {
     container = normalizeContainer(container);
     if (enabled) {
       if (gadgetWantsLockedDomain(gadget) ||
@@ -112,18 +111,18 @@
     return null;
   }
 
-  private String getLockedDomain(GadgetSpec gadget, String container) {
+  private String getLockedDomain(Gadget gadget, String container) {
     String suffix = lockedSuffixes.get(container);
     if (suffix == null) {
       return null;
     }
-    byte[] sha1 = DigestUtils.sha(gadget.getUrl().toString());
+    byte[] sha1 = DigestUtils.sha(gadget.getSpec().getUrl().toString());
     String hash = new String(Base32.encodeBase32(sha1));
     return hash + suffix;
   }
 
-  private boolean gadgetWantsLockedDomain(GadgetSpec gadget) {
-    return gadget.getModulePrefs().getFeatures().containsKey("locked-domain");
+  private boolean gadgetWantsLockedDomain(Gadget gadget) {
+    return gadget.getAllFeatures().contains("locked-domain");
   }
 
   private boolean hostRequiresLockedDomain(String host) {

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/LockedDomainService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/LockedDomainService.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/LockedDomainService.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/LockedDomainService.java Fri Apr 17 22:16:10 2009
@@ -18,8 +18,6 @@
  */
 package org.apache.shindig.gadgets;
 
-import org.apache.shindig.gadgets.spec.GadgetSpec;
-
 import com.google.inject.ImplementedBy;
 
 /**
@@ -45,7 +43,7 @@
    * @param container container
    * @return true if the gadget can render
    */
-  boolean gadgetCanRender(String host, GadgetSpec gadget, String container);
+  boolean gadgetCanRender(String host, Gadget gadget, String container);
 
   /**
    * Calculate the locked domain for a particular gadget on a particular
@@ -56,6 +54,6 @@
    * @return the host name on which the gadget should render, or null if locked domain should not
    * be used to render this gadget.
    */
-  public String getLockedDomainForGadget(GadgetSpec gadget, String container);
+  public String getLockedDomainForGadget(Gadget gadget, String container);
 
 }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java Fri Apr 17 22:16:10 2009
@@ -81,8 +81,7 @@
         return RenderingResults.mustRedirect(gadget.getCurrentView().getHref());
       }
 
-      GadgetSpec spec = gadget.getSpec();
-      if (!lockedDomainService.gadgetCanRender(context.getHost(), spec, context.getContainer())) {
+      if (!lockedDomainService.gadgetCanRender(context.getHost(), gadget, context.getContainer())) {
         return RenderingResults.error("Invalid domain");
       }
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java Fri Apr 17 22:16:10 2009
@@ -181,7 +181,7 @@
           "</Module>";
     GadgetSpec spec = new GadgetSpec(Uri.parse(SPEC_URL), xml);
 
-    expect(lockedDomainService.getLockedDomainForGadget(isA(GadgetSpec.class), eq(CONTAINER)))
+    expect(lockedDomainService.getLockedDomainForGadget(isA(Gadget.class), eq(CONTAINER)))
         .andReturn("locked.example.org");
     replay();
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/HashLockedDomainServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/HashLockedDomainServiceTest.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/HashLockedDomainServiceTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/HashLockedDomainServiceTest.java Fri Apr 17 22:16:10 2009
@@ -30,30 +30,43 @@
 import org.apache.shindig.gadgets.spec.GadgetSpec;
 
 import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 public class HashLockedDomainServiceTest extends EasyMockTestCase {
   private HashLockedDomainService lockedDomainService;
-  private final GadgetSpec wantsLocked = makeSpec(true, "http://somehost.com/somegadget.xml");
-  private final GadgetSpec notLocked = makeSpec(false, "not-locked");
+  private Gadget wantsLocked = null;
+  private Gadget notLocked = null;
   private final ContainerConfig requiredConfig = mock(ContainerConfig.class);
   private final ContainerConfig enabledConfig = mock(ContainerConfig.class);
 
-  private static GadgetSpec makeSpec(boolean wantsLocked, String url) {
+  private Gadget makeGadget(boolean wantsLocked, String url) {
     String gadgetXml;
+    List<String> features = new ArrayList<String>();
+    List<GadgetFeature> gadgetFeatures = new ArrayList<GadgetFeature>();
     if (wantsLocked) {
       gadgetXml =
           "<Module><ModulePrefs title=''>" +
           "  <Require feature='locked-domain'/>" +
           "</ModulePrefs><Content/></Module>";
+      features = Arrays.asList("locked-domain");
+      gadgetFeatures = Arrays.asList(new GadgetFeature("locked-domain",
+          new ArrayList<JsLibrary>(), null));
     } else {
       gadgetXml = "<Module><ModulePrefs title=''/><Content/></Module>";
     }
 
+    GadgetSpec spec = null;
     try {
-      return new GadgetSpec(Uri.parse(url), gadgetXml);
+      spec = new GadgetSpec(Uri.parse(url), gadgetXml);
     } catch (GadgetException e) {
       return null;
     }
+
+    GadgetFeatureRegistry registry = mock(GadgetFeatureRegistry.class);
+    expect(registry.getFeatures(isA(Collection.class))).andReturn(gadgetFeatures).anyTimes();
+    return new Gadget().setSpec(spec).setGadgetFeatureRegistry(registry);
   }
 
   @Override
@@ -70,6 +83,8 @@
         LOCKED_DOMAIN_SUFFIX_KEY)).andReturn("-a.example.com:8080").anyTimes();
     expect(enabledConfig.getContainers())
         .andReturn(Arrays.asList(ContainerConfig.DEFAULT_CONTAINER)).anyTimes();
+    wantsLocked = makeGadget(true, "http://somehost.com/somegadget.xml");
+    notLocked = makeGadget(false, "not-locked");
   }
 
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java?rev=766166&r1=766165&r2=766166&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java Fri Apr 17 22:16:10 2009
@@ -228,12 +228,12 @@
     protected FakeLockedDomainService() {
     }
 
-    public boolean gadgetCanRender(String host, GadgetSpec gadget, String container) {
+    public boolean gadgetCanRender(String host, Gadget gadget, String container) {
       wasChecked = true;
       return canRender;
     }
 
-    public String getLockedDomainForGadget(GadgetSpec gadget, String container) {
+    public String getLockedDomainForGadget(Gadget gadget, String container) {
       return null;
     }