/* * Copyright 2007-2009 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 net.paoding.rose.web.impl.thread; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.List; import java.util.Set; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.paoding.rose.web.Invocation; import net.paoding.rose.web.InvocationLocal; import net.paoding.rose.web.InvocationUtils; import net.paoding.rose.web.RequestPath; import net.paoding.rose.web.paramresolver.ParamMetaData; import net.paoding.rose.web.var.Flash; import net.paoding.rose.web.var.Model; import org.springframework.validation.BindingResult; import org.springframework.web.context.WebApplicationContext; /** * * @author 王志亮 [qieqie.wang@gmail.com] * */ public class InvocationLocalImpl implements InvocationLocal { @Override public Invocation getCurrent(boolean required) { Invocation inv = InvocationUtils.getInvocation(InvocationUtils.getCurrentThreadRequest()); if (inv == null && required) { throw new IllegalStateException("invocation"); } return inv; } private Invocation required() { return getCurrent(true); } @Override public void addModel(Object value) { required().addModel(value); } @Override public void addModel(String name, Object value) { required().addModel(name, value); } @Override public void changeMethodParameter(int index, Object newValue) { required().changeMethodParameter(index, newValue); } @Override public void changeMethodParameter(String name, Object newValue) { required().changeMethodParameter(name, newValue); } @Override public void changeMethodParameter(ParamMetaData paramMeta, Object newValue) { required().changeMethodParameter(paramMeta, newValue); } @Override public WebApplicationContext getApplicationContext() { return required().getApplicationContext(); } @Override public Object getAttribute(String name) { return required().getAttribute(name); } @Override public Set<String> getAttributeNames() { return required().getAttributeNames(); } @Override public BindingResult getBindingResult(String bean) { return required().getBindingResult(bean); } @Override public List<String> getBindingResultNames() { return required().getBindingResultNames(); } @Override public List<BindingResult> getBindingResults() { return required().getBindingResults(); } @Override public Object getController() { return required().getController(); } @Override public Class<?> getControllerClass() { return required().getControllerClass(); } @Override public void addFlash(String name, String msg) { required().addFlash(name, msg); } @Override public Flash getFlash() { return required().getFlash(); } @Override public Method getMethod() { return required().getMethod(); } @Override public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) { return required().isAnnotationPresent(annotationClass); } @Override public <T extends Annotation> T getAnnotation(Class<T> annotationClass) { return required().getAnnotation(annotationClass); } @Override public Object getMethodParameter(String name) { return required().getMethodParameter(name); } @Override public String[] getMethodParameterNames() { return required().getMethodParameterNames(); } @Override public Object[] getMethodParameters() { return required().getMethodParameters(); } @Override public Model getModel() { return required().getModel(); } @Override public Object getModel(String name) { return required().getModel(name); } @Override public String getParameter(String name) { return required().getParameter(name); } @Override public BindingResult getParameterBindingResult() { return required().getParameterBindingResult(); } @Override public HttpServletRequest getRequest() { return required().getRequest(); } @Override public RequestPath getRequestPath() { return required().getRequestPath(); } @Override public HttpServletResponse getResponse() { return required().getResponse(); } @Override public ServletContext getServletContext() { return required().getServletContext(); } @Override public void removeAttribute(String name) { required().removeAttribute(name); } @Override public Invocation setAttribute(String name, Object value) { return required().setAttribute(name, value); } @Override public void setRequest(HttpServletRequest request) { required().setRequest(request); } @Override public Flash getFlash(boolean create) { return required().getFlash(create); } @Override public Invocation getPreInvocation() { return required().getPreInvocation(); } @Override public Invocation getHeadInvocation() { return required().getHeadInvocation(); } @Override public String getResourceId() { return required().getResourceId(); } @Override public void addAfterCompletion(AfterCompletion afterComletion) { required().addAfterCompletion(afterComletion); } }