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