You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by Kevin Brown <et...@google.com> on 2008/08/28 18:58:44 UTC

Re: svn commit: r689886 - in /incubator/shindig/trunk/java: server/src/test/java/org/apache/shindig/server/endtoend/ social-api/src/main/java/org/apache/shindig/social/core/config/ social-api/src/main/java/org/apache/shindig/social/core/oauth/ social

On Thu, Aug 28, 2008 at 9:46 AM, <ev...@apache.org> wrote:

> Author: evan
> Date: Thu Aug 28 09:46:44 2008
> New Revision: 689886
>
> URL: http://svn.apache.org/viewvc?rev=689886&view=rev
> Log:
> Inject List<AuthenticationHandler> instead of
> AuthenticationHandlerProvider. Makes it a little simpler to customize auth,
> as you are not required to subclass AuthenticationHandlerProvider.
>
> If you don't use SocialApiGuiceModule, you will need to add one
> extra bind statement after syncing:
>
>   bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider(
>       AuthenticationHandlerProvider.class
>
> Added:
>
>  incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/config/
>
>  incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/config/SocialApiGuiceModuleTest.java
>
>  incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/oauth/AuthenticationProviderHandlerTest.java


I think you meant "AuthenticationHandlerProviderTest".

Thanks for this change though, I was about to do it myself to hoist the
filters into common.


>
> Modified:
>
>  incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java
>
>  incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
>
>  incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationHandlerProvider.java
>
>  incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationServletFilter.java
>
> Modified:
> incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java?rev=689886&r1=689885&r2=689886&view=diff
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java
> (original)
> +++
> incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java
> Thu Aug 28 09:46:44 2008
> @@ -21,10 +21,15 @@
>  import org.apache.shindig.social.core.util.BeanJsonConverter;
>  import org.apache.shindig.social.core.util.BeanXmlConverter;
>  import
> org.apache.shindig.social.core.oauth.AnonymousAuthenticationHandler;
> +import org.apache.shindig.social.core.oauth.AuthenticationHandlerProvider;
> +import org.apache.shindig.social.opensocial.oauth.AuthenticationHandler;
>  import org.apache.shindig.social.opensocial.service.BeanConverter;
>  import
> org.apache.shindig.social.opensocial.service.DataServiceServletFetcher;
>
> +import java.util.List;
> +
>  import com.google.inject.AbstractModule;
> +import com.google.inject.TypeLiteral;
>  import com.google.inject.name.Names;
>
>  /**
> @@ -32,6 +37,7 @@
>  */
>  public class EndToEndModule extends AbstractModule {
>
> +  @Override
>   protected void configure() {
>
> bind(String.class).annotatedWith(Names.named("shindig.canonical.json.db"))
>         .toInstance("sampledata/canonicaldb.json");
> @@ -45,5 +51,8 @@
>     bind(Boolean.class)
>
> .annotatedWith(Names.named(AnonymousAuthenticationHandler.ALLOW_UNAUTHENTICATED))
>         .toInstance(Boolean.FALSE);
> +
> +    bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider(
> +        AuthenticationHandlerProvider.class);
>   }
>  }
>
> Modified:
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java?rev=689886&r1=689885&r2=689886&view=diff
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
> (original)
> +++
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
> Thu Aug 28 09:46:44 2008
> @@ -20,14 +20,19 @@
>
>  import org.apache.shindig.common.servlet.ParameterFetcher;
>  import
> org.apache.shindig.social.core.oauth.AnonymousAuthenticationHandler;
> +import org.apache.shindig.social.core.oauth.AuthenticationHandlerProvider;
>  import org.apache.shindig.social.core.util.BeanJsonConverter;
>  import org.apache.shindig.social.core.util.BeanXmlConverter;
> +import org.apache.shindig.social.opensocial.oauth.AuthenticationHandler;
>  import org.apache.shindig.social.opensocial.service.BeanConverter;
>  import
> org.apache.shindig.social.opensocial.service.DataServiceServletFetcher;
>  import org.apache.shindig.social.opensocial.service.HandlerProvider;
>  import
> org.apache.shindig.social.sample.service.SampleContainerHandlerProvider;
>
> +import java.util.List;
> +
>  import com.google.inject.AbstractModule;
> +import com.google.inject.TypeLiteral;
>  import com.google.inject.name.Names;
>
>  /**
> @@ -57,5 +62,8 @@
>         BeanXmlConverter.class);
>
> bind(BeanConverter.class).annotatedWith(Names.named("shindig.bean.converter.json")).to(
>         BeanJsonConverter.class);
> +
> +    bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider(
> +        AuthenticationHandlerProvider.class);
>   }
>  }
>
> Modified:
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationHandlerProvider.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationHandlerProvider.java?rev=689886&r1=689885&r2=689886&view=diff
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationHandlerProvider.java
> (original)
> +++
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationHandlerProvider.java
> Thu Aug 28 09:46:44 2008
> @@ -21,10 +21,11 @@
>
>  import com.google.common.collect.Lists;
>  import com.google.inject.Inject;
> +import com.google.inject.Provider;
>
>  import java.util.List;
>
> -public class AuthenticationHandlerProvider {
> +public class AuthenticationHandlerProvider implements
> Provider<List<AuthenticationHandler>> {
>   protected List<AuthenticationHandler> handlers;
>
>   @Inject
>
> Modified:
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationServletFilter.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationServletFilter.java?rev=689886&r1=689885&r2=689886&view=diff
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationServletFilter.java
> (original)
> +++
> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/AuthenticationServletFilter.java
> Thu Aug 28 09:46:44 2008
> @@ -67,8 +67,8 @@
>   }
>
>   @Inject
> -  public void setAuthenticationHandlers(AuthenticationHandlerProvider
> handlerProvider) {
> -    this.handlers = handlerProvider.get();
> +  public void setAuthenticationHandlers(List<AuthenticationHandler>
> handlers) {
> +    this.handlers = handlers;
>   }
>
>   public void destroy() { }
>
> Added:
> incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/config/SocialApiGuiceModuleTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/config/SocialApiGuiceModuleTest.java?rev=689886&view=auto
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/config/SocialApiGuiceModuleTest.java
> (added)
> +++
> incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/config/SocialApiGuiceModuleTest.java
> Thu Aug 28 09:46:44 2008
> @@ -0,0 +1,56 @@
> +/*
> + * 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.core.config;
> +
> +import org.apache.shindig.social.core.oauth.AuthenticationHandlerProvider;
> +import org.apache.shindig.social.opensocial.oauth.AuthenticationHandler;
> +
> +import com.google.inject.Guice;
> +import com.google.inject.Injector;
> +import com.google.inject.Key;
> +import com.google.inject.TypeLiteral;
> +
> +import junit.framework.TestCase;
> +
> +import java.util.List;
> +
> +public class SocialApiGuiceModuleTest extends TestCase {
> +  private Injector injector;
> +
> +  @Override public void setUp() throws Exception {
> +    super.setUp();
> +    injector = Guice.createInjector(new SocialApiGuiceModule());
> +  }
> +
> +  /**
> +   * Test default auth handler injection
> +   */
> +  public void testAuthHandler() {
> +    List<AuthenticationHandler> expected =
> +        injector.getInstance(AuthenticationHandlerProvider.class).get();
> +
> +    AuthenticationHandlerProvider provider =
> +        injector.getInstance(AuthenticationHandlerProvider.class);
> +    assertEquals(3, provider.get().size());
> +
> +    List<AuthenticationHandler> handlers = injector.getInstance(
> +        Key.get(new TypeLiteral<List<AuthenticationHandler>>(){}));
> +
> +    assertEquals(3, handlers.size());
> +  }
> +}
>
> Added:
> incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/oauth/AuthenticationProviderHandlerTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/oauth/AuthenticationProviderHandlerTest.java?rev=689886&view=auto
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/oauth/AuthenticationProviderHandlerTest.java
> (added)
> +++
> incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/core/oauth/AuthenticationProviderHandlerTest.java
> Thu Aug 28 09:46:44 2008
> @@ -0,0 +1,76 @@
> +/*
> + * 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.core.oauth;
> +
> +import org.apache.shindig.social.core.config.SocialApiGuiceModule;
> +import org.apache.shindig.social.opensocial.oauth.AuthenticationHandler;
> +
> +import com.google.inject.AbstractModule;
> +import com.google.inject.Guice;
> +import com.google.inject.Injector;
> +import com.google.inject.Key;
> +import com.google.inject.TypeLiteral;
> +
> +import junit.framework.TestCase;
> +
> +import java.util.Collections;
> +import java.util.List;
> +
> +
> +public class AuthenticationProviderHandlerTest extends TestCase {
> +  /**
> +   * Test that existing custom handlers won't be broken with the switch
> +   * to injecting List<ProviderHandler>.
> +   */
> +  public void testCustomHandler() {
> +    Injector injector = Guice.createInjector(new SocialApiGuiceModule(),
> +        new CustomAuthHandlerProviderModule());
> +
> +    AuthenticationHandlerProvider provider = injector.getInstance(
> +        AuthenticationHandlerProvider.class);
> +    assertEquals(0, provider.get().size());
> +
> +    List<AuthenticationHandler> handlers = injector.getInstance(
> +        Key.get(new TypeLiteral<List<AuthenticationHandler>>(){}));
> +    assertEquals(0, handlers.size());
> +  }
> +
> +  /**
> +   * AuthenticationHandlerProvider with no handlers
> +   */
> +  public static class ProvidesNoHandlers extends
> AuthenticationHandlerProvider {
> +    public ProvidesNoHandlers() {
> +      super(null, null, null);
> +    }
> +
> +    @Override
> +    public List<AuthenticationHandler> get() {
> +      return Collections.emptyList();
> +    }
> +  }
> +
> +  /**
> +   * Module with a custom AuthenticationHandler
> +   */
> +  public static class CustomAuthHandlerProviderModule extends
> AbstractModule {
> +    @Override
> +    protected void configure() {
> +
>  bind(AuthenticationHandlerProvider.class).to(ProvidesNoHandlers.class);
> +    }
> +  }
> +}
>
>
>