/* * Copyright 2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ratpack.groovy.handling.internal; import com.google.common.reflect.TypeToken; import groovy.lang.Closure; import ratpack.api.NonBlocking; import ratpack.api.Nullable; import ratpack.exec.Execution; import ratpack.exec.Promise; import ratpack.func.Action; import ratpack.func.Function; import ratpack.groovy.handling.DefaultGroovyByContentSpec; import ratpack.groovy.handling.GroovyContext; import ratpack.groovy.internal.ClosureUtil; import ratpack.handling.*; import ratpack.handling.direct.DirectChannelAccess; import ratpack.http.Request; import ratpack.http.Response; import ratpack.http.TypedData; import ratpack.parse.Parse; import ratpack.path.PathBinding; import ratpack.registry.NotInRegistryException; import ratpack.registry.Registry; import ratpack.server.ServerConfig; import java.nio.file.Path; import java.time.Instant; import java.util.Optional; public class DefaultGroovyContext implements GroovyContext { private final Context delegate; public DefaultGroovyContext(Context delegate) { this.delegate = delegate; } @Override public GroovyContext getContext() { return this; } @Override public void byMethod(Closure<?> closure) throws Exception { delegate.byMethod(s -> ClosureUtil.configureDelegateFirst(new DefaultGroovyByMethodSpec(s), closure)); } @Override public void byContent(Closure<?> closure) throws Exception { delegate.byContent(s -> ClosureUtil.configureDelegateFirst(new DefaultGroovyByContentSpec(s), closure)); } @Override public void onClose(Closure<?> callback) { onClose(ClosureUtil.delegatingAction(callback)); } @Override public Execution getExecution() { return delegate.getExecution(); } @Override public ServerConfig getServerConfig() { return delegate.getServerConfig(); } @Override public Request getRequest() { return delegate.getRequest(); } @Override public Response getResponse() { return delegate.getResponse(); } @Override @NonBlocking public void next() { delegate.next(); } @Override @NonBlocking public void next(Registry registry) { delegate.next(registry); } @Override @NonBlocking public void insert(Handler... handlers) { delegate.insert(handlers); } @Override @NonBlocking public void insert(Registry registry, Handler... handlers) { delegate.insert(registry, handlers); } @Override public void byMethod(Action<? super ByMethodSpec> action) throws Exception { delegate.byMethod(action); } @Override public void byContent(Action<? super ByContentSpec> action) throws Exception { delegate.byContent(action); } @Override @NonBlocking public void error(Throwable throwable) throws NotInRegistryException { delegate.error(throwable); } @Override @NonBlocking public void clientError(int statusCode) throws NotInRegistryException { delegate.clientError(statusCode); } @Override @NonBlocking public void render(Object object) { delegate.render(object); } @Override public void redirect(Object to) throws NotInRegistryException { delegate.redirect(to); } @Override public void redirect(int code, Object to) throws NotInRegistryException { delegate.redirect(code, to); } @Override @NonBlocking public void lastModified(Instant lastModified, Runnable runnable) { delegate.lastModified(lastModified, runnable); } @Override public <T> Promise<T> parse(Class<T> type) { return delegate.parse(type); } @Override public <T> Promise<T> parse(TypeToken<T> type) { return delegate.parse(type); } @Override public <T, O> Promise<T> parse(Class<T> type, O options) { return delegate.parse(type, options); } @Override public <T, O> Promise<T> parse(TypeToken<T> type, O options) { return delegate.parse(type, options); } @Override public <T, O> Promise<T> parse(Parse<T, O> parse) { return delegate.parse(parse); } @Override public <T, O> T parse(TypedData body, Parse<T, O> parse) throws Exception { return delegate.parse(body, parse); } @Override public DirectChannelAccess getDirectChannelAccess() { return delegate.getDirectChannelAccess(); } @Override public PathBinding getPathBinding() { return delegate.getPathBinding(); } @Override public void onClose(Action<? super RequestOutcome> callback) { delegate.onClose(callback); } @Override public Path file(String path) throws NotInRegistryException { return delegate.file(path); } @Override public <O> O get(Class<O> type) throws NotInRegistryException { return delegate.get(type); } public <O> O get(TypeToken<O> type) throws NotInRegistryException { return delegate.get(type); } @Override public <O> Optional<O> maybeGet(Class<O> type) { return delegate.maybeGet(type); } @Override @Nullable public <O> Optional<O> maybeGet(TypeToken<O> type) { return delegate.maybeGet(type); } @Override public <O> Iterable<? extends O> getAll(Class<O> type) { return delegate.getAll(type); } @Override public <O> Iterable<? extends O> getAll(TypeToken<O> type) { return delegate.getAll(type); } @Override public <T, O> Optional<O> first(TypeToken<T> type, Function<? super T, ? extends O> function) throws Exception { return delegate.first(type, function); } }