use of org.apache.druid.server.initialization.jetty.ServletFilterHolder in project druid by druid-io.
the class JettyTest method setupInjector.
@Override
protected Injector setupInjector() {
TLSServerConfig tlsConfig;
try {
File keyStore = new File(JettyTest.class.getClassLoader().getResource("server.jks").getFile());
Path tmpKeyStore = Files.copy(keyStore.toPath(), new File(folder.newFolder(), "server.jks").toPath());
File trustStore = new File(JettyTest.class.getClassLoader().getResource("truststore.jks").getFile());
Path tmpTrustStore = Files.copy(trustStore.toPath(), new File(folder.newFolder(), "truststore.jks").toPath());
PasswordProvider pp = () -> "druid123";
tlsConfig = new TLSServerConfig() {
@Override
public String getKeyStorePath() {
return tmpKeyStore.toString();
}
@Override
public String getKeyStoreType() {
return "jks";
}
@Override
public PasswordProvider getKeyStorePasswordProvider() {
return pp;
}
@Override
public PasswordProvider getKeyManagerPasswordProvider() {
return pp;
}
@Override
public String getTrustStorePath() {
return tmpTrustStore.toString();
}
@Override
public String getTrustStoreAlgorithm() {
return "PKIX";
}
@Override
public PasswordProvider getTrustStorePasswordProvider() {
return pp;
}
@Override
public String getCertAlias() {
return "druid";
}
@Override
public boolean isRequireClientCertificate() {
return false;
}
@Override
public boolean isRequestClientCertificate() {
return false;
}
@Override
public boolean isValidateHostnames() {
return false;
}
};
sslConfig = HttpClientConfig.builder().withSslContext(HttpClientInit.sslContextWithTrustedKeyStore(tmpTrustStore.toString(), pp.getPassword())).withWorkerCount(1).withReadTimeout(Duration.ZERO).build();
} catch (IOException e) {
throw new RuntimeException(e);
}
final int ephemeralPort = ThreadLocalRandom.current().nextInt(49152, 65535);
latchedRequestState = new LatchedRequestStateHolder();
injector = Initialization.makeInjectorWithModules(GuiceInjectors.makeStartupInjector(), ImmutableList.<Module>of(new Module() {
@Override
public void configure(Binder binder) {
JsonConfigProvider.bindInstance(binder, Key.get(DruidNode.class, Self.class), new DruidNode("test", "localhost", false, ephemeralPort, ephemeralPort + 1, true, true));
binder.bind(TLSServerConfig.class).toInstance(tlsConfig);
binder.bind(JettyServerInitializer.class).to(JettyServerInit.class).in(LazySingleton.class);
binder.bind(LatchedRequestStateHolder.class).toInstance(latchedRequestState);
Multibinder<ServletFilterHolder> multibinder = Multibinder.newSetBinder(binder, ServletFilterHolder.class);
multibinder.addBinding().toInstance(new ServletFilterHolder() {
@Override
public String getPath() {
return "/*";
}
@Override
public Map<String, String> getInitParameters() {
return null;
}
@Override
public Class<? extends Filter> getFilterClass() {
return DummyAuthFilter.class;
}
@Override
public Filter getFilter() {
return null;
}
@Override
public EnumSet<DispatcherType> getDispatcherType() {
return null;
}
});
Jerseys.addResource(binder, SlowResource.class);
Jerseys.addResource(binder, LatchedResource.class);
Jerseys.addResource(binder, ExceptionResource.class);
Jerseys.addResource(binder, DefaultResource.class);
Jerseys.addResource(binder, DirectlyReturnResource.class);
binder.bind(AuthorizerMapper.class).toInstance(AuthTestUtils.TEST_AUTHORIZER_MAPPER);
LifecycleModule.register(binder, Server.class);
}
}));
return injector;
}
Aggregations