Search in sources :

Example 1 with ServerConfig

use of ratpack.server.ServerConfig in project ratpack by ratpack.

the class DefaultRequestFixture method handleChain.

@Override
public HandlingResult handleChain(Action<? super Chain> chainAction) throws Exception {
    final DefaultHandlingResult.ResultsHolder results = new DefaultHandlingResult.ResultsHolder();
    Registry registry = getEffectiveRegistry(results);
    ServerConfig serverConfig = registry.get(ServerConfig.class);
    Handler handler = Handlers.chain(serverConfig, registry, chainAction);
    return invoke(handler, registry, results);
}
Also used : ServerConfig(ratpack.server.ServerConfig) ClientErrorHandler(ratpack.error.ClientErrorHandler) ServerErrorHandler(ratpack.error.ServerErrorHandler) Handler(ratpack.handling.Handler) ServerRegistry(ratpack.server.internal.ServerRegistry) Registry(ratpack.registry.Registry)

Example 2 with ServerConfig

use of ratpack.server.ServerConfig in project ratpack by ratpack.

the class RatpackServerDefinition method build.

public static RatpackServerDefinition build(Action<? super RatpackServerSpec> config) throws Exception {
    SpecImpl spec = new SpecImpl();
    config.execute(spec);
    ServerConfig serverConfig = Optional.ofNullable(spec.serverConfig).orElseGet(() -> ServerConfig.builder().build());
    return new RatpackServerDefinition(serverConfig, spec.registry, spec.handler);
}
Also used : ServerConfig(ratpack.server.ServerConfig)

Example 3 with ServerConfig

use of ratpack.server.ServerConfig in project ratpack by ratpack.

the class DefaultRequestFixture method getEffectiveRegistry.

private Registry getEffectiveRegistry(final DefaultHandlingResult.ResultsHolder results) {
    ClientErrorHandler clientErrorHandler = (context, statusCode) -> {
        results.setClientError(statusCode);
        context.getResponse().status(statusCode);
        results.getLatch().countDown();
    };
    ServerErrorHandler serverErrorHandler = (context, throwable1) -> {
        results.setThrowable(throwable1);
        results.getLatch().countDown();
    };
    final Registry userRegistry = Registry.builder().add(ClientErrorHandler.class, clientErrorHandler).add(ServerErrorHandler.class, serverErrorHandler).build();
    return Exceptions.uncheck(() -> {
        ServerConfig serverConfig = serverConfigBuilder.build();
        DefaultExecController execController = new DefaultExecController(serverConfig.getThreads());
        return ServerRegistry.serverRegistry(new TestServer(), Impositions.none(), execController, serverConfig, r -> userRegistry.join(registryBuilder.build()));
    });
}
Also used : RatpackServer(ratpack.server.RatpackServer) HttpVersion(io.netty.handler.codec.http.HttpVersion) ClientErrorHandler(ratpack.error.ClientErrorHandler) RequestFixture(ratpack.test.handling.RequestFixture) RootPathBinding(ratpack.path.internal.RootPathBinding) HandlerTimeoutException(ratpack.test.handling.HandlerTimeoutException) Unpooled.unreleasableBuffer(io.netty.buffer.Unpooled.unreleasableBuffer) ServerRegistry(ratpack.server.internal.ServerRegistry) ByteBuf(io.netty.buffer.ByteBuf) MutableHeaders(ratpack.http.MutableHeaders) PathBindingStorage(ratpack.path.internal.PathBindingStorage) RequestBodyReader(ratpack.server.internal.RequestBodyReader) ServerConfig(ratpack.server.ServerConfig) ServerConfigBuilder(ratpack.server.ServerConfigBuilder) Registry(ratpack.registry.Registry) Map(java.util.Map) CharsetUtil(io.netty.util.CharsetUtil) DefaultPathBinding(ratpack.path.internal.DefaultPathBinding) DefaultRequest(ratpack.http.internal.DefaultRequest) Unpooled.buffer(io.netty.buffer.Unpooled.buffer) DefaultExecController(ratpack.exec.internal.DefaultExecController) Streams(ratpack.stream.Streams) RegistryBuilder(ratpack.registry.RegistryBuilder) ServerErrorHandler(ratpack.error.ServerErrorHandler) ImmutableMap(com.google.common.collect.ImmutableMap) HttpMethod(io.netty.handler.codec.http.HttpMethod) Promise(ratpack.exec.Promise) Block(ratpack.func.Block) Instant(java.time.Instant) HostAndPort(com.google.common.net.HostAndPort) InetSocketAddress(java.net.InetSocketAddress) Chain(ratpack.handling.Chain) RegistrySpec(ratpack.registry.RegistrySpec) Impositions(ratpack.impose.Impositions) DefaultHttpHeaders(io.netty.handler.codec.http.DefaultHttpHeaders) HandlingResult(ratpack.test.handling.HandlingResult) Action(ratpack.func.Action) Handler(ratpack.handling.Handler) Exceptions(ratpack.util.Exceptions) Optional(java.util.Optional) TransformablePublisher(ratpack.stream.TransformablePublisher) HttpHeaderNames(io.netty.handler.codec.http.HttpHeaderNames) Handlers(ratpack.handling.Handlers) NettyHeadersBackedMutableHeaders(ratpack.http.internal.NettyHeadersBackedMutableHeaders) ExecController(ratpack.exec.ExecController) Collections(java.util.Collections) ServerErrorHandler(ratpack.error.ServerErrorHandler) ServerConfig(ratpack.server.ServerConfig) ClientErrorHandler(ratpack.error.ClientErrorHandler) DefaultExecController(ratpack.exec.internal.DefaultExecController) ServerRegistry(ratpack.server.internal.ServerRegistry) Registry(ratpack.registry.Registry)

