use of com.google.inject.TypeLiteral in project guice by google.
the class MultibinderTest method testMultibinderSetShowsBothElementsIfToStringDifferent.
public void testMultibinderSetShowsBothElementsIfToStringDifferent() {
// considers.
class ValueType {
int a;
int b;
ValueType(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object obj) {
return (obj instanceof ValueType) && (((ValueType) obj).a == a);
}
@Override
public int hashCode() {
return a;
}
@Override
public String toString() {
return String.format("ValueType(%d,%d)", a, b);
}
}
Module module1 = new AbstractModule() {
@Override
protected void configure() {
final Multibinder<ValueType> multibinder = Multibinder.newSetBinder(binder(), ValueType.class);
multibinder.addBinding().toProvider(Providers.of(new ValueType(1, 2)));
}
};
Module module2 = new AbstractModule() {
@Override
protected void configure() {
final Multibinder<ValueType> multibinder = Multibinder.newSetBinder(binder(), ValueType.class);
multibinder.addBinding().toInstance(new ValueType(1, 3));
}
};
Injector injector = Guice.createInjector(module1, module2);
TypeLiteral<ValueType> valueType = TypeLiteral.get(ValueType.class);
TypeLiteral<Set<ValueType>> setOfValueType = new TypeLiteral<Set<ValueType>>() {
};
try {
injector.getInstance(Key.get(setOfValueType));
fail();
} catch (ProvisionException expected) {
assertContains(expected.getMessage(), "Duplicate elements found in Multibinder Set<MultibinderTest$1ValueType>.", "Element: ValueType(1,2)", "Bound at: MultibinderTest$21.configure", "Element: ValueType(1,3)", "Bound at: MultibinderTest$22.configure");
}
// But we can still visit the module!
assertSetVisitor(Key.get(setOfValueType), valueType, setOf(module1, module2), MODULE, false, 0, instance(new ValueType(1, 2)), instance(new ValueType(1, 3)));
}
use of com.google.inject.TypeLiteral in project presto by prestodb.
the class HiveConnectorFactory method create.
@Override
public Connector create(String catalogName, Map<String, String> config, ConnectorContext context) {
requireNonNull(config, "config is null");
try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
Bootstrap app = new Bootstrap(new EventModule(), new MBeanModule(), new JsonModule(), new SmileModule(), new HiveClientModule(catalogName), new HiveS3Module(catalogName), new HiveGcsModule(), new HiveMetastoreModule(catalogName, metastore), new HiveSecurityModule(), new HiveAuthenticationModule(), new HiveProcedureModule(), new CachingModule(), binder -> {
MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
binder.bind(MBeanServer.class).toInstance(new RebindSafeMBeanServer(platformMBeanServer));
binder.bind(NodeVersion.class).toInstance(new NodeVersion(context.getNodeManager().getCurrentNode().getVersion()));
binder.bind(NodeManager.class).toInstance(context.getNodeManager());
binder.bind(TypeManager.class).toInstance(context.getTypeManager());
binder.bind(PageIndexerFactory.class).toInstance(context.getPageIndexerFactory());
binder.bind(PageSorter.class).toInstance(context.getPageSorter());
binder.bind(StandardFunctionResolution.class).toInstance(context.getStandardFunctionResolution());
binder.bind(FunctionMetadataManager.class).toInstance(context.getFunctionMetadataManager());
binder.bind(RowExpressionService.class).toInstance(context.getRowExpressionService());
binder.bind(FilterStatsCalculatorService.class).toInstance(context.getFilterStatsCalculatorService());
binder.bind(BlockEncodingSerde.class).toInstance(context.getBlockEncodingSerde());
});
Injector injector = app.doNotInitializeLogging().setRequiredConfigurationProperties(config).quiet().initialize();
LifeCycleManager lifeCycleManager = injector.getInstance(LifeCycleManager.class);
HiveMetadataFactory metadataFactory = injector.getInstance(HiveMetadataFactory.class);
HiveTransactionManager transactionManager = injector.getInstance(HiveTransactionManager.class);
ConnectorSplitManager splitManager = injector.getInstance(ConnectorSplitManager.class);
ConnectorPageSourceProvider connectorPageSource = injector.getInstance(ConnectorPageSourceProvider.class);
ConnectorPageSinkProvider pageSinkProvider = injector.getInstance(ConnectorPageSinkProvider.class);
ConnectorNodePartitioningProvider connectorDistributionProvider = injector.getInstance(ConnectorNodePartitioningProvider.class);
HiveSessionProperties hiveSessionProperties = injector.getInstance(HiveSessionProperties.class);
HiveTableProperties hiveTableProperties = injector.getInstance(HiveTableProperties.class);
HiveAnalyzeProperties hiveAnalyzeProperties = injector.getInstance(HiveAnalyzeProperties.class);
ConnectorAccessControl accessControl = new SystemTableAwareAccessControl(injector.getInstance(ConnectorAccessControl.class));
Set<Procedure> procedures = injector.getInstance(Key.get(new TypeLiteral<Set<Procedure>>() {
}));
ConnectorPlanOptimizerProvider planOptimizerProvider = injector.getInstance(ConnectorPlanOptimizerProvider.class);
ConnectorMetadataUpdaterProvider metadataUpdaterProvider = injector.getInstance(ConnectorMetadataUpdaterProvider.class);
return new HiveConnector(lifeCycleManager, metadataFactory, transactionManager, new ClassLoaderSafeConnectorSplitManager(splitManager, classLoader), new ClassLoaderSafeConnectorPageSourceProvider(connectorPageSource, classLoader), new ClassLoaderSafeConnectorPageSinkProvider(pageSinkProvider, classLoader), new ClassLoaderSafeNodePartitioningProvider(connectorDistributionProvider, classLoader), ImmutableSet.of(), procedures, hiveSessionProperties.getSessionProperties(), HiveSchemaProperties.SCHEMA_PROPERTIES, hiveTableProperties.getTableProperties(), hiveAnalyzeProperties.getAnalyzeProperties(), accessControl, planOptimizerProvider, metadataUpdaterProvider, classLoader);
} catch (Exception e) {
throwIfUnchecked(e);
throw new RuntimeException(e);
}
}
use of com.google.inject.TypeLiteral in project guice by google.
the class InjectorSpiTest method testGetAllMembersInjectorInjectionPoints_getInstanceAndInjectMembers.
public void testGetAllMembersInjectorInjectionPoints_getInstanceAndInjectMembers() {
Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(Integer.class).toInstance(42);
bind(String.class).toInstance("bar");
}
});
injector.injectMembers(new ClassWithInjectableField("foo"));
injector.getInstance(ClassWithInjectableField.class);
Map<TypeLiteral<?>, List<InjectionPoint>> injectionPoints = injector.getAllMembersInjectorInjectionPoints();
TypeLiteral<ClassWithInjectableField> expectedTypeLiteral = TypeLiteral.get(ClassWithInjectableField.class);
assertThat(injectionPoints.keySet()).containsExactly(expectedTypeLiteral);
Key<?> actualDependencyKey = Iterables.getOnlyElement(Iterables.getOnlyElement(injectionPoints.get(expectedTypeLiteral)).getDependencies()).getKey();
assertEquals(Key.get(Integer.class), actualDependencyKey);
}
use of com.google.inject.TypeLiteral in project guice by google.
the class InjectorSpiTest method testGetAllMembersInjectorInjectionPoints_getInstance.
public void testGetAllMembersInjectorInjectionPoints_getInstance() {
Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(Integer.class).toInstance(42);
bind(String.class).toInstance("bar");
}
});
injector.getInstance(ClassWithInjectableField.class);
Map<TypeLiteral<?>, List<InjectionPoint>> injectionPoints = injector.getAllMembersInjectorInjectionPoints();
assertThat(injectionPoints).isEmpty();
}
use of com.google.inject.TypeLiteral in project guice by google.
the class ElementsTest method testBindKeysWithAnnotationType.
public void testBindKeysWithAnnotationType() {
FailingElementVisitor annotationChecker = new FailingElementVisitor() {
@Override
public <T> Void visit(Binding<T> command) {
assertEquals(Key.get(String.class, SampleAnnotation.class), command.getKey());
return null;
}
};
checkModule(new AbstractModule() {
@Override
protected void configure() {
bind(String.class).annotatedWith(SampleAnnotation.class).toInstance("A");
bind(new TypeLiteral<String>() {
}).annotatedWith(SampleAnnotation.class).toInstance("B");
}
}, annotationChecker, annotationChecker);
}
Aggregations