瀏覽代碼

add ability to set jersey properties from config. add forceRedirect utility methods

tags/2.0.1
Jonathan Cobb 4 年之前
父節點
當前提交
0e0c1f3834
共有 4 個文件被更改,包括 28 次插入5 次删除
  1. +2
    -0
      wizard-server/src/main/java/org/cobbzilla/wizard/exceptionmappers/HttpRedirectException.java
  2. +6
    -0
      wizard-server/src/main/java/org/cobbzilla/wizard/resources/ResourceUtil.java
  3. +10
    -2
      wizard-server/src/main/java/org/cobbzilla/wizard/server/RestServerBase.java
  4. +10
    -3
      wizard-server/src/main/java/org/cobbzilla/wizard/server/config/JerseyConfiguration.java

+ 2
- 0
wizard-server/src/main/java/org/cobbzilla/wizard/exceptionmappers/HttpRedirectException.java 查看文件

@@ -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; }

} }

+ 6
- 0
wizard-server/src/main/java/org/cobbzilla/wizard/resources/ResourceUtil.java 查看文件

@@ -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); }




+ 10
- 2
wizard-server/src/main/java/org/cobbzilla/wizard/server/RestServerBase.java 查看文件

@@ -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()));


+ 10
- 3
wizard-server/src/main/java/org/cobbzilla/wizard/server/config/JerseyConfiguration.java 查看文件

@@ -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); }


} }

Loading…
取消
儲存