Example 4 with ServerConfig

use of ratpack.server.ServerConfig in project ratpack by ratpack.

the class Guice method buildInjector.

static Injector buildInjector(Registry baseRegistry, Action<? super BindingsSpec> bindingsAction, Function<? super Module, ? extends Injector> injectorFactory) throws Exception {
    List<Action<? super Binder>> binderActions = Lists.newLinkedList();
    List<Module> modules = Lists.newLinkedList();
    ServerConfig serverConfig = baseRegistry.get(ServerConfig.class);
    BindingsSpec bindings = new DefaultBindingsSpec(serverConfig, binderActions, modules);
    modules.add(new RatpackBaseRegistryModule(baseRegistry));
    modules.add(new ConfigModule(serverConfig.getRequiredConfig()));
    try {
        bindingsAction.execute(bindings);
    } catch (Exception e) {
        throw uncheck(e);
    }
    modules.add(new AdHocModule(binderActions));
    Optional<BindingsImposition> bindingsImposition = Impositions.current().get(BindingsImposition.class);
    if (bindingsImposition.isPresent()) {
        BindingsImposition imposition = bindingsImposition.get();
        List<Action<? super Binder>> imposedBinderActions = Lists.newLinkedList();
        List<Module> imposedModules = Lists.newLinkedList();
        BindingsSpec imposedBindings = new DefaultBindingsSpec(serverConfig, imposedBinderActions, imposedModules);
        imposition.getBindings().execute(imposedBindings);
        imposedModules.add(new AdHocModule(imposedBinderActions));
        Module imposedModule = imposedModules.stream().reduce((acc, next) -> Modules.override(acc).with(next)).get();
        modules.add(imposedModule);
    }
    Module masterModule = modules.stream().reduce((acc, next) -> Modules.override(acc).with(next)).get();
    return injectorFactory.apply(masterModule);
}
Also used : Function(ratpack.func.Function) Module(com.google.inject.Module) RatpackBaseRegistryModule(ratpack.guice.internal.RatpackBaseRegistryModule) Context(ratpack.handling.Context) Modules(com.google.inject.util.Modules) Guice.createInjector(com.google.inject.Guice.createInjector) Exceptions.uncheck(ratpack.util.Exceptions.uncheck) Injector(com.google.inject.Injector) Stage(com.google.inject.Stage) Chain(ratpack.handling.Chain) ConfigObject(ratpack.config.ConfigObject) List(java.util.List) Lists(com.google.common.collect.Lists) Binder(com.google.inject.Binder) Impositions(ratpack.impose.Impositions) GuiceUtil(ratpack.guice.internal.GuiceUtil) InjectorRegistryBacking(ratpack.guice.internal.InjectorRegistryBacking) Action(ratpack.func.Action) Handler(ratpack.handling.Handler) ServerConfig(ratpack.server.ServerConfig) Registry(ratpack.registry.Registry) Optional(java.util.Optional) DefaultBindingsSpec(ratpack.guice.internal.DefaultBindingsSpec) Action(ratpack.func.Action) DefaultBindingsSpec(ratpack.guice.internal.DefaultBindingsSpec) DefaultBindingsSpec(ratpack.guice.internal.DefaultBindingsSpec) Binder(com.google.inject.Binder) ServerConfig(ratpack.server.ServerConfig) RatpackBaseRegistryModule(ratpack.guice.internal.RatpackBaseRegistryModule) Module(com.google.inject.Module) RatpackBaseRegistryModule(ratpack.guice.internal.RatpackBaseRegistryModule)

