public NettyHandlerAdapter(Stopper stopper, Handler handler, LaunchConfig launchConfig) { this.handlers = new Handler[] {handler}; this.return404 = Handlers.notFound(); RegistryBuilder registryBuilder = Registries.registry() // If you update this list, update the class level javadoc on Context. .add(Stopper.class, stopper) .add(MimeTypes.class, new ActivationBackedMimeTypes()) .add( PublicAddress.class, new DefaultPublicAddress( launchConfig.getPublicAddress(), launchConfig.getSSLContext() == null ? "http" : "https")) .add(Redirector.class, new DefaultRedirector()) .add(ClientErrorHandler.class, new DefaultClientErrorHandler()) .add(ServerErrorHandler.class, new DefaultServerErrorHandler()) .add(LaunchConfig.class, launchConfig) .add(FileRenderer.class, new DefaultFileRenderer()) .add(CharSequenceRenderer.class, new DefaultCharSequenceRenderer()) .add(FormParser.class, FormParser.multiPart()) .add(FormParser.class, FormParser.urlEncoded()) .add(HttpClient.class, HttpClients.httpClient(launchConfig)); if (launchConfig.isHasBaseDir()) { registryBuilder.add(FileSystemBinding.class, launchConfig.getBaseDir()); } this.registry = registryBuilder.build(); this.addResponseTimeHeader = launchConfig.isTimeResponses(); this.compressResponses = launchConfig.isCompressResponses(); this.applicationConstants = new DefaultContext.ApplicationConstants(launchConfig, new DefaultRenderController()); this.execController = launchConfig.getExecController(); }
public static Registry buildBaseRegistry( RatpackServer ratpackServer, ExecController execController, ServerConfig serverConfig) { ErrorHandler errorHandler = serverConfig.isDevelopment() ? new DefaultDevelopmentErrorHandler() : new DefaultProductionErrorHandler(); RegistryBuilder baseRegistryBuilder; try { baseRegistryBuilder = Registry.builder() .add(ServerConfig.class, serverConfig) .add(ByteBufAllocator.class, PooledByteBufAllocator.DEFAULT) .add(ExecController.class, execController) .add(MimeTypes.class, new ActivationBackedMimeTypes()) .add( PublicAddress.class, new DefaultPublicAddress( serverConfig.getPublicAddress(), serverConfig.getSSLContext() == null ? HTTP_SCHEME : HTTPS_SCHEME)) .add(Redirector.class, new DefaultRedirector()) .add(ClientErrorHandler.class, errorHandler) .add(ServerErrorHandler.class, errorHandler) .with(new DefaultFileRenderer().register()) .with(new PromiseRenderer().register()) .with(new PublisherRenderer().register()) .with(new RenderableRenderer().register()) .with(new CharSequenceRenderer().register()) .add(FormParser.class, FormParser.multiPart()) .add(FormParser.class, FormParser.urlEncoded()) .add(FormNoOptParser.class, FormNoOptParser.multiPart()) .add(FormNoOptParser.class, FormNoOptParser.urlEncoded()) .add(RatpackServer.class, ratpackServer) // TODO remove Stopper, and just use RatpackServer instead (will need to update perf // and gradle tests) .add( Stopper.class, () -> uncheck( () -> { ratpackServer.stop(); return null; })) .add( HttpClient.class, HttpClient.httpClient( PooledByteBufAllocator.DEFAULT, serverConfig.getMaxContentLength())) .add( ServerSentEventStreamClient.class, ServerSentEventStreamClient.sseStreamClient(PooledByteBufAllocator.DEFAULT)) .add(HealthCheckResultsRenderer.class, new HealthCheckResultsRenderer()) .add(RequestId.Generator.class, new UuidBasedRequestIdGenerator()); addConfigObjects(serverConfig, baseRegistryBuilder); } catch (Exception e) { // Uncheck because it really shouldn't happen throw uncheck(e); } if (serverConfig.isHasBaseDir()) { baseRegistryBuilder.add(FileSystemBinding.class, serverConfig.getBaseDir()); } return baseRegistryBuilder.build(); }