Author: lindner
Date: Wed Mar 19 14:05:26 2008
New Revision: 639018

URL: http://svn.apache.org/viewvc?rev=639018&view=rev
Log:
Apply Patch from Changshin Lee for SHINDIG-137
- Allow web.xml customization to allow for custom data handlers for 
  the socialdata servlet

Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
    incubator/shindig/trunk/java/gadgets/src/main/webapp/WEB-INF/web.xml

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/GadgetDataServlet.java?rev=639018&r1=639017&r2=639018&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
 Wed Mar 19 14:05:26 2008
@@ -59,21 +59,31 @@
       = Logger.getLogger("org.apache.shindig.social");
 
   // TODO: get through injection
-  private static List<GadgetDataHandler> handlers
+  private static final List<GadgetDataHandler> handlers
       = new ArrayList<GadgetDataHandler>();
 
-  static {
-    // TODO: Should we just use a map from String type to Handler?
-    handlers.add(new OpenSocialDataHandler());
-    handlers.add(new StateFileDataHandler());
-  }
-
-  private CrossServletState servletState;
-
   @Override
   public void init(ServletConfig config) throws ServletException {
+    super.init(config);
     servletState = CrossServletState.get(config);
+
+    String handlerNames = config.getInitParameter("handlers");
+    if (handlerNames == null) {
+      handlers.add(new OpenSocialDataHandler());
+      handlers.add(new StateFileDataHandler());
+    } else {
+      for (String handlerName : handlerNames.split(",")) {
+        try {
+          GadgetDataHandler handler = (GadgetDataHandler) 
(Class.forName(handlerName)).newInstance();
+          handlers.add(handler);
+        } catch (Exception ex) {
+          throw new ServletException(ex);
+        }
+      }
+    }
   }
+
+  private CrossServletState servletState;
 
   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp)

Modified: incubator/shindig/trunk/java/gadgets/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/webapp/WEB-INF/web.xml?rev=639018&r1=639017&r2=639018&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/webapp/WEB-INF/web.xml 
(original)
+++ incubator/shindig/trunk/java/gadgets/src/main/webapp/WEB-INF/web.xml Wed 
Mar 19 14:05:26 2008
@@ -66,6 +66,13 @@
     <servlet-class>
       org.apache.shindig.social.GadgetDataServlet
     </servlet-class>
+    <init-param>
+<!--
+      Add your custom classes that handle opensocial requests here
+      <param-name>handlers</param-name>
+      <parame-value>com.muysite.OpenSocialDataHandler</param-value>
+-->
+    </init-param> 
   </servlet>
 
   <!-- javascript serving -->


Reply via email to