Indeed -- the packages don't match, and the braces are in the wrong place. Since this relies on servlets, it definitely belongs in common/servlet, so the file needs to move rather than the package.
On Tue, Jun 24, 2008 at 5:57 PM, Gonzalo Aune <[EMAIL PROTECTED]> wrote: > Brian, > it seems like the package of ParameterFetcher doesnt match with where it > is, > it was added in common/ but is called in common/servlet/ in several > classes. > > Regards. > > G.- > > On Tue, Jun 24, 2008 at 9:44 PM, <[EMAIL PROTECTED]> wrote: > > > 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 > > +} > > > > > > >

