
ninja.utils.FakeContext Maven / Gradle / Ivy
The newest version!
/**
* Copyright (C) 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 ninja.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import ninja.ContentTypes;
import ninja.Context;
import ninja.Cookie;
import ninja.Result;
import ninja.Route;
import ninja.params.ParamParser;
import ninja.params.ParamParsers;
import ninja.session.FlashScope;
import ninja.session.Session;
import ninja.uploads.FileItem;
import ninja.validation.Validation;
import ninja.validation.ValidationImpl;
import org.apache.commons.fileupload.FileItemIterator;
import com.google.common.base.Function;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Maps;
/**
* A fake context
*/
public class FakeContext implements Context {
private String requestContentType;
private String requestPath;
private String contextPath;
/** please use the requestPath stuff */
@Deprecated
private String requestUri;
private String requestParameterString;
private String hostname;
private String remoteAddr;
private String scheme;
private FlashScope flashScope;
private Session session;
private final List addedCookies = new ArrayList<>();
private final Map cookieValues = new HashMap<>();
private final ListMultimap params = ArrayListMultimap.create();
private final Map pathParams = new HashMap<>();
private final ListMultimap headers = ArrayListMultimap.create();
private final Map attributes = new HashMap<>();
private Object body;
private final Validation validation = new ValidationImpl();
private final ParamParsers paramParsers = new ParamParsers(new HashSet());
private String acceptContentType;
private String acceptEncoding;
private String acceptLanguage;
private String acceptCharset;
public FakeContext setRequestContentType(String requestContentType) {
this.requestContentType = requestContentType;
return this;
}
@Override
public String getRequestContentType() {
return requestContentType;
}
/**
* Please use the getServletPath and setServletPath facilities.
*
* @param requestUri
* @return
*/
@Deprecated
public FakeContext setRequestUri(String requestUri) {
this.requestUri = requestUri;
return this;
}
/**
* Please use the getServletPath and setServletPath facilities.
*
* @param requestUri
* @return
*/
@Override
@Deprecated
public String getRequestUri() {
return requestUri;
}
@Deprecated
public FakeContext setRequestParameterString(String requestParameterString) {
this.requestParameterString = requestParameterString;
return this;
}
@Override
public String getRequestParameterString() {
return requestParameterString;
}
@Override
public String getHostname() {
return hostname;
}
@Override
public String getScheme() {
return scheme;
}
public void setScheme(String scheme) { this.scheme = scheme;}
public void setHostname(String hostname) {
this.hostname = hostname;
}
@Override
public String getRemoteAddr() {
return remoteAddr;
}
public FakeContext setFlashCookie(FlashScope flashCookie) {
this.flashScope = flashCookie;
return this;
}
public FakeContext setSessionCookie(Session sessionCookie) {
this.session = sessionCookie;
return this;
}
@Override
public Session getSessionCookie() {
return session;
}
@Override
public FlashScope getFlashCookie() {
return flashScope;
}
@Override
public Session getSession() {
return session;
}
@Override
public FlashScope getFlashScope() {
return flashScope;
}
public FakeContext addParameter(String key, String value) {
params.put(key, value);
return this;
}
@Override
public String getParameter(String key) {
return Iterables.getFirst(params.get(key), null);
}
@Override
public List getParameterValues(String name) {
return params.get(name);
}
@Override
public String getParameter(String key, String defaultValue) {
String value = getParameter(key);
if (value == null) {
return defaultValue;
} else {
return value;
}
}
@Override
public Integer getParameterAsInteger(String key) {
String value = getParameter(key);
if (value == null) {
return null;
} else {
return Integer.parseInt(value);
}
}
@Override
public Integer getParameterAsInteger(String key, Integer defaultValue) {
String value = getParameter(key);
if (value == null) {
return defaultValue;
} else {
return Integer.parseInt(value);
}
}
@Override
public T getParameterAs(String key, Class clazz) {
return getParameterAs(key, clazz, null);
}
@Override
public T getParameterAs(String key, Class clazz, T defaultValue) {
T value = (T) paramParsers.getParamParser(clazz).parseParameter(key, key, validation);
return validation.hasFieldViolation(key) ? defaultValue : value;
}
public FakeContext addPathParameter(String key, String value) {
pathParams.put(key, value);
return this;
}
@Override
public String getPathParameter(String key) {
return pathParams.get(key);
}
@Override
public Integer getPathParameterAsInteger(String key) {
String value = getParameter(key);
if (value == null) {
return null;
} else {
return Integer.parseInt(value);
}
}
@Override
public Map getParameters() {
return Maps.transformValues(params.asMap(), new Function, String[]>() {
@Override
public String[] apply(Collection s) {
return s.toArray(new String[s.size()]);
}
});
}
public FakeContext addHeader(String name, String value) {
headers.put(name, value);
return this;
}
@Override
public String getHeader(String name) {
return Iterables.getFirst(headers.get(name), null);
}
@Override
public List getHeaders(String name) {
return headers.get(name);
}
@Override
public Map> getHeaders() {
@SuppressWarnings("rawtypes")
Map rawHeaders = headers.asMap();
return rawHeaders;
}
public FakeContext addCookieValue(String name, String value) {
cookieValues.put(name, value);
return this;
}
@Override
public String getCookieValue(String name) {
return cookieValues.get(name);
}
public FakeContext setBody(Object body) {
this.body = body;
return this;
}
@Override
public T parseBody(Class classOfT) {
return classOfT.cast(body);
}
@Override
public boolean isMultipart() {
return false;
}
@Override
public FileItemIterator getFileItemIterator() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public boolean isAsync() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public void handleAsync() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public void returnResultAsync(Result result) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public void asyncRequestComplete() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public Result controllerReturned() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public ResponseStreams finalizeHeaders(Result result) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public ResponseStreams finalizeHeadersWithoutFlashAndSessionCookie(Result result) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public InputStream getInputStream() throws IOException {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public BufferedReader getReader() throws IOException {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public Route getRoute() {
throw new UnsupportedOperationException("Not supported in fake context");
}
public FakeContext setRequestPath(String path) {
this.requestPath = path;
return this;
}
@Override
public String getRequestPath() {
return this.requestPath;
}
@Override
public Validation getValidation() {
return validation;
}
@Override
public String getPathParameterEncoded(String name) {
return this.getPathParameterEncoded(name);
}
public void setAcceptContentType(String acceptContentType) {
this.acceptContentType = acceptContentType;
}
@Override
public String getAcceptContentType() {
return acceptContentType;
}
public void setAcceptEncoding(String acceptEncoding) {
this.acceptEncoding = acceptEncoding;
}
@Override
public String getAcceptEncoding() {
return acceptEncoding;
}
public void setAcceptLanguage(String acceptLanguage) {
this.acceptLanguage = acceptLanguage;
}
@Override
public String getAcceptLanguage() {
return acceptLanguage;
}
public void setAcceptCharset(String acceptCharset) {
this.acceptCharset = acceptCharset;
}
@Override
public String getAcceptCharset() {
return acceptCharset;
}
@Override
public Cookie getCookie(String cookieName) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public boolean hasCookie(String cookieName) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public List getCookies() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public String getMethod() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public Object getAttribute(String name) {
return attributes.get(name);
}
@Override
public T getAttribute(String name, Class clazz) {
return clazz.cast(getAttribute(name));
}
@Override
public void setAttribute(String name, Object value) {
attributes.put(name, value);
}
@Override
public Map getAttributes() {
return attributes;
}
@Override
public String getContextPath() {
return contextPath;
}
public void setContextPath(String contextPath){
this.contextPath = contextPath;
}
@Override
public boolean isRequestJson() {
String contentType = getRequestContentType();
if (contentType == null || contentType.isEmpty()) {
return false;
}
return contentType.startsWith(ContentTypes.APPLICATION_JSON);
}
@Override
public boolean isRequestXml() {
String contentType = getRequestContentType();
if (contentType == null || contentType.isEmpty()) {
return false;
}
return contentType.startsWith(ContentTypes.APPLICATION_XML);
}
@Override
public void addCookie(Cookie cookie) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public void unsetCookie(Cookie cookie) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public FileItem getParameterAsFileItem(String name) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public List getParameterAsFileItems(String name) {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public Map> getParameterFileItems() {
throw new UnsupportedOperationException("Not supported in fake context");
}
@Override
public void cleanup() {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy