You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2012/02/23 21:21:16 UTC

svn commit: r1292940 - in /shindig/trunk: config/ features/src/main/javascript/features/container/ java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/ java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ java/gadgets/src/test/java/or...

Author: rbaxter85
Date: Thu Feb 23 20:21:15 2012
New Revision: 1292940

URL: http://svn.apache.org/viewvc?rev=1292940&view=rev
Log:
SHINDIG-1709
The RPC abritration code in the common container should allow you to pass in a list of allowed RPC services for that container

Added:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/RpcAdminData.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/RpcAdminDataTest.java
Modified:
    shindig/trunk/config/gadget-admin.json
    shindig/trunk/features/src/main/javascript/features/container/container.js
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStore.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminData.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminStore.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/GadgetAdminDataTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ServerAdminDataTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java

Modified: shindig/trunk/config/gadget-admin.json
URL: http://svn.apache.org/viewvc/shindig/trunk/config/gadget-admin.json?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/config/gadget-admin.json (original)
+++ shindig/trunk/config/gadget-admin.json Thu Feb 23 20:21:15 2012
@@ -21,20 +21,31 @@
   "default" : {
     "gadgets" : {
       "http://www.google.com/ig/modules/horoscope.xml" : {
-        "features" : ["views", "tabs", "setprefs", "dynamic-height"],
-        "type" : "blacklist"
+        "features" : {
+          "names" : ["views", "tabs", "setprefs", "dynamic-height"],
+          "type" : "blacklist"
+        }
       },
       "http://www.labpixies.com/campaigns/todo/todo.xml" : {
-        "features" : ["setprefs", "dynamic-height", "views"],
-        "type" : "whitelist"
+        "features" : {
+          "names" : ["setprefs", "dynamic-height", "views"],
+          "type" : "whitelist"
+        }
       },
       "http://localhost:8080/samplecontainer/examples/media-openGadgets/Media.xml" : {
-        "features" : [],
-        "type" : "blacklist"
+        "features" : {
+          "names" : [],
+          "type" : "blacklist"
+        }
       },
       "http://localhost:8080/*" : {
-        "features" : [],
-        "type" : "whitelist"
+        "features" : {
+          "names" : [],
+          "type" : "whitelist"
+        },
+        "rpc" : {
+          "additionalServiceIds" : []
+        }
       }
     }
   }

