You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by do...@apache.org on 2008/07/16 02:46:10 UTC

svn commit: r677119 - in /incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social: ./ dataservice/ samplecontainer/

Author: doll
Date: Tue Jul 15 17:46:10 2008
New Revision: 677119

URL: http://svn.apache.org/viewvc?rev=677119&view=rev
Log:
Added support for the samplecontainer urls to the dataservice code path.



Added:
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandler.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandlerProvider.java
      - copied, changed from r676986, incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java
Modified:
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java?rev=677119&r1=677118&r2=677119&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java Tue Jul 15 17:46:10 2008
@@ -18,6 +18,15 @@
  */
 package org.apache.shindig.social;
 
+import org.apache.shindig.common.servlet.ParameterFetcher;
+import org.apache.shindig.social.abdera.SocialRouteManager;
+import org.apache.shindig.social.dataservice.DataServiceServletFetcher;
+import org.apache.shindig.social.dataservice.HandlerProvider;
+import org.apache.shindig.social.opensocial.OpenSocialDataHandler;
+import org.apache.shindig.social.samplecontainer.SampleContainerHandlerProvider;
+import org.apache.shindig.social.samplecontainer.SampleContainerRouteManager;
+import org.apache.shindig.social.samplecontainer.StateFileDataHandler;
+
 import com.google.common.collect.Lists;
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
@@ -25,12 +34,6 @@
 import com.google.inject.TypeLiteral;
 import com.google.inject.name.Names;
 
-import org.apache.shindig.common.servlet.ParameterFetcher;
-import org.apache.shindig.social.abdera.SocialRouteManager;
-import org.apache.shindig.social.dataservice.DataServiceServletFetcher;
-import org.apache.shindig.social.opensocial.OpenSocialDataHandler;
-import org.apache.shindig.social.samplecontainer.*;
-
 import java.util.List;
 
 /**
@@ -46,6 +49,7 @@
         .toProvider(GadgetDataHandlersProvider.class);
 
     bind(SocialRouteManager.class).to(SampleContainerRouteManager.class);
+    bind(HandlerProvider.class).to(SampleContainerHandlerProvider.class);
 
     bind(ParameterFetcher.class).annotatedWith(Names.named("GadgetDataServlet")).to(GadgetDataServletFetcher.class);
     bind(ParameterFetcher.class).annotatedWith(Names.named("DataServiceServlet")).to(DataServiceServletFetcher.class);

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java?rev=677119&r1=677118&r2=677119&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java Tue Jul 15 17:46:10 2008
@@ -26,7 +26,7 @@
 // TODO: We may want to extract an interface here for easier overriding
 // For now you can subclass it and inject with guice
 public class HandlerProvider {
-  Map<String, Class<? extends DataRequestHandler>> handlers;
+  protected Map<String, Class<? extends DataRequestHandler>> handlers;
 
   // Used by tests
   public HandlerProvider(Map<String, Class<? extends DataRequestHandler>> handlers) {

Added: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandler.java?rev=677119&view=auto
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandler.java (added)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandler.java Tue Jul 15 17:46:10 2008
@@ -0,0 +1,108 @@
+/*
+ * 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.social.samplecontainer;
+
+import org.apache.shindig.common.util.ImmediateFuture;
+import org.apache.shindig.social.ResponseError;
+import org.apache.shindig.social.ResponseItem;
+import org.apache.shindig.social.dataservice.DataRequestHandler;
+import org.apache.shindig.social.dataservice.RequestItem;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Map;
+import java.util.concurrent.Future;
+
+// TODO(doll): This class won't be needed anymore once we switch to the canonical data set
+public class SampleContainerHandler extends DataRequestHandler {
+  private final XmlStateFileFetcher fetcher;
+  private static final String POST_PATH = "/samplecontainer/{type}/{doevil}";
+
+  @Inject
+  public SampleContainerHandler(XmlStateFileFetcher fetcher) {
+    this.fetcher = fetcher;
+  }
+
+  /**
+   * We don't support any delete methods right now
+   */
+  protected Future<? extends ResponseItem> handleDelete(RequestItem request) {
+    throw new UnsupportedOperationException();
+  }
+
+  /**
+   * We don't distinguish between put and post for these urls
+   */
+  protected Future<? extends ResponseItem> handlePut(RequestItem request) {
+    return handlePost(request);
+  }
+
+  public static class SetStateInput {
+    public String fileUrl;
+
+    public String getFileUrl() {
+      return fileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+      this.fileUrl = fileUrl;
+    }
+  }
+
+  /**
+   * Handles /samplecontainer/setstate and /samplecontainer/setevilness/{doevil}
+   * TODO(doll): These urls aren't very resty. Consider changing the samplecontainer.html calls
+   * post.
+   */
+  protected Future<? extends ResponseItem> handlePost(RequestItem request) {
+    ResponseItem<Object> response = new ResponseItem<Object>("");
+
+    request.parseUrlWithTemplate(POST_PATH);
+    String type = request.getParameters().get("type");
+    if (type.equals("setstate")) {
+      try {
+        String stateFile = request.getParameters().get("fileurl");
+        fetcher.resetStateFile(new URI(stateFile));
+      } catch (URISyntaxException e) {
+        response = new ResponseItem<Object>(ResponseError.BAD_REQUEST,
+            "The state file was not a valid url", null);
+      }
+    } else if (type.equals("setevilness")) {
+      String doEvil = request.getParameters().get("doevil");
+      fetcher.setEvilness(Boolean.valueOf(doEvil));
+    }
+
+    return ImmediateFuture.newInstance(response);
+  }
+
+  /**
+   * Handles /samplecontainer/dumpstate
+   */
+  protected Future<? extends ResponseItem> handleGet(RequestItem request) {
+    Map<String, Object> state = Maps.newHashMap();
+    state.put("people", fetcher.getAllPeople());
+    state.put("friendIds", fetcher.getFriendIds());
+    state.put("data", fetcher.getAppData());
+    state.put("activities", fetcher.getActivities());
+    return ImmediateFuture.newInstance(new ResponseItem<Object>(state));
+  }
+}
\ No newline at end of file

