package com.google.gwt.inject.client.assistedinject;
import com.google.gwt.core.client.GWT;
import com.google.gwt.inject.client.AbstractGinModule;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.inject.BindingAnnotation;
import com.google.inject.Key;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class AnnotatedFactoryTest extends GWTTestCase {
public void testAnnotatedFactory() {
AnnotatedFactoryGinjector ginjector = GWT.create(AnnotatedFactoryGinjector.class);
assertNotNull(ginjector.getFactory());
}
public static class AnnotatedFactoryModule extends AbstractGinModule {
@Override
protected void configure() {
install(new GinFactoryModuleBuilder().build(Key.get(MyFactory.class, MyAnno.class)));
}
}
@GinModules({AnnotatedFactoryModule.class})
public static interface AnnotatedFactoryGinjector extends Ginjector {
@MyAnno MyFactory getFactory();
}
public static class FactoryProvidedType {}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@BindingAnnotation
public @interface MyAnno {}
public interface MyFactory {
FactoryProvidedType getCycleType();
}
@Override
public String getModuleName() {
return "com.google.gwt.inject.InjectTest";
}
}