package ameba.core;
import ameba.container.server.Request;
import org.glassfish.jersey.internal.PropertiesDelegate;
import org.glassfish.jersey.message.MessageBodyWorkers;
import org.glassfish.jersey.message.internal.*;
import org.glassfish.jersey.server.ContainerRequest;
import org.glassfish.jersey.server.ExtendedUriInfo;
import org.glassfish.jersey.server.spi.ContainerResponseWriter;
import org.glassfish.jersey.server.spi.RequestScopedInitializer;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.core.*;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.net.URI;
import java.util.*;
/**
* <p>Requests class.</p>
*
* @author icode
* @since 0.1.6e
*
*/
public class Requests {
private static Provider<ContainerRequest> requestProvider;
private Requests() {
}
/**
* <p>getRequest.</p>
*
* @return a {@link ameba.container.server.Request} object.
*/
public static Request getRequest() {
return (Request) requestProvider.get();
}
/**
* <p>getRemoteAddr.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getRemoteAddr() {
return getRequest().getRemoteAddr();
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param type a {@link java.lang.reflect.Type} object.
* @param annotations an array of {@link java.lang.annotation.Annotation} objects.
* @param propertiesDelegate a {@link org.glassfish.jersey.internal.PropertiesDelegate} object.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, Type type, Annotation[] annotations, PropertiesDelegate propertiesDelegate) {
return getRequest().readEntity(rawType, type, annotations, propertiesDelegate);
}
/**
* <p>getRequestUri.</p>
*
* @return a {@link java.net.URI} object.
*/
public static URI getRequestUri() {
return getRequest().getRequestUri();
}
/**
* <p>setRequestUri.</p>
*
* @param requestUri a {@link java.net.URI} object.
* @throws java.lang.IllegalStateException if any.
*/
public static void setRequestUri(URI requestUri) throws IllegalStateException {
getRequest().setRequestUri(requestUri);
}
/**
* <p>getMediaType.</p>
*
* @return a {@link javax.ws.rs.core.MediaType} object.
*/
public static MediaType getMediaType() {
return getRequest().getMediaType();
}
/**
* <p>getAbsolutePath.</p>
*
* @return a {@link java.net.URI} object.
*/
public static URI getAbsolutePath() {
return getRequest().getAbsolutePath();
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param type a {@link java.lang.reflect.Type} object.
* @param annotations an array of {@link java.lang.annotation.Annotation} objects.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, Type type, Annotation[] annotations) {
return getRequest().readEntity(rawType, type, annotations);
}
/**
* <p>getQualifiedAcceptableMediaTypes.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<AcceptableMediaType> getQualifiedAcceptableMediaTypes() {
return getRequest().getQualifiedAcceptableMediaTypes();
}
/**
* <p>headers.</p>
*
* @param newHeaders a {@link javax.ws.rs.core.MultivaluedMap} object.
* @return a {@link org.glassfish.jersey.message.internal.InboundMessageContext} object.
*/
public static InboundMessageContext headers(MultivaluedMap<String, String> newHeaders) {
return getRequest().headers(newHeaders);
}
/**
* <p>bufferEntity.</p>
*
* @return a boolean.
* @throws javax.ws.rs.ProcessingException if any.
*/
public static boolean bufferEntity() throws ProcessingException {
return getRequest().bufferEntity();
}
/**
* <p>getIfNoneMatch.</p>
*
* @return a {@link java.util.Set} object.
*/
public static Set<MatchingEntityTag> getIfNoneMatch() {
return getRequest().getIfNoneMatch();
}
/**
* <p>getPath.</p>
*
* @param decode a boolean.
* @return a {@link java.lang.String} object.
*/
public static String getPath(boolean decode) {
return getRequest().getPath(decode);
}
/**
* <p>close.</p>
*/
public static void close() {
getRequest().close();
}
/**
* <p>getProperty.</p>
*
* @param name a {@link java.lang.String} object.
* @return a {@link java.lang.Object} object.
* @param <T> a T object.
*/
@SuppressWarnings("unchecked")
public static <T> T getProperty(String name) {
return (T) getRequest().getProperty(name);
}
/**
* <p>getAbortResponse.</p>
*
* @return a {@link javax.ws.rs.core.Response} object.
*/
public static Response getAbortResponse() {
return getRequest().getAbortResponse();
}
/**
* <p>getCookies.</p>
*
* @return a {@link java.util.Map} object.
*/
public static Map<String, Cookie> getCookies() {
return getRequest().getCookies();
}
/**
* <p>hasEntity.</p>
*
* @return a boolean.
*/
public static boolean hasEntity() {
return getRequest().hasEntity();
}
/**
* <p>hasLink.</p>
*
* @param relation a {@link java.lang.String} object.
* @return a boolean.
*/
public static boolean hasLink(String relation) {
return getRequest().hasLink(relation);
}
/**
* <p>getLastModified.</p>
*
* @return a {@link java.util.Date} object.
*/
public static Date getLastModified() {
return getRequest().getLastModified();
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param type a {@link java.lang.reflect.Type} object.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, Type type) {
return getRequest().readEntity(rawType, type);
}
/**
* <p>remove.</p>
*
* @param name a {@link java.lang.String} object.
* @return a {@link org.glassfish.jersey.message.internal.InboundMessageContext} object.
*/
public static InboundMessageContext remove(String name) {
return getRequest().remove(name);
}
/**
* <p>setWriter.</p>
*
* @param responseWriter a {@link org.glassfish.jersey.server.spi.ContainerResponseWriter} object.
*/
public static void setWriter(ContainerResponseWriter responseWriter) {
getRequest().setWriter(responseWriter);
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType) {
return getRequest().readEntity(rawType);
}
/**
* <p>evaluatePreconditions.</p>
*
* @param lastModified a {@link java.util.Date} object.
* @return a {@link javax.ws.rs.core.Response.ResponseBuilder} object.
*/
public static Response.ResponseBuilder evaluatePreconditions(Date lastModified) {
return getRequest().evaluatePreconditions(lastModified);
}
/**
* <p>getSecurityContext.</p>
*
* @return a {@link javax.ws.rs.core.SecurityContext} object.
*/
public static SecurityContext getSecurityContext() {
return getRequest().getSecurityContext();
}
/**
* <p>setSecurityContext.</p>
*
* @param context a {@link javax.ws.rs.core.SecurityContext} object.
*/
public static void setSecurityContext(SecurityContext context) {
getRequest().setSecurityContext(context);
}
/**
* <p>getEntityTag.</p>
*
* @return a {@link javax.ws.rs.core.EntityTag} object.
*/
public static EntityTag getEntityTag() {
return getRequest().getEntityTag();
}
/**
* <p>getAllowedMethods.</p>
*
* @return a {@link java.util.Set} object.
*/
public static Set<String> getAllowedMethods() {
return getRequest().getAllowedMethods();
}
/**
* <p>getLinkBuilder.</p>
*
* @param relation a {@link java.lang.String} object.
* @return a {@link javax.ws.rs.core.Link.Builder} object.
*/
public static Link.Builder getLinkBuilder(String relation) {
return getRequest().getLinkBuilder(relation);
}
/**
* <p>getPropertiesDelegate.</p>
*
* @return a {@link org.glassfish.jersey.internal.PropertiesDelegate} object.
*/
public static PropertiesDelegate getPropertiesDelegate() {
return getRequest().getPropertiesDelegate();
}
/**
* <p>setProperty.</p>
*
* @param name a {@link java.lang.String} object.
* @param object a {@link java.lang.Object} object.
*/
public static void setProperty(String name, Object object) {
getRequest().setProperty(name, object);
}
/**
* <p>getQualifiedAcceptEncoding.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<AcceptableToken> getQualifiedAcceptEncoding() {
return getRequest().getQualifiedAcceptEncoding();
}
/**
* <p>getRequestHeader.</p>
*
* @param name a {@link java.lang.String} object.
* @return a {@link java.util.List} object.
*/
public static List<String> getRequestHeader(String name) {
return getRequest().getRequestHeader(name);
}
/**
* <p>evaluatePreconditions.</p>
*
* @param eTag a {@link javax.ws.rs.core.EntityTag} object.
* @return a {@link javax.ws.rs.core.Response.ResponseBuilder} object.
*/
public static Response.ResponseBuilder evaluatePreconditions(EntityTag eTag) {
return getRequest().evaluatePreconditions(eTag);
}
/**
* <p>removeProperty.</p>
*
* @param name a {@link java.lang.String} object.
*/
public static void removeProperty(String name) {
getRequest().removeProperty(name);
}
/**
* <p>getQualifiedAcceptableLanguages.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<AcceptableLanguageTag> getQualifiedAcceptableLanguages() {
return getRequest().getQualifiedAcceptableLanguages();
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param type a {@link java.lang.reflect.Type} object.
* @param propertiesDelegate a {@link org.glassfish.jersey.internal.PropertiesDelegate} object.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, Type type, PropertiesDelegate propertiesDelegate) {
return getRequest().readEntity(rawType, type, propertiesDelegate);
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param propertiesDelegate a {@link org.glassfish.jersey.internal.PropertiesDelegate} object.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, PropertiesDelegate propertiesDelegate) {
return getRequest().readEntity(rawType, propertiesDelegate);
}
/**
* <p>abortWith.</p>
*
* @param response a {@link javax.ws.rs.core.Response} object.
*/
public static void abortWith(Response response) {
getRequest().abortWith(response);
}
/**
* <p>headers.</p>
*
* @param name a {@link java.lang.String} object.
* @param values a {@link java.lang.Iterable} object.
* @return a {@link org.glassfish.jersey.message.internal.InboundMessageContext} object.
*/
public static InboundMessageContext headers(String name, Iterable<?> values) {
return getRequest().headers(name, values);
}
/**
* <p>getDate.</p>
*
* @return a {@link java.util.Date} object.
*/
public static Date getDate() {
return getRequest().getDate();
}
/**
* <p>getMethod.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getMethod() {
return getRequest().getMethod();
}
/**
* <p>setMethod.</p>
*
* @param method a {@link java.lang.String} object.
* @throws java.lang.IllegalStateException if any.
*/
public static void setMethod(String method) throws IllegalStateException {
getRequest().setMethod(method);
}
/**
* <p>getBaseUri.</p>
*
* @return a {@link java.net.URI} object.
*/
public static URI getBaseUri() {
return getRequest().getBaseUri();
}
/**
* <p>getUriInfo.</p>
*
* @return a {@link org.glassfish.jersey.server.ExtendedUriInfo} object.
*/
public static ExtendedUriInfo getUriInfo() {
return getRequest().getUriInfo();
}
/**
* <p>headers.</p>
*
* @param newHeaders a {@link java.util.Map} object.
* @return a {@link org.glassfish.jersey.message.internal.InboundMessageContext} object.
*/
public static InboundMessageContext headers(Map<String, List<String>> newHeaders) {
return getRequest().headers(newHeaders);
}
/**
* <p>getRequestCookies.</p>
*
* @return a {@link java.util.Map} object.
*/
public static Map<String, Cookie> getRequestCookies() {
return getRequest().getRequestCookies();
}
/**
* <p>getQualifiedAcceptCharset.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<AcceptableToken> getQualifiedAcceptCharset() {
return getRequest().getQualifiedAcceptCharset();
}
/**
* <p>getAcceptableMediaTypes.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<MediaType> getAcceptableMediaTypes() {
return getRequest().getAcceptableMediaTypes();
}
/**
* <p>getLocation.</p>
*
* @return a {@link java.net.URI} object.
*/
public static URI getLocation() {
return getRequest().getLocation();
}
/**
* <p>getIfMatch.</p>
*
* @return a {@link java.util.Set} object.
*/
public static Set<MatchingEntityTag> getIfMatch() {
return getRequest().getIfMatch();
}
/**
* <p>selectVariant.</p>
*
* @param variants a {@link java.util.List} object.
* @return a {@link javax.ws.rs.core.Variant} object.
* @throws java.lang.IllegalArgumentException if any.
*/
public static Variant selectVariant(List<Variant> variants) throws IllegalArgumentException {
return getRequest().selectVariant(variants);
}
/**
* <p>getPropertyNames.</p>
*
* @return a {@link java.util.Collection} object.
*/
public static Collection<String> getPropertyNames() {
return getRequest().getPropertyNames();
}
/**
* <p>evaluatePreconditions.</p>
*
* @return a {@link javax.ws.rs.core.Response.ResponseBuilder} object.
*/
public static Response.ResponseBuilder evaluatePreconditions() {
return getRequest().evaluatePreconditions();
}
/**
* <p>getRequestHeaders.</p>
*
* @return a {@link javax.ws.rs.core.MultivaluedMap} object.
*/
public static MultivaluedMap<String, String> getRequestHeaders() {
return getRequest().getRequestHeaders();
}
/**
* <p>getRequestScopedInitializer.</p>
*
* @return a {@link org.glassfish.jersey.server.spi.RequestScopedInitializer} object.
*/
public static RequestScopedInitializer getRequestScopedInitializer() {
return getRequest().getRequestScopedInitializer();
}
/**
* <p>setRequestScopedInitializer.</p>
*
* @param requestScopedInitializer a {@link org.glassfish.jersey.server.spi.RequestScopedInitializer} object.
*/
public static void setRequestScopedInitializer(RequestScopedInitializer requestScopedInitializer) {
getRequest().setRequestScopedInitializer(requestScopedInitializer);
}
/**
* <p>header.</p>
*
* @param name a {@link java.lang.String} object.
* @param value a {@link java.lang.Object} object.
* @return a {@link org.glassfish.jersey.message.internal.InboundMessageContext} object.
*/
public static InboundMessageContext header(String name, Object value) {
return getRequest().header(name, value);
}
/**
* <p>getHeaderString.</p>
*
* @param name a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getHeaderString(String name) {
return getRequest().getHeaderString(name);
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param annotations an array of {@link java.lang.annotation.Annotation} objects.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, Annotation[] annotations) {
return getRequest().readEntity(rawType, annotations);
}
/**
* <p>headers.</p>
*
* @param name a {@link java.lang.String} object.
* @param values a {@link java.lang.Object} object.
* @return a {@link org.glassfish.jersey.message.internal.InboundMessageContext} object.
*/
public static InboundMessageContext headers(String name, Object... values) {
return getRequest().headers(name, values);
}
/**
* <p>getEntityStream.</p>
*
* @return a {@link java.io.InputStream} object.
*/
public static InputStream getEntityStream() {
return getRequest().getEntityStream();
}
/**
* <p>setEntityStream.</p>
*
* @param input a {@link java.io.InputStream} object.
*/
public static void setEntityStream(InputStream input) {
getRequest().setEntityStream(input);
}
/**
* <p>setMethodWithoutException.</p>
*
* @param method a {@link java.lang.String} object.
*/
public static void setMethodWithoutException(String method) {
getRequest().setMethodWithoutException(method);
}
/**
* <p>inResponseProcessing.</p>
*/
public static void inResponseProcessing() {
getRequest().inResponseProcessing();
}
/**
* <p>getProxyRemoteAddr.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getProxyRemoteAddr() {
return getRequest().getProxyRemoteAddr();
}
/**
* <p>readEntity.</p>
*
* @param rawType a {@link java.lang.Class} object.
* @param annotations an array of {@link java.lang.annotation.Annotation} objects.
* @param propertiesDelegate a {@link org.glassfish.jersey.internal.PropertiesDelegate} object.
* @param <T> a T object.
* @return a T object.
*/
public static <T> T readEntity(Class<T> rawType, Annotation[] annotations, PropertiesDelegate propertiesDelegate) {
return getRequest().readEntity(rawType, annotations, propertiesDelegate);
}
/**
* <p>getWorkers.</p>
*
* @return a {@link org.glassfish.jersey.message.MessageBodyWorkers} object.
*/
public static MessageBodyWorkers getWorkers() {
return getRequest().getWorkers();
}
/**
* <p>setWorkers.</p>
*
* @param workers a {@link org.glassfish.jersey.message.MessageBodyWorkers} object.
*/
public static void setWorkers(MessageBodyWorkers workers) {
getRequest().setWorkers(workers);
}
/**
* <p>getAcceptableLanguages.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<Locale> getAcceptableLanguages() {
return getRequest().getAcceptableLanguages();
}
/**
* <p>getLength.</p>
*
* @return a int.
*/
public static int getLength() {
return getRequest().getLength();
}
/**
* <p>evaluatePreconditions.</p>
*
* @param lastModified a {@link java.util.Date} object.
* @param eTag a {@link javax.ws.rs.core.EntityTag} object.
* @return a {@link javax.ws.rs.core.Response.ResponseBuilder} object.
*/
public static Response.ResponseBuilder evaluatePreconditions(Date lastModified, EntityTag eTag) {
return getRequest().evaluatePreconditions(lastModified, eTag);
}
/**
* <p>getLink.</p>
*
* @param relation a {@link java.lang.String} object.
* @return a {@link javax.ws.rs.core.Link} object.
*/
public static Link getLink(String relation) {
return getRequest().getLink(relation);
}
/**
* <p>getLanguage.</p>
*
* @return a {@link java.util.Locale} object.
*/
public static Locale getLanguage() {
return getRequest().getLanguage();
}
/**
* <p>getProxyRemoteAddr.</p>
*
* @param realIpHeader a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getProxyRemoteAddr(String realIpHeader) {
return getRequest().getProxyRemoteAddr(realIpHeader);
}
/**
* <p>getResponseCookies.</p>
*
* @return a {@link java.util.Map} object.
*/
public static Map<String, NewCookie> getResponseCookies() {
return getRequest().getResponseCookies();
}
/**
* <p>getVaryValue.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getVaryValue() {
return getRequest().getVaryValue();
}
/**
* <p>setRequestUri.</p>
*
* @param baseUri a {@link java.net.URI} object.
* @param requestUri a {@link java.net.URI} object.
* @throws java.lang.IllegalStateException if any.
*/
public static void setRequestUri(URI baseUri, URI requestUri) throws IllegalStateException {
getRequest().setRequestUri(baseUri, requestUri);
}
/**
* <p>getLinks.</p>
*
* @return a {@link java.util.Set} object.
*/
public static Set<Link> getLinks() {
return getRequest().getLinks();
}
/**
* <p>getHeaders.</p>
*
* @return a {@link javax.ws.rs.core.MultivaluedMap} object.
*/
public static MultivaluedMap<String, String> getHeaders() {
return getRequest().getHeaders();
}
/**
* <p>getResponseWriter.</p>
*
* @return a {@link org.glassfish.jersey.server.spi.ContainerResponseWriter} object.
*/
public static ContainerResponseWriter getResponseWriter() {
return getRequest().getResponseWriter();
}
/**
* <p>getRemoteRealAddr.</p>
*
* @param realIpHeader a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getRemoteRealAddr(String realIpHeader) {
return getRequest().getRemoteRealAddr(realIpHeader);
}
/**
* <p>getRemoteRealAddr.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getRemoteRealAddr() {
return getRequest().getRemoteRealAddr();
}
/**
* <p>getRawReqeustUri.</p>
*
* @return a {@link java.net.URI} object.
*/
public static URI getRawReqeustUri() {
return getRequest().getRawReqeustUri();
}
/**
* <p>getRemotePort.</p>
*
* @return a int.
*/
public static int getRemotePort() {
return getRequest().getRemotePort();
}
/**
* <p>getLocalAddr.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getLocalAddr() {
return getRequest().getLocalAddr();
}
/**
* <p>getLocalPort.</p>
*
* @return a int.
*/
public static int getLocalPort() {
return getRequest().getLocalPort();
}
/**
* <p>getRemoteHost.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getRemoteHost() {
return getRequest().getRemoteHost();
}
/**
* <p>getLocalName.</p>
*
* @return a {@link java.lang.String} object.
*/
public static String getLocalName() {
return getRequest().getLocalName();
}
static class BindRequest implements Feature {
@Inject
public BindRequest(Provider<ContainerRequest> reqProvider) {
requestProvider = reqProvider;
}
@Override
public boolean configure(FeatureContext context) {
return true;
}
}
}