@@ -13,4 +13,6 @@ public class HttpRedirectException extends RuntimeException { | |||||
@Getter @Setter private int status = HttpStatusCodes.FOUND; | @Getter @Setter private int status = HttpStatusCodes.FOUND; | ||||
@Getter @Setter private String location = "/"; | @Getter @Setter private String location = "/"; | ||||
public HttpRedirectException (String location) { this.location = location; } | |||||
} | } |
@@ -8,6 +8,7 @@ import org.cobbzilla.wizard.api.ApiException; | |||||
import org.cobbzilla.wizard.api.ForbiddenException; | import org.cobbzilla.wizard.api.ForbiddenException; | ||||
import org.cobbzilla.wizard.api.NotFoundException; | import org.cobbzilla.wizard.api.NotFoundException; | ||||
import org.cobbzilla.wizard.api.ValidationException; | import org.cobbzilla.wizard.api.ValidationException; | ||||
import org.cobbzilla.wizard.exceptionmappers.HttpRedirectException; | |||||
import org.cobbzilla.wizard.stream.ByteStreamingOutput; | import org.cobbzilla.wizard.stream.ByteStreamingOutput; | ||||
import org.cobbzilla.wizard.stream.FileStreamingOutput; | import org.cobbzilla.wizard.stream.FileStreamingOutput; | ||||
import org.cobbzilla.wizard.stream.SendableResource; | import org.cobbzilla.wizard.stream.SendableResource; | ||||
@@ -123,6 +124,11 @@ public class ResourceUtil { | |||||
return Response.status(status).header(LOCATION, location).build(); | return Response.status(status).header(LOCATION, location).build(); | ||||
} | } | ||||
public static Response forceRedirect (String location) { return forceRedirect(FOUND, location); } | |||||
public static Response forceRedirect (int status, String location) { | |||||
throw new HttpRedirectException(status, location); | |||||
} | |||||
public static Response forbidden() { return status(FORBIDDEN); } | public static Response forbidden() { return status(FORBIDDEN); } | ||||
public static ResourceHttpException forbiddenEx() { return new ResourceHttpException(FORBIDDEN); } | public static ResourceHttpException forbiddenEx() { return new ResourceHttpException(FORBIDDEN); } | ||||
@@ -29,6 +29,7 @@ import org.glassfish.jersey.media.multipart.MultiPartFeature; | |||||
import org.glassfish.jersey.message.internal.StreamingOutputProvider; | import org.glassfish.jersey.message.internal.StreamingOutputProvider; | ||||
import org.glassfish.jersey.server.ContainerFactory; | import org.glassfish.jersey.server.ContainerFactory; | ||||
import org.glassfish.jersey.server.ResourceConfig; | import org.glassfish.jersey.server.ResourceConfig; | ||||
import org.glassfish.jersey.server.ServerProperties; | |||||
import org.springframework.beans.factory.config.BeanDefinition; | import org.springframework.beans.factory.config.BeanDefinition; | ||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory; | import org.springframework.beans.factory.support.DefaultListableBeanFactory; | ||||
import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||
@@ -48,8 +49,7 @@ import java.util.concurrent.TimeUnit; | |||||
import static org.cobbzilla.util.daemon.ZillaRuntime.*; | import static org.cobbzilla.util.daemon.ZillaRuntime.*; | ||||
import static org.cobbzilla.util.network.NetworkUtil.IPv4_ALL_ADDRS; | import static org.cobbzilla.util.network.NetworkUtil.IPv4_ALL_ADDRS; | ||||
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; | |||||
import static org.cobbzilla.util.reflect.ReflectionUtil.forNames; | |||||
import static org.cobbzilla.util.reflect.ReflectionUtil.*; | |||||
import static org.cobbzilla.util.string.StringUtil.EMPTY_ARRAY; | import static org.cobbzilla.util.string.StringUtil.EMPTY_ARRAY; | ||||
import static org.cobbzilla.util.system.Sleep.sleep; | import static org.cobbzilla.util.system.Sleep.sleep; | ||||
@@ -277,6 +277,14 @@ public abstract class RestServerBase<C extends RestServerConfiguration> implemen | |||||
if (jerseyConfiguration.hasProviderPackages()) { | if (jerseyConfiguration.hasProviderPackages()) { | ||||
for (Class c : findClassesWithAnnotation(jerseyConfiguration.getProviderPackages(), Provider.class)) rc.register(c); | for (Class c : findClassesWithAnnotation(jerseyConfiguration.getProviderPackages(), Provider.class)) rc.register(c); | ||||
} | } | ||||
if (jerseyConfiguration.hasServerProperties()) { | |||||
final Map<String, Object> props = new HashMap<>(); | |||||
for (Map.Entry<String, Object> entry : jerseyConfiguration.getServerProperties().entrySet()) { | |||||
final String realKey = constValue(ServerProperties.class, entry.getKey()); | |||||
props.put(realKey != null ? realKey : entry.getKey(), entry.getValue()); | |||||
} | |||||
rc.setProperties(props); | |||||
} | |||||
configuration.setValidator(new Validator()); | configuration.setValidator(new Validator()); | ||||
rc.register(new JacksonMessageBodyProvider(getObjectMapper(), configuration.getValidator())); | rc.register(new JacksonMessageBodyProvider(getObjectMapper(), configuration.getValidator())); | ||||
@@ -3,17 +3,24 @@ package org.cobbzilla.wizard.server.config; | |||||
import lombok.Getter; | import lombok.Getter; | ||||
import lombok.Setter; | import lombok.Setter; | ||||
import java.util.Map; | |||||
import static org.cobbzilla.util.daemon.ZillaRuntime.empty; | |||||
public class JerseyConfiguration { | public class JerseyConfiguration { | ||||
@Getter @Setter private String[] resourcePackages; | @Getter @Setter private String[] resourcePackages; | ||||
@Getter @Setter private String[] providerPackages; | @Getter @Setter private String[] providerPackages; | ||||
public boolean hasProviderPackages () { return providerPackages != null && providerPackages.length > 0; } | |||||
public boolean hasProviderPackages () { return !empty(providerPackages); } | |||||
@Getter @Setter private String[] requestFilters; | @Getter @Setter private String[] requestFilters; | ||||
public boolean hasRequestFilters() { return requestFilters != null && requestFilters.length > 0; } | |||||
public boolean hasRequestFilters() { return !empty(requestFilters); } | |||||
@Getter @Setter private String[] responseFilters; | @Getter @Setter private String[] responseFilters; | ||||
public boolean hasResponseFilters() { return responseFilters != null && responseFilters.length > 0; } | |||||
public boolean hasResponseFilters() { return !empty(responseFilters); } | |||||
@Getter @Setter private Map<String, Object> serverProperties; | |||||
public boolean hasServerProperties () { return !empty(serverProperties); } | |||||
} | } |