use of com.google.inject.Provides in project presto by prestodb.
the class RaptorModule method createDBI.
@ForMetadata
@Singleton
@Provides
public IDBI createDBI(@ForMetadata ConnectionFactory connectionFactory, TypeManager typeManager) {
DBI dbi = new DBI(connectionFactory);
dbi.registerMapper(new TableColumn.Mapper(typeManager));
dbi.registerMapper(new Distribution.Mapper(typeManager));
createTablesWithRetry(dbi);
return dbi;
}
use of com.google.inject.Provides in project presto by prestodb.
the class CassandraClientModule method createCassandraSession.
@Singleton
@Provides
public static CassandraSession createCassandraSession(CassandraConnectorId connectorId, CassandraClientConfig config, JsonCodec<List<ExtraColumnMetadata>> extraColumnMetadataCodec) {
requireNonNull(config, "config is null");
requireNonNull(extraColumnMetadataCodec, "extraColumnMetadataCodec is null");
Cluster.Builder clusterBuilder = Cluster.builder().withProtocolVersion(ProtocolVersion.V3);
List<String> contactPoints = requireNonNull(config.getContactPoints(), "contactPoints is null");
checkArgument(!contactPoints.isEmpty(), "empty contactPoints");
contactPoints.forEach(clusterBuilder::addContactPoint);
clusterBuilder.withPort(config.getNativeProtocolPort());
clusterBuilder.withReconnectionPolicy(new ExponentialReconnectionPolicy(500, 10000));
clusterBuilder.withRetryPolicy(config.getRetryPolicy().getPolicy());
LoadBalancingPolicy loadPolicy = new RoundRobinPolicy();
if (config.isUseDCAware()) {
requireNonNull(config.getDcAwareLocalDC(), "DCAwarePolicy localDC is null");
DCAwareRoundRobinPolicy.Builder builder = DCAwareRoundRobinPolicy.builder().withLocalDc(config.getDcAwareLocalDC());
if (config.getDcAwareUsedHostsPerRemoteDc() > 0) {
builder.withUsedHostsPerRemoteDc(config.getDcAwareUsedHostsPerRemoteDc());
if (config.isDcAwareAllowRemoteDCsForLocal()) {
builder.allowRemoteDCsForLocalConsistencyLevel();
}
}
loadPolicy = builder.build();
}
if (config.isUseTokenAware()) {
loadPolicy = new TokenAwarePolicy(loadPolicy, config.isTokenAwareShuffleReplicas());
}
if (config.isUseWhiteList()) {
checkArgument(!config.getWhiteListAddresses().isEmpty(), "empty WhiteListAddresses");
List<InetSocketAddress> whiteList = new ArrayList<>();
for (String point : config.getWhiteListAddresses()) {
whiteList.add(new InetSocketAddress(point, config.getNativeProtocolPort()));
}
loadPolicy = new WhiteListPolicy(loadPolicy, whiteList);
}
clusterBuilder.withLoadBalancingPolicy(loadPolicy);
SocketOptions socketOptions = new SocketOptions();
socketOptions.setReadTimeoutMillis(toIntExact(config.getClientReadTimeout().toMillis()));
socketOptions.setConnectTimeoutMillis(toIntExact(config.getClientConnectTimeout().toMillis()));
if (config.getClientSoLinger() != null) {
socketOptions.setSoLinger(config.getClientSoLinger());
}
clusterBuilder.withSocketOptions(socketOptions);
if (config.getUsername() != null && config.getPassword() != null) {
clusterBuilder.withCredentials(config.getUsername(), config.getPassword());
}
QueryOptions options = new QueryOptions();
options.setFetchSize(config.getFetchSize());
options.setConsistencyLevel(config.getConsistencyLevel());
clusterBuilder.withQueryOptions(options);
if (config.getSpeculativeExecutionLimit() > 1) {
clusterBuilder.withSpeculativeExecutionPolicy(new ConstantSpeculativeExecutionPolicy(// delay before a new execution is launched
config.getSpeculativeExecutionDelay().toMillis(), // maximum number of executions
config.getSpeculativeExecutionLimit()));
}
return new NativeCassandraSession(connectorId.toString(), extraColumnMetadataCodec, clusterBuilder.build(), config.getNoHostAvailableRetryTimeout());
}
use of com.google.inject.Provides in project roboguice by roboguice.
the class MiniGuiceTest method testSingletonsAreEager.
public void testSingletonsAreEager() {
final AtomicBoolean sInjected = new AtomicBoolean();
R.injected = false;
MiniGuice.inject(A.class, new Object() {
@Provides
F provideF(R r) {
return new F();
}
@Provides
@Singleton
S provideS() {
sInjected.set(true);
return new S();
}
});
assertTrue(R.injected);
assertTrue(sInjected.get());
}
use of com.google.inject.Provides in project roboguice by roboguice.
the class ServletTest method testScopeExceptions.
public void testScopeExceptions() throws Exception {
Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
install(new ServletModule());
}
@Provides
@RequestScoped
String provideString() {
return "foo";
}
@Provides
@SessionScoped
Integer provideInteger() {
return 1;
}
@Provides
@RequestScoped
@Named("foo")
String provideNamedString() {
return "foo";
}
});
try {
injector.getInstance(String.class);
fail();
} catch (ProvisionException oose) {
assertContains(oose.getMessage(), "Cannot access scoped [java.lang.String].");
}
try {
injector.getInstance(Integer.class);
fail();
} catch (ProvisionException oose) {
assertContains(oose.getMessage(), "Cannot access scoped [java.lang.Integer].");
}
Key<?> key = Key.get(String.class, Names.named("foo"));
try {
injector.getInstance(key);
fail();
} catch (ProvisionException oose) {
assertContains(oose.getMessage(), "Cannot access scoped [" + Errors.convert(key) + "]");
}
}
use of com.google.inject.Provides in project roboguice by roboguice.
the class Struts2FactoryTest method testStruts2Factory.
public void testStruts2Factory() {
Struts2Factory s2Factory = new Struts2Factory();
TestListener testListener = new TestListener(new AbstractModule() {
@Override
protected void configure() {
}
@Provides
@SuppressWarnings("unused")
Date provideDate() {
return TODAY;
}
});
assertEquals(TODAY, testListener.getInjector().getInstance(Date.class));
assertEquals(TODAY, s2Factory.buildBean(Date.class, null));
}
Aggregations