Modified: shindig/trunk/features/src/main/javascript/features/container/container.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/container.js?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js Thu Feb 23 20:21:15 2012
@@ -663,7 +663,7 @@ osapi.container.Container.prototype.setu
             config, osapi.container.ContainerConfig.RPC_ARBITRATOR, null);
     if(!arbitrate) {
       var self = this;
-      //This implementation uses the metadata cache to check to allowed rpc service ids
+      //This implementation uses the metadata cache to check for allowed rpc service ids
       arbitrate = function(serviceId, from) {
         var site = self.getGadgetSiteByIframeId_(from);
         if(site && site.getActiveSiteHolder()) {

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStore.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStore.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStore.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStore.java Thu Feb 23 20:21:15 2012
@@ -48,7 +48,7 @@ import com.google.inject.Singleton;
 /**
  * A simple implementation of a gadget administration store.
  *
- * @version $Id: $
+ * @since 2.5.0
  */
 @Singleton
 public class BasicGadgetAdminStore implements GadgetAdminStore {
@@ -63,7 +63,10 @@ public class BasicGadgetAdminStore imple
 
   private static final String GADGETS = "gadgets";
   private static final String FEATURES = "features";
+  private static final String FEATURES_NAMES = "names";
   private static final String TYPE = "type";
+  private static final String RPC = "rpc";
+  private static final String ADDITIONAL_RPC_SERVICE_IDS = "additionalServiceIds";
   private static final String BLACKLIST = "blacklist";
   private static final String CORE_FEATURE = "core";
 
@@ -126,6 +129,25 @@ public class BasicGadgetAdminStore imple
   }
 
   /**
+   * Creates an RpcAdminData object from a JSON object.
+   *
+   * @param rpcJson
+   *          the JSON object representing the RPC admin data.
+   * @return an RpcAdminData object.
+   * @throws JSONException thrown when the RpcAdminData object cannot be created.
+   */
+  private RpcAdminData createRpcAdminData(JSONObject rpcJson) throws JSONException {
+    RpcAdminData adminData = new RpcAdminData();
+    if(rpcJson.has(ADDITIONAL_RPC_SERVICE_IDS)) {
+      JSONArray ids = rpcJson.getJSONArray(ADDITIONAL_RPC_SERVICE_IDS);
+      for(int i = 0; i < ids.length(); i++) {
+        adminData.addAdditionalRpcServiceId(ids.getString(i));
+      }
+    }
+    return adminData;
+  }
+
+  /**
    * Creates a map of gadget administration data.
    *
    * @param gadgetsJson
@@ -158,9 +180,29 @@ public class BasicGadgetAdminStore imple
    *           thrown when the information cannot found in the JSON object.
    */
   private GadgetAdminData createGadgetAdminData(JSONObject gadgetJson) throws JSONException {
+    FeatureAdminData featureData = new FeatureAdminData();
+    RpcAdminData rpcData = new RpcAdminData();
+    if(gadgetJson.has(FEATURES)) {
+      featureData = createFeatureAdminData(gadgetJson.getJSONObject(FEATURES));
+    }
+    if(gadgetJson.has(RPC)) {
+      rpcData = createRpcAdminData(gadgetJson.getJSONObject(RPC));
+    }
+    return new GadgetAdminData(featureData, rpcData);
+  }
+
+  /**
+   * Creates the feature admin data.
+   *
+   * @param featuresJson
+   *          The JSON object representing the feature admin data.
+   * @return Feature admin data.
+   * @throws JSONException Thrown when the JSON cannot be parsed.
+   */
+  private FeatureAdminData createFeatureAdminData(JSONObject featuresJson) throws JSONException {
     FeatureAdminData data = new FeatureAdminData();
-    if (gadgetJson.has(FEATURES)) {
-      JSONArray features = gadgetJson.getJSONArray(FEATURES);
+    if (featuresJson.has(FEATURES_NAMES)) {
+      JSONArray features = featuresJson.getJSONArray(FEATURES_NAMES);
       for (int i = 0; i < features.length(); i++) {
         data.addFeature(features.getString(i));
       }
@@ -171,15 +213,15 @@ public class BasicGadgetAdminStore imple
       // Add the core feature since every gadget needs this and it can't be disabled
       data.addFeature(CORE_FEATURE);
     }
-    if (gadgetJson.has(TYPE)) {
-      String type = gadgetJson.getString(TYPE);
+    if (featuresJson.has(TYPE)) {
+      String type = featuresJson.getString(TYPE);
       if (type.equalsIgnoreCase(BLACKLIST)) {
         data.setType(Type.BLACKLIST);
         //We need core for everything so remove it if it is blacklisted
         data.removeFeature(CORE_FEATURE);
       }
     }
-    return new GadgetAdminData(data);
+    return data;
   }
 
   public GadgetAdminData getGadgetAdminData(String container, String gadgetUrl) {
@@ -404,4 +446,14 @@ public class BasicGadgetAdminStore imple
   private boolean isFeatureAdminEnabled(String container) {
     return config.getBool(container, ENABLE_FEATURE_ADMIN);
   }
+
+  public Set<String> getAdditionalRpcServiceIds(Gadget gadget) {
+    GadgetAdminData gadgetData = this.getGadgetAdminData(getSafeContainerFromGadget(gadget),
+            getSafeGadgetUrlFromGadget(gadget));
+    Set<String> ids = Sets.newHashSet();
+    if(gadgetData != null) {
+      ids.addAll(gadgetData.getRpcAdminData().getAdditionalRpcServiceIds());
+    }
+    return ids;
+  }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminData.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminData.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminData.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminData.java Thu Feb 23 20:21:15 2012
@@ -23,18 +23,20 @@ import com.google.common.base.Objects;
 /**
  * Information about the container's administration data.
  *
- * @version 3.0.0
+ * @since 2.5.0
  */
 public class GadgetAdminData {
   // In the future as more gadget admin data is created we
   // should add it here.
   private FeatureAdminData featureAdminData;
+  private RpcAdminData rpcAdminData;
 
   /**
    * Constructor
    */
   public GadgetAdminData() {
     this.featureAdminData = new FeatureAdminData();
+    this.rpcAdminData = new RpcAdminData();
   }
 
   /**
@@ -42,12 +44,19 @@ public class GadgetAdminData {
    *
    * @param featureAdminData
    *          Feature administration data for this gadget
+   * @param rpcAdminData
+   *          RPC administration data for this gadget
    */
-  public GadgetAdminData(FeatureAdminData featureAdminData) {
+  public GadgetAdminData(FeatureAdminData featureAdminData,
+          RpcAdminData rpcAdminData) {
     if (featureAdminData == null) {
       featureAdminData = new FeatureAdminData();
     }
+    if (rpcAdminData == null) {
+      rpcAdminData = new RpcAdminData();
+    }
     this.featureAdminData = featureAdminData;
+    this.rpcAdminData = rpcAdminData;
   }
 
   /**
@@ -66,20 +75,46 @@ public class GadgetAdminData {
    *          the feature admin data to set.
    */
   public void setFeatureAdminData(FeatureAdminData featureAdminData) {
+    if(featureAdminData == null) {
+      featureAdminData = new FeatureAdminData();
+    }
     this.featureAdminData = featureAdminData;
   }
 
+  /**
+   * Gets the RPC administration data.
+   *
+   * @return
+   */
+  public RpcAdminData getRpcAdminData() {
+    return this.rpcAdminData;
+  }
+
+  /**
+   * Sets the RPC administration data.
+   *
+   * @param rpcAdminData
+   *          The RPC administration data to set.
+   */
+  public void setRpcAdminData(RpcAdminData rpcAdminData) {
+    if(rpcAdminData == null) {
+      rpcAdminData = new RpcAdminData();
+    }
+    this.rpcAdminData = rpcAdminData;
+  }
+
   @Override
   public boolean equals(Object obj) {
     if (obj instanceof GadgetAdminData) {
       GadgetAdminData test = (GadgetAdminData) obj;
-      return this.getFeatureAdminData().equals(test.getFeatureAdminData());
+      return this.getFeatureAdminData().equals(test.getFeatureAdminData()) &&
+      this.getRpcAdminData().equals(test.getRpcAdminData());
     }
     return false;
   }
 
   @Override
   public int hashCode() {
-    return Objects.hashCode(this.featureAdminData);
+    return Objects.hashCode(this.featureAdminData, this.rpcAdminData);
   }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminStore.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminStore.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminStore.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/GadgetAdminStore.java Thu Feb 23 20:21:15 2012
@@ -18,6 +18,8 @@
  */
 package org.apache.shindig.gadgets.admin;
 
+import java.util.Set;
+
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.spec.Feature;
 
@@ -110,4 +112,12 @@ public interface GadgetAdminStore {
    */
   public boolean isWhitelisted(String container, String gadgetUrl);
 
+  /**
+   * Gets additional RPC service IDs to allow for the gadget.
+   *
+   * @param gadget
+   *          The gadget to get the IDs for.
+   * @return The set of additional RPC service IDs to allow for the gadget.
+   */
+  public Set<String> getAdditionalRpcServiceIds(Gadget gadget);
 }

Added: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/RpcAdminData.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/RpcAdminData.java?rev=1292940&view=auto
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/RpcAdminData.java (added)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/RpcAdminData.java Thu Feb 23 20:21:15 2012
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.shindig.gadgets.admin;
+
+import java.util.Set;
+
+import com.google.caja.util.Sets;
+import com.google.common.base.Objects;
+
+/**
+ * Represents RPC administration data.
+ *
+ * @since 2.5.0
+ */
+public class RpcAdminData {
+
+  private Set<String> additionalRpcServiceIds;
+
+  public RpcAdminData() {
+    this.additionalRpcServiceIds = Sets.newHashSet();
+  }
+
+  /**
+   * Constructor.
+   *
+   * @param additionalRpcServiceIds
+   *          Additional RPC service IDs to allow for the container.
+   */
+  public RpcAdminData(Set<String> additionalRpcServiceIds) {
+    if (additionalRpcServiceIds == null) {
+      additionalRpcServiceIds = Sets.newHashSet();
+    }
+    this.additionalRpcServiceIds = additionalRpcServiceIds;
+  }
+
+  /**
+   * Gets the additional RPC service IDs allowed for the container.
+   *
+   * @return The additional RPC service IDs allowed for the container.
+   */
+  public Set<String> getAdditionalRpcServiceIds() {
+    return additionalRpcServiceIds;
+  }
+
+  /**
+   * Sets the additional RPC service IDs allowed for the container.
+   *
+   * @param ids
+   *          The additional RPC service IDs to allow for the container.
+   */
+  public void setAdditionalRpcServiceIds(Set<String> ids) {
+    if(ids == null) {
+      ids = Sets.newHashSet();
+    }
+    this.additionalRpcServiceIds = ids;
+  }
+
+  /**
+   * Adds an additional RPC service ID for the container.
+   *
+   * @param id
+   *          The additional RPC service ID to allow for this container.
+   */
+  public void addAdditionalRpcServiceId(String id) {
+    if (id != null && id.length() > 0) {
+      this.additionalRpcServiceIds.add(id);
+    }
+  }
+
+  /**
+   * Removes a RPC service ID for the container.
+   *
+   * @param id
+   *          The RPC service ID to remove for this container.
+   */
+  public void removeAdditionalRpcServiceId(String id) {
+    this.additionalRpcServiceIds.remove(id);
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (obj instanceof RpcAdminData) {
+      RpcAdminData test = (RpcAdminData) obj;
+      return test.getAdditionalRpcServiceIds().equals(this.getAdditionalRpcServiceIds());
+    }
+    return false;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hashCode(this.additionalRpcServiceIds);
+  }
+}

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java Thu Feb 23 20:21:15 2012
@@ -234,7 +234,7 @@ public class GadgetsHandlerService {
    */
   private Set<String> getRpcServiceIds(Gadget gadget) {
     GadgetContext context = gadget.getContext();
-    Set<String> rpcEndpoints = Sets.newHashSet();
+    Set<String> rpcEndpoints = Sets.newHashSet(gadgetAdminStore.getAdditionalRpcServiceIds(gadget));
     List<Feature> modulePrefFeatures = gadget.getSpec().getModulePrefs().getAllFeatures();
     List<String> featureNames = Lists.newArrayList();
     for(Feature feature : modulePrefFeatures) {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java Thu Feb 23 20:21:15 2012
@@ -54,15 +54,25 @@ public class BasicGadgetAdminStoreTest e
 
   private static final String SAMPLE_STORE = "{" + "\"default\" : {" + "\"gadgets\" : {"
           + "\"http://www.google.com:80/ig/modules/horoscope.xml\" : {"
-          + "\"features\" : [\"views\", \"tabs\", \"setprefs\", \"dynamic-height\", \"settitle\"],"
-          + "\"type\" : \"whitelist\"" + "},"
+          + "\"features\" : {"
+          + "\"names\" : [\"views\", \"tabs\", \"setprefs\", \"dynamic-height\", \"settitle\"],"
+          + "\"type\" : \"whitelist\"" + "}},"
           + "\"http://www.labpixies.com/campaigns/todo/todo.xml\" : {"
-          + "\"features\" : [\"setprefs\", \"dynamic-height\", \"views\"],"
-          + "\"type\" : \"blacklist\"" + "},"
+          + "\"features\" : {"
+          + "\"names\" : [\"setprefs\", \"dynamic-height\", \"views\"],"
+          + "\"type\" : \"blacklist\"" + "}},"
           + "\"https://foo.com/*\" : {"
-          + "\"features\" : []" + "},"
+          + "\"features\" : {"
+          + "\"names\" : []" + "}},"
           + "\"http://*\" : {"
-          + "\"features\" : []," + "\"type\" : \"whitelist\"" + "},"+ "}" + "}" + "}";
+          + "\"features\" : {"
+          + "\"names\" : [],"
+          + "\"type\" : \"whitelist\""
+          + "},"
+          + "\"rpc\" : {"
+          + "\"additionalServiceIds\" : [\"rpc1\", \"rpc2\"]"
+          +"}}}"
+          + "}}";
 
   private static final String DEFAULT = "default";
   private static final String HOROSCOPE = "http://www.google.com/ig/modules/horoscope.xml";
@@ -93,6 +103,7 @@ public class BasicGadgetAdminStoreTest e
   private GadgetAdminData httpAdminData;
   private ContainerAdminData defaultAdminData;
   private FeatureRegistryProvider featureRegistryProvider;
+  private RpcAdminData rpcAdminData;
 
   @Before
   public void setUp() throws Exception {
@@ -101,6 +112,9 @@ public class BasicGadgetAdminStoreTest e
         return mockRegistry;
       }
     };
+
+    rpcAdminData = new RpcAdminData(Sets.newHashSet("rpc1", "rpc2"));
+
     enabledStore = new BasicGadgetAdminStore(featureRegistryProvider, enabledConfig,
         new ServerAdminData());
     enabledStore.init(SAMPLE_STORE);
@@ -109,13 +123,13 @@ public class BasicGadgetAdminStoreTest e
         new ServerAdminData());
 
     horoscopeAdminData = new GadgetAdminData(new FeatureAdminData(HOROSCOPE_FEATURES,
-            Type.WHITELIST));
+            Type.WHITELIST), new RpcAdminData());
     todoAdminData = new GadgetAdminData(new FeatureAdminData(TODO_FEATURES,
-            Type.BLACKLIST));
+            Type.BLACKLIST), new RpcAdminData());
     fooAdminData = new GadgetAdminData(new FeatureAdminData(FOO_FEATURES,
-            Type.WHITELIST));
+            Type.WHITELIST), new RpcAdminData());
     httpAdminData = new GadgetAdminData(new FeatureAdminData(HTTP_FEATURES,
-            Type.WHITELIST));
+            Type.WHITELIST), rpcAdminData);
 
     defaultAdminData = new ContainerAdminData();
     defaultAdminData.addGadgetAdminData(TODO, todoAdminData);
@@ -131,6 +145,7 @@ public class BasicGadgetAdminStoreTest e
     horoscopeAdminData = null;
     todoAdminData = null;
     defaultAdminData = null;
+    rpcAdminData = null;
   }
 
   private void mockGadget(List<Feature> allFeatures) {
@@ -254,7 +269,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature(gadgetRequiredFeatureNames.get(1), true),
             createMockFeature(gadgetRequiredFeatureNames.get(2), true));
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, null));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -276,7 +291,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature(gadgetRequiredFeatureNames.get(1), true),
             createMockFeature(gadgetRequiredFeatureNames.get(2), true));
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, null));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -297,7 +312,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature(gadgetRequiredFeatureNames.get(1), true));
     FeatureAdminData data = new FeatureAdminData(features,Type.WHITELIST);
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, new RpcAdminData()));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -319,7 +334,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature(gadgetRequiredFeatureNames.get(2), true));
     FeatureAdminData data = new FeatureAdminData(features,Type.WHITELIST);
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, new RpcAdminData()));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -340,7 +355,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature(gadgetRequiredFeatureNames.get(1), true));
     FeatureAdminData data = new FeatureAdminData(features,Type.BLACKLIST);
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, null));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -361,7 +376,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature(gadgetRequiredFeatureNames.get(1), true));
     FeatureAdminData data = new FeatureAdminData(features,Type.BLACKLIST);
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, null));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -383,7 +398,7 @@ public class BasicGadgetAdminStoreTest e
             createMockFeature("foo5", false));
     FeatureAdminData data = new FeatureAdminData(features,Type.WHITELIST);
     enabledStore.getContainerAdminData(DEFAULT).addGadgetAdminData(TEST_GADGET,
-            new GadgetAdminData(data));
+            new GadgetAdminData(data, new RpcAdminData()));
     mockRegistryForFeatureAdmin(features, featuresAndDeps,
             allGadgetFeatures, gadgetRequiredFeatureNames);
     mockGadget(allFeatures);