Example 5 with ServerConfig

use of ratpack.server.ServerConfig in project ratpack by ratpack.

the class DefaultRatpackServer method start.

@Override
public synchronized void start() throws Exception {
    if (isRunning()) {
        return;
    }
    try {
        ServerConfig serverConfig;
        LOGGER.info("Starting server...");
        DefinitionBuild definitionBuild = buildUserDefinition();
        if (definitionBuild.error != null) {
            if (definitionBuild.getServerConfig().isDevelopment()) {
                LOGGER.warn("Exception raised getting server config (will use default config until reload):", definitionBuild.error);
                needsReload.set(true);
            } else {
                throw Exceptions.toException(definitionBuild.error);
            }
        }
        serverConfig = definitionBuild.getServerConfig();
        execController = new DefaultExecController(serverConfig.getThreads());
        ChannelHandler channelHandler = ExecThreadBinding.bindFor(true, execController, () -> buildHandler(definitionBuild));
        channel = buildChannel(serverConfig, channelHandler);
        boundAddress = (InetSocketAddress) channel.localAddress();
        String startMessage = String.format("Ratpack started %sfor %s://%s:%s", serverConfig.isDevelopment() ? "(development) " : "", getScheme(), getBindHost(), getBindPort());
        if (Slf4jNoBindingDetector.isHasBinding()) {
            if (LOGGER.isInfoEnabled()) {
                LOGGER.info(startMessage);
            }
        } else {
            System.out.println(startMessage);
        }
        if (serverConfig.isRegisterShutdownHook()) {
            shutdownHookThread = new Thread("ratpack-shutdown-thread") {

                @Override
                public void run() {
                    try {
                        DefaultRatpackServer.this.stop();
                    } catch (Exception ignored) {
                        ignored.printStackTrace(System.err);
                    }
                }
            };
            Runtime.getRuntime().addShutdownHook(shutdownHookThread);
        }
    } catch (Exception e) {
        if (execController != null) {
            execController.close();
        }
        stop();
        throw e;
    }
}
Also used : ServerConfig(ratpack.server.ServerConfig) DefaultExecController(ratpack.exec.internal.DefaultExecController)

Aggregations

ServerConfig (ratpack.server.ServerConfig)6 Handler (ratpack.handling.Handler)4 Registry (ratpack.registry.Registry)4 Optional (java.util.Optional)3 ClientErrorHandler (ratpack.error.ClientErrorHandler)3 ServerErrorHandler (ratpack.error.ServerErrorHandler)3 DefaultExecController (ratpack.exec.internal.DefaultExecController)3 Action (ratpack.func.Action)3 Chain (ratpack.handling.Chain)3 Impositions (ratpack.impose.Impositions)3 ServerRegistry (ratpack.server.internal.ServerRegistry)3 ImmutableMap (com.google.common.collect.ImmutableMap)2 HostAndPort (com.google.common.net.HostAndPort)2 ByteBuf (io.netty.buffer.ByteBuf)2 Unpooled.buffer (io.netty.buffer.Unpooled.buffer)2 Unpooled.unreleasableBuffer (io.netty.buffer.Unpooled.unreleasableBuffer)2 DefaultHttpHeaders (io.netty.handler.codec.http.DefaultHttpHeaders)2 HttpHeaderNames (io.netty.handler.codec.http.HttpHeaderNames)2 HttpMethod (io.netty.handler.codec.http.HttpMethod)2 HttpVersion (io.netty.handler.codec.http.HttpVersion)2