Author: brianm
Date: Tue Jun 24 17:44:39 2008
New Revision: 671387
URL: http://svn.apache.org/viewvc?rev=671387&view=rev
Log:
Apply patch from Henning Schmiedehausen to llow parameter adaption when
requesting data from the container (SHINDIG-379)
Added:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/ParameterFetcher.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServletFetcher.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServletFetcher.java
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/SecurityTokenDecoder.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpGadgetContext.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/BasicOAuthStoreTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
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/abdera/AbstractSocialEntityCollectionAdapter.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java
(original)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java
Tue Jun 24 17:44:39 2008
@@ -24,6 +24,7 @@
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
+import java.util.Map;
/**
* A SecurityTokenDecoder implementation that just provides dummy data to
satisfy
@@ -44,10 +45,16 @@
*
* Returns a token with some faked out values.
*/
- public SecurityToken createToken(String stringToken)
+ public SecurityToken createToken(Map<String, String> parameters)
throws SecurityTokenException {
+
+ final String token =
parameters.get(SecurityTokenDecoder.SECURITY_TOKEN_NAME);
+ if (token == null || token.trim().length() == 0) {
+ throw new SecurityTokenException("Missing security token");
+ }
+
try {
- String[] tokens = stringToken.split(":");
+ String[] tokens = token.split(":");
return new BasicSecurityToken(
URLDecoder.decode(tokens[OWNER_INDEX], "UTF-8"),
URLDecoder.decode(tokens[VIEWER_INDEX], "UTF-8"),
Added:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/ParameterFetcher.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/ParameterFetcher.java?rev=671387&view=auto
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/ParameterFetcher.java
(added)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/ParameterFetcher.java
Tue Jun 24 17:44:39 2008
@@ -0,0 +1,35 @@
+/*
+ * 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.common.servlet;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Maps parameters from a Servlet request into a map. This is used to control
which
+ * parameters are passed on to other parts of the container. Using this
Adapter allows
+ * e.g. to pass multiple parameters into the secure token generation methods.
+ */
+
+public interface ParameterFetcher
+{
+ Map<String, String> fetch(HttpServletRequest req);
+}
+
Modified:
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/SecurityTokenDecoder.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/SecurityTokenDecoder.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/SecurityTokenDecoder.java
(original)
+++
incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/SecurityTokenDecoder.java
Tue Jun 24 17:44:39 2008
@@ -18,18 +18,26 @@
*/
package org.apache.shindig.common;
+import java.util.Map;
+
/**
* Handles verification of gadget security tokens.
*/
public interface SecurityTokenDecoder {
/**
+ * The security token value must be passed on a map value referenced by this
key. Additional
+ * parameters can be passed as seen fit.
+ */
+ String SECURITY_TOKEN_NAME = "token";
+
+ /**
* Decrypts and verifies a gadget security token to return a gadget token.
*
* @param tokenString token in wire format (probably encrypted.)
* @return the decrypted and verified token.
* @throws SecurityTokenException If tokenString is not a valid token
*/
- public SecurityToken createToken(String tokenString)
+ SecurityToken createToken(Map<String, String> tokenParameters)
throws SecurityTokenException;
}
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpGadgetContext.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpGadgetContext.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpGadgetContext.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpGadgetContext.java
Tue Jun 24 17:44:39 2008
@@ -29,6 +29,7 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Locale;
@@ -262,7 +263,7 @@
return super.getToken();
} else {
try {
- return tokenDecoder.createToken(tokenString);
+ return
tokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
tokenString));
} catch (SecurityTokenException e) {
throw new GadgetException(
GadgetException.Code.INVALID_SECURITY_TOKEN, e);
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
Tue Jun 24 17:44:39 2008
@@ -260,7 +260,7 @@
throws GadgetException {
String token = getParameter(request, SECURITY_TOKEN_PARAM, "");
try {
- return securityTokenDecoder.createToken(token);
+ return
securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
token));
} catch (SecurityTokenException e) {
throw new GadgetException(GadgetException.Code.INVALID_SECURITY_TOKEN,
e);
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/BasicOAuthStoreTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/BasicOAuthStoreTest.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/BasicOAuthStoreTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/BasicOAuthStoreTest.java
Tue Jun 24 17:44:39 2008
@@ -27,6 +27,7 @@
import net.oauth.OAuthServiceProvider;
import net.oauth.signature.RSA_SHA1;
+import org.apache.shindig.common.SecurityTokenDecoder;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;
@@ -331,7 +332,7 @@
tokenKey.setUserId("test user");
OAuthStore.TokenInfo tokenInfo =
- new OAuthStore.TokenInfo("token", "secret");
+ new OAuthStore.TokenInfo(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"secret");
expect(mockTokens.put(tokenKey, tokenInfo)).andReturn(null);
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java
Tue Jun 24 17:44:39 2008
@@ -22,6 +22,7 @@
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.isA;
+import org.apache.shindig.common.SecurityTokenDecoder;
import org.apache.shindig.common.testing.FakeGadgetToken;
import org.apache.shindig.common.util.Utf8UrlCoder;
import org.apache.shindig.gadgets.ContainerConfig;
@@ -38,6 +39,7 @@
import java.net.URI;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
@@ -209,7 +211,7 @@
public void testAuthTokenInjection_allparams() throws Exception {
expect(fixture.request.getParameter("st")).andReturn("fake-token");
- expect(securityTokenDecoder.createToken("fake-token")).andReturn(
+
expect(securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(
new FakeGadgetToken("updated-token", "{ \"foo\" : \"bar\" }"));
String content = parseBasicGadget(GadgetSpec.DEFAULT_VIEW);
JSONObject auth = parseShindigAuthConfig(content);
@@ -219,7 +221,7 @@
public void testAuthTokenInjection_none() throws Exception {
expect(fixture.request.getParameter("st")).andReturn("fake-token");
- expect(securityTokenDecoder.createToken("fake-token")).andReturn(
+
expect(securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(
new FakeGadgetToken());
String content = parseBasicGadget(GadgetSpec.DEFAULT_VIEW);
JSONObject auth = parseShindigAuthConfig(content);
@@ -228,7 +230,7 @@
public void testAuthTokenInjection_trustedJson() throws Exception {
expect(fixture.request.getParameter("st")).andReturn("fake-token");
- expect(securityTokenDecoder.createToken("fake-token")).andReturn(
+
expect(securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(
new FakeGadgetToken(null, "trusted"));
String content = parseBasicGadget(GadgetSpec.DEFAULT_VIEW);
JSONObject auth = parseShindigAuthConfig(content);
@@ -238,7 +240,7 @@
public void testAuthTokenInjection_updatedToken() throws Exception {
expect(fixture.request.getParameter("st")).andReturn("fake-token");
- expect(securityTokenDecoder.createToken("fake-token")).andReturn(
+
expect(securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(
new FakeGadgetToken("updated-token", null));
String content = parseBasicGadget(GadgetSpec.DEFAULT_VIEW);
JSONObject auth = parseShindigAuthConfig(content);
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
Tue Jun 24 17:44:39 2008
@@ -27,6 +27,7 @@
import static org.junit.Assert.assertTrue;
import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.SecurityTokenDecoder;
import org.apache.shindig.common.SecurityTokenException;
import org.apache.shindig.common.testing.FakeGadgetToken;
import org.apache.shindig.gadgets.GadgetException;
@@ -45,6 +46,7 @@
import org.junit.Test;
import java.net.URI;
+import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@@ -247,7 +249,7 @@
public void signedGetRequest() throws Exception {
// Doesn't actually sign since it returns the standard fetcher.
// Signing tests are in SigningFetcherTest
-
expect(fixture.securityTokenDecoder.createToken("fake-token")).andReturn(DUMMY_TOKEN);
+
expect(fixture.securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(DUMMY_TOKEN);
expect(fixture.request.getParameter(MakeRequestHandler.SECURITY_TOKEN_PARAM))
.andReturn("fake-token").atLeastOnce();
expect(fixture.request.getParameter(Preload.AUTHZ_ATTR))
@@ -267,7 +269,7 @@
// Doesn't actually sign since it returns the standard fetcher.
// Signing tests are in SigningFetcherTest
expectPostAndReturnBody(fixture.signingFetcher, REQUEST_BODY,
RESPONSE_BODY);
-
expect(fixture.securityTokenDecoder.createToken("fake-token")).andReturn(DUMMY_TOKEN);
+
expect(fixture.securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(DUMMY_TOKEN);
expect(fixture.request.getParameter(MakeRequestHandler.SECURITY_TOKEN_PARAM))
.andReturn("fake-token").atLeastOnce();
expect(fixture.request.getParameter(Preload.AUTHZ_ATTR))
@@ -288,7 +290,7 @@
// Signing tests are in SigningFetcherTest
expectGetAndReturnBody(fixture.signingFetcher, RESPONSE_BODY);
FakeGadgetToken authToken = new FakeGadgetToken("updated");
-
expect(fixture.securityTokenDecoder.createToken("fake-token")).andReturn(authToken);
+
expect(fixture.securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(authToken);
expect(fixture.request.getParameter(MakeRequestHandler.SECURITY_TOKEN_PARAM))
.andReturn("fake-token").atLeastOnce();
expect(fixture.request.getParameter(Preload.AUTHZ_ATTR))
@@ -308,7 +310,7 @@
// OAuth tests are in OAuthFetcherTest
expectGetAndReturnBody(fixture.oauthFetcher, RESPONSE_BODY);
FakeGadgetToken authToken = new FakeGadgetToken("updated");
-
expect(fixture.securityTokenDecoder.createToken("fake-token")).andReturn(authToken);
+
expect(fixture.securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token"))).andReturn(authToken);
expect(fixture.request.getParameter(MakeRequestHandler.SECURITY_TOKEN_PARAM))
.andReturn("fake-token").atLeastOnce();
expect(fixture.request.getParameter(Preload.AUTHZ_ATTR))
@@ -353,7 +355,7 @@
.andReturn("fake-token").atLeastOnce();
expect(fixture.request.getParameter(Preload.AUTHZ_ATTR))
.andReturn(Auth.SIGNED.toString()).atLeastOnce();
- expect(fixture.securityTokenDecoder.createToken("fake-token"))
+
expect(fixture.securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
"fake-token")))
.andThrow(new SecurityTokenException("No!"));
fixture.replay();
Modified:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServlet.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServlet.java
Tue Jun 24 17:44:39 2008
@@ -21,22 +21,25 @@
import org.apache.shindig.common.SecurityTokenDecoder;
import org.apache.shindig.common.SecurityTokenException;
import org.apache.shindig.common.servlet.InjectedServlet;
+import org.apache.shindig.common.servlet.ParameterFetcher;
import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
-
-import com.google.inject.Inject;
-import com.google.common.collect.Lists;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import com.google.common.collect.Lists;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.logging.Logger;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
/**
* Servlet for handling gadget requests for data. The request accepts one json
* parameter of the format:
@@ -57,9 +60,12 @@
private static final Logger logger
= Logger.getLogger("org.apache.shindig.social");
+ public static final String REQUEST_PARAMETER_NAME = "request";
+
private List<GadgetDataHandler> handlers;
private SecurityTokenDecoder securityTokenDecoder;
private BeanJsonConverter beanJsonConverter;
+ private ParameterFetcher parameterFetcher;
@Inject
public void setGadgetDataHandlers(List<GadgetDataHandler> handlers) {
@@ -76,21 +82,24 @@
this.beanJsonConverter = beanJsonConverter;
}
+ @Inject
+ public void setParameterFetcher(@Named("GadgetDataServlet") ParameterFetcher
parameterFetcher) {
+ this.parameterFetcher = parameterFetcher;
+ }
+
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
req.setCharacterEncoding("UTF-8");
- String requestParam = req.getParameter("request");
- String token = req.getParameter("st");
DataResponse response;
try {
- response = new DataResponse(createResponse(requestParam, token));
+ response = new DataResponse(createResponse(parameterFetcher.fetch(req)));
} catch (JSONException e) {
response = new DataResponse(ResponseError.BAD_REQUEST);
} catch (SecurityTokenException e) {
- logger.info("Request was made with invalid security token: " + token);
+ logger.info("Request was made with invalid security token: " +
e.getMessage());
response = new DataResponse(ResponseError.BAD_REQUEST);
}
resp.setContentType("application/json; charset=utf-8");
@@ -99,12 +108,12 @@
writer.write(json.toString());
}
- private List<ResponseItem> createResponse(String requestParam, String token)
+ private List<ResponseItem> createResponse(Map<String, String> parameters)
throws JSONException, SecurityTokenException {
- if (token == null || token.trim().length() == 0) {
- throw new SecurityTokenException("Missing security token");
- }
- SecurityToken securityToken = securityTokenDecoder.createToken(token);
+
+ final SecurityToken securityToken =
securityTokenDecoder.createToken(parameters);
+
+ final String requestParam = parameters.get(REQUEST_PARAMETER_NAME);
// TODO: Improve json input handling. The json request should get auto
// translated into objects
Added:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServletFetcher.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServletFetcher.java?rev=671387&view=auto
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServletFetcher.java
(added)
+++
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/GadgetDataServletFetcher.java
Tue Jun 24 17:44:39 2008
@@ -0,0 +1,47 @@
+/*
+ * 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;
+
+import org.apache.shindig.common.SecurityTokenDecoder;
+import org.apache.shindig.common.servlet.ParameterFetcher;
+
+import com.google.common.collect.Maps;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Default implementation for the GadgetDataServlet parameter fetcher. Do not
+ * change unless you have a compelling need to pass more parameters into the
+ * createResponse method.
+ */
+public class GadgetDataServletFetcher
+ implements ParameterFetcher
+{
+ public Map<String, String> fetch(HttpServletRequest req)
+ {
+ final Map<String, String> params = Maps.newHashMapWithExpectedSize(2);
+ params.put(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
req.getParameter("st"));
+ params.put(GadgetDataServlet.REQUEST_PARAMETER_NAME,
req.getParameter(GadgetDataServlet.REQUEST_PARAMETER_NAME));
+
+ return params;
+ }
+}
+
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=671387&r1=671386&r2=671387&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 Jun 24 17:44:39 2008
@@ -18,9 +18,11 @@
*/
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.ActivityService;
import org.apache.shindig.social.dataservice.AppDataService;
+import org.apache.shindig.social.dataservice.DataServiceServletFetcher;
import org.apache.shindig.social.dataservice.PersonService;
import org.apache.shindig.social.opensocial.ActivitiesService;
import org.apache.shindig.social.opensocial.DataService;
@@ -41,6 +43,7 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
import java.util.List;
@@ -65,6 +68,9 @@
bind(SocialRouteManager.class).to(SampleContainerRouteManager.class);
+
bind(ParameterFetcher.class).annotatedWith(Names.named("GadgetDataServlet")).to(GadgetDataServletFetcher.class);
+
bind(ParameterFetcher.class).annotatedWith(Names.named("DataServiceServlet")).to(DataServiceServletFetcher.class);
+
bind(Activity.class).to(ActivityImpl.class);
bind(MediaItem.class).to(MediaItemImpl.class);
}
Modified:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/AbstractSocialEntityCollectionAdapter.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/AbstractSocialEntityCollectionAdapter.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/AbstractSocialEntityCollectionAdapter.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/AbstractSocialEntityCollectionAdapter.java
Tue Jun 24 17:44:39 2008
@@ -46,6 +46,7 @@
import org.apache.abdera.protocol.server.impl.AbstractEntityCollectionAdapter;
import org.json.JSONException;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -115,7 +116,7 @@
if (token == null || token.trim().length() == 0) {
throw new SecurityTokenException("Missing security token");
}
- return securityTokenDecoder.createToken(token);
+ return
securityTokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
token));
}
/**
Modified:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
Tue Jun 24 17:44:39 2008
@@ -21,6 +21,7 @@
import org.apache.shindig.common.SecurityTokenDecoder;
import org.apache.shindig.common.SecurityTokenException;
import org.apache.shindig.common.servlet.InjectedServlet;
+import org.apache.shindig.common.servlet.ParameterFetcher;
import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.opensocial.util.BeanConverter;
import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
@@ -29,6 +30,7 @@
import com.google.common.collect.Maps;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import com.google.inject.name.Named;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.json.JSONException;
@@ -62,6 +64,7 @@
private Map<String, Class<? extends DataRequestHandler>> handlers;
private BeanJsonConverter jsonConverter;
private BeanXmlConverter xmlConverter;
+ private ParameterFetcher parameterFetcher;
private static final String JSON_BATCH_ROUTE = "jsonBatch";
@Inject
@@ -80,6 +83,11 @@
this.xmlConverter = xmlConverter;
}
+ @Inject
+ public void setParameterFetcher(@Named("DataServiceServlet")
ParameterFetcher parameterFetcher) {
+ this.parameterFetcher = parameterFetcher;
+ }
+
// Only for testing use. Do not override the injector.
public void setInjector(Injector injector) {
this.injector = injector;
@@ -181,7 +189,7 @@
SecurityToken getSecurityToken(HttpServletRequest servletRequest) {
SecurityToken token;
try {
- token =
securityTokenDecoder.createToken(servletRequest.getParameter(SECURITY_TOKEN_PARAM));
+ token =
securityTokenDecoder.createToken(parameterFetcher.fetch(servletRequest));
} catch (SecurityTokenException e) {
throw new RuntimeException("Implement error return for bad security
token.", e);
}
Added:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServletFetcher.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServletFetcher.java?rev=671387&view=auto
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServletFetcher.java
(added)
+++
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServletFetcher.java
Tue Jun 24 17:44:39 2008
@@ -0,0 +1,45 @@
+/*
+ * 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.dataservice;
+
+import org.apache.shindig.common.SecurityTokenDecoder;
+import org.apache.shindig.common.servlet.ParameterFetcher;
+
+import com.google.common.collect.Maps;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Default implementation for the GadgetDataServlet parameter fetcher. Do not
+ * change unless you have a compelling need to pass more parameters into the
+ * createResponse method.
+ */
+public class DataServiceServletFetcher
+ implements ParameterFetcher
+{
+ public Map<String, String> fetch(HttpServletRequest req)
+ {
+ final Map<String, String> params = Maps.newHashMapWithExpectedSize(1);
+ params.put(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
req.getParameter("st"));
+ return params;
+ }
+}
+
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
Tue Jun 24 17:44:39 2008
@@ -20,9 +20,11 @@
import org.apache.shindig.common.BasicSecurityTokenDecoder;
import org.apache.shindig.common.SecurityTokenDecoder;
+import org.apache.shindig.common.servlet.ParameterFetcher;
import org.apache.shindig.social.abdera.SocialRouteManager;
import org.apache.shindig.social.dataservice.ActivityService;
import org.apache.shindig.social.dataservice.AppDataService;
+import org.apache.shindig.social.dataservice.DataServiceServletFetcher;
import org.apache.shindig.social.dataservice.PersonService;
import org.apache.shindig.social.opensocial.ActivitiesService;
import org.apache.shindig.social.opensocial.DataService;
@@ -57,6 +59,7 @@
import com.google.common.collect.Maps;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
+import com.google.inject.name.Names;
import java.net.URI;
import java.util.Date;
@@ -87,6 +90,9 @@
bind(SecurityTokenDecoder.class).to(BasicSecurityTokenDecoder.class);
+
bind(ParameterFetcher.class).annotatedWith(Names.named("GadgetDataServlet")).to(GadgetDataServletFetcher.class);
+
bind(ParameterFetcher.class).annotatedWith(Names.named("DataServiceServlet")).to(DataServiceServletFetcher.class);
+
bind(Activity.class).to(ActivityImpl.class);
bind(MediaItem.class).to(MediaItemImpl.class);
}
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
Tue Jun 24 17:44:39 2008
@@ -18,7 +18,9 @@
package org.apache.shindig.social.dataservice;
import org.apache.shindig.common.BasicSecurityTokenDecoder;
+import org.apache.shindig.common.SecurityTokenDecoder;
import org.apache.shindig.common.SecurityTokenException;
+import org.apache.shindig.common.servlet.ParameterFetcher;
import org.apache.shindig.common.testing.FakeGadgetToken;
import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.SocialApiTestsGuiceModule;
@@ -36,6 +38,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.StringTokenizer;
@@ -76,6 +79,8 @@
servlet.setBeanConverters(jsonConverter, xmlConverter);
+ servlet.setParameterFetcher(new DataServiceServletFetcher());
+
tokenDecoder = EasyMock.createMock(BasicSecurityTokenDecoder.class);
servlet.setSecurityTokenDecoder(tokenDecoder);
}
@@ -135,7 +140,7 @@
.andReturn(tokenString);
FakeGadgetToken token = new FakeGadgetToken();
- EasyMock.expect(tokenDecoder.createToken(tokenString)).andReturn(token);
+
EasyMock.expect(tokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
tokenString))).andReturn(token);
setupInjector();
@@ -171,7 +176,7 @@
String tokenString = "owner:viewer:app:container.com:foo:bar";
EasyMock.expect(req.getParameter(DataServiceServlet.SECURITY_TOKEN_PARAM))
.andReturn(tokenString);
- EasyMock.expect(tokenDecoder.createToken(tokenString)).andThrow(new
SecurityTokenException(""));
+
EasyMock.expect(tokenDecoder.createToken(Collections.singletonMap(SecurityTokenDecoder.SECURITY_TOKEN_NAME,
tokenString))).andThrow(new SecurityTokenException(""));
EasyMock.replay(req, tokenDecoder);
try {
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java?rev=671387&r1=671386&r2=671387&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
Tue Jun 24 17:44:39 2008
@@ -18,11 +18,13 @@
package org.apache.shindig.social.dataservice.integration;
import org.apache.shindig.common.BasicSecurityTokenDecoder;
+import org.apache.shindig.social.GadgetDataServletFetcher;
import org.apache.shindig.social.SocialApiTestsGuiceModule;
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.DataServiceServlet;
+import org.apache.shindig.social.dataservice.DataServiceServletFetcher;
import org.apache.shindig.social.dataservice.HandlerProvider;
import org.apache.shindig.social.dataservice.PersonHandler;
import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
@@ -67,6 +69,7 @@
servlet.setBeanConverters(new BeanJsonConverter(
Guice.createInjector(new SocialApiTestsGuiceModule())), new
BeanXmlConverter());
servlet.setSecurityTokenDecoder(new BasicSecurityTokenDecoder());
+ servlet.setParameterFetcher(new DataServiceServletFetcher());
req = EasyMock.createMock(HttpServletRequest.class);
res = EasyMock.createMock(HttpServletResponse.class);
@@ -162,4 +165,4 @@
return columns;
}
-}
\ No newline at end of file
+}