@@ -444,6 +459,32 @@ public class BasicGadgetAdminStoreTest e
     assertTrue(disabledStore.isAllowedFeature(allowed, mockGadget));
   }
 
+  @Test
+  public void testGetAdditionalRpcServiceIds() throws Exception {
+    mockGadget(ImmutableList.<Feature>of(), DEFAULT, "http://example.com/gadget.xml");
+    replay();
+    assertEquals(Sets.newHashSet("rpc1", "rpc2"),
+            enabledStore.getAdditionalRpcServiceIds(mockGadget));
+    assertEquals(Sets.newHashSet(),
+            disabledStore.getAdditionalRpcServiceIds(mockGadget));
+
+    reset();
+    mockGadget(ImmutableList.<Feature>of(), DEFAULT, "https://example.com/gadget.xml");
+    replay();
+    assertEquals(Sets.newHashSet(),
+            enabledStore.getAdditionalRpcServiceIds(mockGadget));
+    assertEquals(Sets.newHashSet(),
+            disabledStore.getAdditionalRpcServiceIds(mockGadget));
+
+    reset();
+    mockGadget(ImmutableList.<Feature>of(), DEFAULT, HOROSCOPE);
+    replay();
+    assertEquals(Sets.newHashSet(),
+            enabledStore.getAdditionalRpcServiceIds(mockGadget));
+    assertEquals(Sets.newHashSet(),
+            disabledStore.getAdditionalRpcServiceIds(mockGadget));
+  }
+
   private static class FakeContainerConfig extends BasicContainerConfig {
     protected final Map<String, Object> data;
 

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java Thu Feb 23 20:21:15 2012
@@ -38,7 +38,7 @@ import com.google.common.base.Objects;
 import com.google.common.collect.Maps;
 
 /**
- * @version $Id: 3.0.0
+ * @since 2.5.0
  */
 public class ContainerAdminDataTest {
 
@@ -65,6 +65,7 @@ public class ContainerAdminDataTest {
   private ContainerAdminData emptyData;
   private ContainerAdminData nullData;
   private ContainerAdminData defaultData;
+  private RpcAdminData rpcAdminData;
 
   @Before
   public void setUp() throws Exception {
@@ -72,9 +73,10 @@ public class ContainerAdminDataTest {
     blacklist = Sets.newHashSet(EE, SELECTION);
     whitelistFeatures = new FeatureAdminData(whitelist, Type.WHITELIST);
     blacklistFeatures = new FeatureAdminData(blacklist, Type.BLACKLIST);
+    rpcAdminData = new RpcAdminData(Sets.newHashSet("rpc1", "rpc2"));
 
-    whitelistData = new GadgetAdminData(whitelistFeatures);
-    blacklistData = new GadgetAdminData(blacklistFeatures);
+    whitelistData = new GadgetAdminData(whitelistFeatures, rpcAdminData);
+    blacklistData = new GadgetAdminData(blacklistFeatures, new RpcAdminData());
 
     gadgetMap = Maps.newHashMap();
     gadgetMap.put(GADGET_URL_1, whitelistData);
@@ -103,6 +105,7 @@ public class ContainerAdminDataTest {
     emptyData = null;
     nullData = null;
     defaultData = null;
+    rpcAdminData = null;
   }
 
   @Test

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/GadgetAdminDataTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/GadgetAdminDataTest.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/GadgetAdminDataTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/GadgetAdminDataTest.java Thu Feb 23 20:21:15 2012
@@ -33,7 +33,7 @@ import com.google.caja.util.Sets;
 import com.google.common.base.Objects;
 
 /**
- * @version $Id: 3.0.0
+ * @since 2.5.0
  */
 public class GadgetAdminDataTest {
 
@@ -42,10 +42,14 @@ public class GadgetAdminDataTest {
   private static final String TABS = "tabs";
   private static final String EE = "embedded-experiences";
   private static final String SELECTION = "selection";
+  private static final String RPC1 = "rcp1";
+  private static final String RPC2 = "rpc2";
   private Set<String> whitelist;
   private Set<String> blacklist;
+  private Set<String> rpcServiceIds;
   private FeatureAdminData whitelistFeatures;
   private FeatureAdminData blacklistFeatures;
+  private RpcAdminData rpcAdminData;
   private GadgetAdminData whitelistInfo;
   private GadgetAdminData blacklistInfo;
   private GadgetAdminData nullInfo;
@@ -55,11 +59,13 @@ public class GadgetAdminDataTest {
   public void setUp() throws Exception {
     whitelist = Sets.newHashSet(VIEWS, SETPREFS, TABS);
     blacklist = Sets.newHashSet(EE, SELECTION);
+    rpcServiceIds = Sets.newHashSet(RPC1, RPC2);
     whitelistFeatures = new FeatureAdminData(whitelist, Type.WHITELIST);
     blacklistFeatures = new FeatureAdminData(blacklist, Type.BLACKLIST);
-    whitelistInfo = new GadgetAdminData(whitelistFeatures);
-    blacklistInfo = new GadgetAdminData(blacklistFeatures);
-    nullInfo = new GadgetAdminData(null);
+    rpcAdminData = new RpcAdminData(rpcServiceIds);
+    whitelistInfo = new GadgetAdminData(whitelistFeatures, rpcAdminData);
+    blacklistInfo = new GadgetAdminData(blacklistFeatures, new RpcAdminData());
+    nullInfo = new GadgetAdminData(null, null);
     defaultInfo = new GadgetAdminData();
   }
 
@@ -68,8 +74,10 @@ public class GadgetAdminDataTest {
     whitelist = null;
     whitelistInfo = null;
     blacklistInfo = null;
+    rpcServiceIds = null;
     whitelistFeatures = null;
     blacklistFeatures = null;
+    rpcAdminData = null;
     nullInfo = null;
     defaultInfo = null;
   }
@@ -83,9 +91,56 @@ public class GadgetAdminDataTest {
   }
 
   @Test
+  public void testSetFeatureAdminData() {
+    assertEquals(whitelistFeatures, whitelistInfo.getFeatureAdminData());
+    whitelistInfo.setFeatureAdminData(null);
+    assertEquals(new FeatureAdminData(), whitelistInfo.getFeatureAdminData());
+
+    assertEquals(blacklistFeatures, blacklistInfo.getFeatureAdminData());
+    blacklistInfo.setFeatureAdminData(whitelistFeatures);
+    assertEquals(whitelistFeatures, blacklistInfo.getFeatureAdminData());
+
+    assertEquals(new FeatureAdminData(), nullInfo.getFeatureAdminData());
+    nullInfo.setFeatureAdminData(whitelistFeatures);
+    assertEquals(whitelistFeatures, nullInfo.getFeatureAdminData());
+
+    assertEquals(new FeatureAdminData(), defaultInfo.getFeatureAdminData());
+    defaultInfo.setFeatureAdminData(whitelistFeatures);
+    assertEquals(whitelistFeatures, defaultInfo.getFeatureAdminData());
+  }
+
+  @Test
+  public void testGetRpcAdminData() {
+    assertEquals(rpcAdminData, whitelistInfo.getRpcAdminData());
+    assertEquals(new RpcAdminData(), blacklistInfo.getRpcAdminData());
+    assertEquals(new RpcAdminData(), nullInfo.getRpcAdminData());
+    assertEquals(new RpcAdminData(), defaultInfo.getRpcAdminData());
+  }
+
+  @Test
+  public void testSetRpcAdminData() {
+    assertEquals(rpcAdminData, whitelistInfo.getRpcAdminData());
+    whitelistInfo.setRpcAdminData(null);
+    assertEquals(new RpcAdminData(), whitelistInfo.getRpcAdminData());
+
+    assertEquals(new RpcAdminData(), blacklistInfo.getRpcAdminData());
+    blacklistInfo.setRpcAdminData(rpcAdminData);
+    assertEquals(rpcAdminData, blacklistInfo.getRpcAdminData());
+
+    assertEquals(new RpcAdminData(), nullInfo.getRpcAdminData());
+    nullInfo.setRpcAdminData(rpcAdminData);
+    assertEquals(rpcAdminData, nullInfo.getRpcAdminData());
+
+    assertEquals(new RpcAdminData(), defaultInfo.getRpcAdminData());
+    defaultInfo.setRpcAdminData(rpcAdminData);
+    assertEquals(rpcAdminData, defaultInfo.getRpcAdminData());
+  }
+
+  @Test
   public void testEquals() {
-    assertTrue(whitelistInfo.equals(new GadgetAdminData(whitelistFeatures)));
-    assertTrue(nullInfo.equals(new GadgetAdminData(null)));
+    assertTrue(whitelistInfo.equals(new GadgetAdminData(whitelistFeatures,
+            rpcAdminData)));
+    assertTrue(nullInfo.equals(new GadgetAdminData(null, null)));
     assertTrue(defaultInfo.equals(new GadgetAdminData()));
     assertTrue(nullInfo.equals(defaultInfo));
     assertFalse(whitelistInfo.equals(null));
@@ -97,10 +152,14 @@ public class GadgetAdminDataTest {
 
   @Test
   public void testHashCode() {
-    assertEquals(Objects.hashCode(whitelistFeatures), whitelistInfo.hashCode());
-    assertEquals(Objects.hashCode(blacklistFeatures), blacklistInfo.hashCode());
-    assertEquals(Objects.hashCode(new FeatureAdminData()), nullInfo.hashCode());
-    assertEquals(Objects.hashCode(new FeatureAdminData()), defaultInfo.hashCode());
+    assertEquals(Objects.hashCode(whitelistFeatures, rpcAdminData),
+            whitelistInfo.hashCode());
+    assertEquals(Objects.hashCode(blacklistFeatures, new RpcAdminData()),
+            blacklistInfo.hashCode());
+    assertEquals(Objects.hashCode(new FeatureAdminData(), new RpcAdminData()),
+            nullInfo.hashCode());
+    assertEquals(Objects.hashCode(new FeatureAdminData(), new RpcAdminData()),
+            defaultInfo.hashCode());
     assertEquals(nullInfo.hashCode(), defaultInfo.hashCode());
     assertFalse(blacklistInfo.hashCode() == whitelistInfo.hashCode());
   }

Added: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/RpcAdminDataTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/RpcAdminDataTest.java?rev=1292940&view=auto
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/RpcAdminDataTest.java (added)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/RpcAdminDataTest.java Thu Feb 23 20:21:15 2012
@@ -0,0 +1,150 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.shindig.gadgets.admin;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Set;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.caja.util.Sets;
+import com.google.common.base.Objects;
+
+/**
+ * Unit tests for RpcAdminData.
+ *
+ * @since 2.5.0
+ */
+public class RpcAdminDataTest {
+
+  private Set<String> populatedIds;
+  private RpcAdminData empty;
+  private RpcAdminData populated;
+  private RpcAdminData nullData;
+
+  @Before
+  public void setUp() throws Exception {
+    populatedIds = Sets.newHashSet("rpc1", "rpc2");
+    empty = new RpcAdminData();
+    populated = new RpcAdminData(populatedIds);
+    nullData = new RpcAdminData(null);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    empty = null;
+    populated = null;
+    populatedIds = null;
+    nullData = null;
+  }
+
+  @Test
+  public void testHashCode() {
+    assertEquals(Objects.hashCode(populatedIds), populated.hashCode());
+    assertEquals(Objects.hashCode(Sets.newHashSet()), empty.hashCode());
+    assertEquals(Objects.hashCode(Sets.newHashSet()), nullData.hashCode());
+    assertEquals(empty.hashCode(), nullData.hashCode());
+    assertFalse(populated.hashCode() == empty.hashCode());
+  }
+
+  @Test
+  public void testGetAdditionalRpcServiceIds() {
+    assertEquals(populatedIds, populated.getAdditionalRpcServiceIds());
+    assertEquals(Sets.newHashSet(), empty.getAdditionalRpcServiceIds());
+    assertEquals(Sets.newHashSet(), nullData.getAdditionalRpcServiceIds());
+    assertEquals(empty.getAdditionalRpcServiceIds(), nullData.getAdditionalRpcServiceIds());
+    assertFalse(populated.getAdditionalRpcServiceIds().equals(empty.getAdditionalRpcServiceIds()));
+  }
+
+  @Test
+  public void testSetAdditionalRpcServiceIds() {
+    assertEquals(populatedIds, populated.getAdditionalRpcServiceIds());
+    Set<String> emptySet = Sets.newHashSet();
+    populated.setAdditionalRpcServiceIds(emptySet);
+    assertEquals(Sets.newHashSet(), populated.getAdditionalRpcServiceIds());
+
+    assertEquals(Sets.newHashSet(), empty.getAdditionalRpcServiceIds());
+    empty.setAdditionalRpcServiceIds(populatedIds);
+    assertEquals(populatedIds, empty.getAdditionalRpcServiceIds());
+
+    assertEquals(Sets.newHashSet(), nullData.getAdditionalRpcServiceIds());
+    nullData.setAdditionalRpcServiceIds(populatedIds);
+    assertEquals(populatedIds, nullData.getAdditionalRpcServiceIds());
+  }
+
+  @Test
+  public void testAddAdditionalRpcServiceId() {
+    assertEquals(populatedIds, populated.getAdditionalRpcServiceIds());
+    Set<String> newIds = Sets.newHashSet(populatedIds);
+    populated.addAdditionalRpcServiceId("rpc3");
+    populated.addAdditionalRpcServiceId(null);
+    newIds.add("rpc3");
+    assertEquals(newIds, populated.getAdditionalRpcServiceIds());
+
+    Set<String> emptyRpcIds = Sets.newHashSet();
+    assertEquals(emptyRpcIds, empty.getAdditionalRpcServiceIds());
+    empty.addAdditionalRpcServiceId("rpc4");
+    empty.addAdditionalRpcServiceId(null);
+    emptyRpcIds.add("rpc4");
+    assertEquals(emptyRpcIds, empty.getAdditionalRpcServiceIds());
+
+    emptyRpcIds = Sets.newHashSet();
+    assertEquals(emptyRpcIds, nullData.getAdditionalRpcServiceIds());
+    nullData.addAdditionalRpcServiceId("rpc4");
+    nullData.addAdditionalRpcServiceId(null);
+    emptyRpcIds.add("rpc4");
+    assertEquals(emptyRpcIds, nullData.getAdditionalRpcServiceIds());
+  }
+
+  @Test
+  public void testRemoveAdditionalRpcServiceId() {
+    assertEquals(populatedIds, populated.getAdditionalRpcServiceIds());
+    populated.removeAdditionalRpcServiceId("rpc1");
+    populated.removeAdditionalRpcServiceId(null);
+    Set<String> newIds = Sets.newHashSet("rpc2");
+    assertEquals(newIds, populated.getAdditionalRpcServiceIds());
+
+    Set<String> emptyRpcIds = Sets.newHashSet();
+    assertEquals(emptyRpcIds, empty.getAdditionalRpcServiceIds());
+    empty.removeAdditionalRpcServiceId("rpc1");
+    empty.removeAdditionalRpcServiceId("");
+    assertEquals(emptyRpcIds, empty.getAdditionalRpcServiceIds());
+
+    emptyRpcIds = Sets.newHashSet();
+    assertEquals(emptyRpcIds, nullData.getAdditionalRpcServiceIds());
+    nullData.removeAdditionalRpcServiceId("rpc1");
+    nullData.removeAdditionalRpcServiceId("");
+    assertEquals(emptyRpcIds, nullData.getAdditionalRpcServiceIds());
+  }
+
+  @Test
+  public void testEqualsObject() {
+    assertTrue(new RpcAdminData(populatedIds).equals(populated));
+    assertTrue(new RpcAdminData().equals(empty));
+    assertTrue(new RpcAdminData().equals(nullData));
+    assertTrue(nullData.equals(empty));
+    assertFalse(populated.equals(empty));
+  }
+
+}

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ServerAdminDataTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ServerAdminDataTest.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ServerAdminDataTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ServerAdminDataTest.java Thu Feb 23 20:21:15 2012
@@ -37,7 +37,7 @@ import com.google.common.base.Objects;
 import com.google.common.collect.Maps;
 
 /**
- * @version $Id: $
+ * @since 2.5.0
  */
 public class ServerAdminDataTest {
 
@@ -57,6 +57,7 @@ public class ServerAdminDataTest {
   private FeatureAdminData blacklistFeatures;
   private GadgetAdminData whitelistInfo;
   private GadgetAdminData blacklistInfo;
+  private RpcAdminData rpcAdminData;
   private Map<String, GadgetAdminData> defaultMap;
   private Map<String, GadgetAdminData> myMap;
   private Map<String, ContainerAdminData> containerMap;
@@ -73,9 +74,10 @@ public class ServerAdminDataTest {
     blacklist = Sets.newHashSet(EE, SELECTION);
     whitelistFeatures = new FeatureAdminData(whitelist, Type.WHITELIST);
     blacklistFeatures = new FeatureAdminData(blacklist, Type.BLACKLIST);
+    rpcAdminData = new RpcAdminData(Sets.newHashSet("rpc1", "rpc2"));
 
-    whitelistInfo = new GadgetAdminData(whitelistFeatures);
-    blacklistInfo = new GadgetAdminData(blacklistFeatures);
+    whitelistInfo = new GadgetAdminData(whitelistFeatures, rpcAdminData);
+    blacklistInfo = new GadgetAdminData(blacklistFeatures, new RpcAdminData());
 
     defaultMap = Maps.newHashMap();
     defaultMap.put(GADGET_URL_1, whitelistInfo);

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java Thu Feb 23 20:21:15 2012
@@ -43,10 +43,6 @@ import org.apache.shindig.gadgets.Gadget
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.GadgetException.Code;
 import org.apache.shindig.gadgets.RenderingContext;
-import org.apache.shindig.gadgets.admin.ContainerAdminData;
-import org.apache.shindig.gadgets.admin.FeatureAdminData;
-import org.apache.shindig.gadgets.admin.FeatureAdminData.Type;
-import org.apache.shindig.gadgets.admin.GadgetAdminData;
 import org.apache.shindig.gadgets.admin.GadgetAdminStore;
 import org.apache.shindig.gadgets.features.ApiDirective;
 import org.apache.shindig.gadgets.features.FeatureRegistry;
@@ -92,6 +88,7 @@ public class GadgetsHandlerServiceTest e
   private static final String FALLBACK = "http://example.com/data2";
   private static final String RPC_SERVICE_1 = "rcp_service_1";
   private static final String RPC_SERVICE_2 = "rpc_service_2";
+  private static final String RPC_SERVICE_3 = "rpc_service_3";
 
   private final BeanDelegator delegator = new BeanDelegator(GadgetsHandlerService.API_CLASSES,
           GadgetsHandlerService.ENUM_CONVERSION_MAP);
@@ -116,11 +113,6 @@ public class GadgetsHandlerServiceTest e
   @Before
   public void setUp() {
     tokenCodec = new FakeSecurityTokenCodec();
-    GadgetAdminData gadgetAdminData = new GadgetAdminData(
-            new FeatureAdminData(Sets.newHashSet(FakeProcessor.FEATURE2, FakeProcessor.FEATURE3),
-                    Type.WHITELIST));
-    ContainerAdminData containerAdminData = new ContainerAdminData();
-    containerAdminData.addGadgetAdminData(FakeProcessor.SPEC_URL4.toString(), gadgetAdminData);
     featureRegistryProvider = new FeatureRegistryProvider() {
       public FeatureRegistry get(String repository) throws GadgetException {
         return mockRegistry;
@@ -148,6 +140,8 @@ public class GadgetsHandlerServiceTest e
   private void setupMockGadgetAdminStore(boolean isAllowed) {
     EasyMock.expect(gadgetAdminStore.checkFeatureAdminInfo(EasyMock.isA(Gadget.class)))
     .andReturn(isAllowed).anyTimes();
+    EasyMock.expect(gadgetAdminStore.getAdditionalRpcServiceIds(EasyMock.isA(Gadget.class)))
+    .andReturn(Sets.newHashSet(RPC_SERVICE_3));
   }
 
   @SuppressWarnings("unchecked")
@@ -198,7 +192,7 @@ public class GadgetsHandlerServiceTest e
     assertEquals(4, response.getUserPrefs().get("up_one").getOrderedEnumValues().size());
     assertEquals(CURRENT_TIME_MS, response.getResponseTimeMs());
     assertEquals(METADATA_EXPIRY_TIME_MS, response.getExpireTimeMs());
-    assertEquals(Sets.newHashSet(RPC_SERVICE_1, RPC_SERVICE_2), response.getRpcServiceIds());
+    assertEquals(Sets.newHashSet(RPC_SERVICE_1, RPC_SERVICE_2, RPC_SERVICE_3), response.getRpcServiceIds());
     verify();
   }
 
@@ -222,7 +216,7 @@ public class GadgetsHandlerServiceTest e
     assertEquals(4, response.getUserPrefs().get("up_one").getOrderedEnumValues().size());
     assertEquals(CURRENT_TIME_MS, response.getResponseTimeMs());
     assertEquals(METADATA_EXPIRY_TIME_MS, response.getExpireTimeMs());
-    assertEquals(Sets.newHashSet(RPC_SERVICE_1, RPC_SERVICE_2), response.getRpcServiceIds());
+    assertEquals(Sets.newHashSet(RPC_SERVICE_1, RPC_SERVICE_2, RPC_SERVICE_3), response.getRpcServiceIds());
     verify();
   }
 
@@ -239,6 +233,7 @@ public class GadgetsHandlerServiceTest e
   public void testGetMetadataOnlyView() throws Exception {
     GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL,
             CONTAINER, null, createAuthContext(null, null), ImmutableList.of("views.*"));
+    setupMockGadgetAdminStore(false);
     setupMockRegistry(new ArrayList<String>());
     GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
     assertNull(response.getIframeUrls());

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java?rev=1292940&r1=1292939&r2=1292940&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java Thu Feb 23 20:21:15 2012
@@ -30,7 +30,6 @@ import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.codec.binary.Base64;
-import org.apache.shindig.auth.BasicSecurityTokenCodec;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.auth.SecurityTokenCodec;
 import org.apache.shindig.auth.SecurityTokenException;
@@ -85,6 +84,7 @@ import com.google.caja.reporting.SimpleM
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
@@ -96,9 +96,9 @@ public class GadgetsHandlerTest extends 
   private static final String CONTAINER = "container";
   private static final String TOKEN = "_nekot_";
   private static final Long SPEC_REFRESH_INTERVAL = 123L;
-  private static final Long EXPIRY_TIME_MS = 456L;
   private static final String RPC_SERVICE_1 = "rcp_service_1";
   private static final String RPC_SERVICE_2 = "rpc_service_2";
+  private static final String RPC_SERVICE_3 = "rpc_service_3";
 
   private final FakeTimeSource timeSource = new FakeTimeSource();
   private final FeatureRegistry mockRegistry = mock(FeatureRegistry.class);
@@ -194,6 +194,8 @@ public class GadgetsHandlerTest extends 
   private void setupGadgetAdminStore() {
     EasyMock.expect(gadgetAdminStore.checkFeatureAdminInfo(isA(Gadget.class)))
     .andReturn(true).anyTimes();
+    EasyMock.expect(gadgetAdminStore.getAdditionalRpcServiceIds(isA(Gadget.class)))
+    .andReturn((Sets.newHashSet(RPC_SERVICE_3))).anyTimes();
   }
 
   private FeatureBundle createMockFeatureBundle() {
@@ -475,6 +477,7 @@ public class GadgetsHandlerTest extends 
   @Test
   public void testAllowedRpcSecurityIds() throws Exception {
     registerGadgetsHandler(null);
+    setupGadgetAdminStore();
     setupMockRegistry(Lists.newArrayList("core"));
     JSONObject request = makeMetadataRequest(null, null, new String[] { "rpcServiceIds" },
             GADGET1_URL);
@@ -485,9 +488,10 @@ public class GadgetsHandlerTest extends 
     JSONObject gadget = response.getJSONObject(GADGET1_URL);
 
     JSONArray rpcServiceIds = gadget.getJSONArray("rpcServiceIds");
-    assertEquals(2, rpcServiceIds.length());
-    boolean result = rpcServiceIds.get(0).equals(RPC_SERVICE_2) || rpcServiceIds.get(0).equals(RPC_SERVICE_1);
-    result &= rpcServiceIds.get(1).equals(RPC_SERVICE_2) || rpcServiceIds.get(1).equals(RPC_SERVICE_1);
+    assertEquals(3, rpcServiceIds.length());
+    boolean result = rpcServiceIds.get(0).equals(RPC_SERVICE_2) || rpcServiceIds.get(0).equals(RPC_SERVICE_1) || rpcServiceIds.get(0).equals(RPC_SERVICE_3);
+    result &= rpcServiceIds.get(1).equals(RPC_SERVICE_2) || rpcServiceIds.get(1).equals(RPC_SERVICE_1) || rpcServiceIds.get(1).equals(RPC_SERVICE_3);
+    result &= rpcServiceIds.get(2).equals(RPC_SERVICE_2) || rpcServiceIds.get(2).equals(RPC_SERVICE_1) || rpcServiceIds.get(2).equals(RPC_SERVICE_3);
     assertTrue(result);
 
     verify();
@@ -521,9 +525,10 @@ public class GadgetsHandlerTest extends 
 
   @Test
   public void testMetadataOneGadgetFailure() throws Exception {
+    registerGadgetsHandler(null);
     setupGadgetAdminStore();
     replay();
-    registerGadgetsHandler(null);
+
     JSONObject request = makeMetadataRequest(null, null, null, GADGET1_URL);
     urlGenerator.throwRandomFault = true;
     RpcHandler operation = registry.getRpcHandler(request);