Copied: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandlerProvider.java (from r676986, incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandlerProvider.java?p2=incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandlerProvider.java&p1=incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java&r1=676986&r2=677119&rev=677119&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/SampleContainerHandlerProvider.java Tue Jul 15 17:46:10 2008
@@ -16,33 +16,27 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.social.dataservice;
+package org.apache.shindig.social.samplecontainer;
+
+import org.apache.shindig.social.dataservice.ActivityHandler;
+import org.apache.shindig.social.dataservice.AppDataHandler;
+import org.apache.shindig.social.dataservice.DataRequestHandler;
+import org.apache.shindig.social.dataservice.HandlerProvider;
+import org.apache.shindig.social.dataservice.PersonHandler;
 
 import com.google.inject.Inject;
-import com.google.common.collect.Maps;
 
 import java.util.Map;
 
-// TODO: We may want to extract an interface here for easier overriding
-// For now you can subclass it and inject with guice
-public class HandlerProvider {
-  Map<String, Class<? extends DataRequestHandler>> handlers;
-
-  // Used by tests
-  public HandlerProvider(Map<String, Class<? extends DataRequestHandler>> handlers) {
-    this.handlers = handlers;
-  }
-
+public class SampleContainerHandlerProvider extends HandlerProvider {
   @Inject
-  public HandlerProvider(PersonHandler peopleHandler, ActivityHandler activityHandler,
-      AppDataHandler appDataHandler) {
-    handlers = Maps.newHashMap();
-    handlers.put(DataServiceServlet.PEOPLE_ROUTE, peopleHandler.getClass());
-    handlers.put(DataServiceServlet.ACTIVITY_ROUTE, activityHandler.getClass());
-    handlers.put(DataServiceServlet.APPDATA_ROUTE, appDataHandler.getClass());
+  public SampleContainerHandlerProvider(PersonHandler peopleHandler,
+      ActivityHandler activityHandler, AppDataHandler appDataHandler) {
+    super(peopleHandler, activityHandler, appDataHandler);
+    handlers.put("samplecontainer", SampleContainerHandler.class);
   }
 
   public Map<String, Class<? extends DataRequestHandler>> get() {
     return handlers;
   }
-}
+}
\ No newline at end of file