Author: hsaputra
Date: Thu Jul 26 22:16:44 2012
New Revision: 1366211

URL: http://svn.apache.org/viewvc?rev=1366211&view=rev
Log:
Introduce ServiceFetcher interface to allow easy injection and customizaton for 
RPC service fetcher.

Added:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ServiceFetcher.java
Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultRpcServiceLookup.java
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultServiceFetcher.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultRpcServiceLookup.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultRpcServiceLookup.java?rev=1366211&r1=1366210&r2=1366211&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultRpcServiceLookup.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultRpcServiceLookup.java
 Thu Jul 26 22:16:44 2012
@@ -48,14 +48,14 @@ public class DefaultRpcServiceLookup imp
 
   private final Cache<String, Multimap<String, String>> containerServices;
 
-  private final DefaultServiceFetcher fetcher;
+  private final ServiceFetcher fetcher;
 
   /**
    * @param fetcher  RpcServiceFetcher to retrieve services available from 
endpoints
    * @param duration in seconds service definitions should remain in the cache
    */
   @Inject
-  public DefaultRpcServiceLookup(DefaultServiceFetcher fetcher,
+  public DefaultRpcServiceLookup(ServiceFetcher fetcher,
       @Named("org.apache.shindig.serviceExpirationDurationMinutes")Long 
duration) {
     this.containerServices = CacheBuilder.newBuilder()
         .expireAfterWrite(duration * 60, TimeUnit.SECONDS)

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultServiceFetcher.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultServiceFetcher.java?rev=1366211&r1=1366210&r2=1366211&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultServiceFetcher.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/DefaultServiceFetcher.java
 Thu Jul 26 22:16:44 2012
@@ -56,10 +56,10 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
- * Retrieves the rpc services for a container by fetching them from the 
container's
- * system.listMethods endpoints as defined in the container config.
+ * Default implementation for the ServiceFetcher the rpc services for a 
container by fetching
+ * them from the container's system.listMethods endpoints as defined in the 
container config.
  */
-public class DefaultServiceFetcher {
+public class DefaultServiceFetcher implements ServiceFetcher {
 
   //class name for logging purpose
   private static final String classname = 
DefaultServiceFetcher.class.getName();
@@ -139,7 +139,7 @@ public class DefaultServiceFetcher {
   }
 
   @SuppressWarnings("unchecked")
-  private List<String> getEndpointsFromContainerConfig(String container, 
String host) {
+  protected List<String> getEndpointsFromContainerConfig(String container, 
String host) {
     Map<String, Object> properties = (Map<String, Object>) 
containerConfig.getMap(container,
         GADGETS_FEATURES_CONFIG).get(OSAPI_FEATURE_CONFIG);
 
@@ -149,7 +149,7 @@ public class DefaultServiceFetcher {
     return ImmutableList.of();
   }
 
-  private Set<String> retrieveServices(String container, String endpoint) {
+  protected Set<String> retrieveServices(String container, String endpoint) {
     try {
       StringBuilder sb = new StringBuilder( 250 );
       sb.append(endpoint).append( "?method=" + SYSTEM_LIST_METHODS_METHOD );
@@ -186,7 +186,7 @@ public class DefaultServiceFetcher {
     return ImmutableSet.of();
   }
 
-  private Set<String> getServicesFromJsonResponse(String content)
+  protected Set<String> getServicesFromJsonResponse(String content)
       throws JSONException {
     ImmutableSet.Builder<String> services = ImmutableSet.builder();
     JSONObject js = new JSONObject(content);

Added: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ServiceFetcher.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ServiceFetcher.java?rev=1366211&view=auto
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ServiceFetcher.java
 (added)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ServiceFetcher.java
 Thu Jul 26 22:16:44 2012
@@ -0,0 +1,30 @@
+/*
+ * 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.render;
+
+import com.google.common.collect.Multimap;
+import com.google.inject.ImplementedBy;
+
+/**
+ * Retrieves the rpc services for a container.
+ */
+@ImplementedBy(DefaultServiceFetcher.class)
+public interface ServiceFetcher {
+  Multimap<String, String> getServicesForContainer(String container, String 
host);
+}


Reply via email to