Kaynağa Gözat

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

tags/2.0.1
Jonathan Cobb 4 yıl önce
ebeveyn
işleme
0e0c1f3834
4 değiştirilmiş dosya ile 28 ekleme ve 5 silme
  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 Dosyayı Görüntüle

@@ -13,4 +13,6 @@ public class HttpRedirectException extends RuntimeException {
@Getter @Setter private int status = HttpStatusCodes.FOUND;
@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 Dosyayı Görüntüle

@@ -8,6 +8,7 @@ import org.cobbzilla.wizard.api.ApiException;
import org.cobbzilla.wizard.api.ForbiddenException;
import org.cobbzilla.wizard.api.NotFoundException;
import org.cobbzilla.wizard.api.ValidationException;
import org.cobbzilla.wizard.exceptionmappers.HttpRedirectException;
import org.cobbzilla.wizard.stream.ByteStreamingOutput;
import org.cobbzilla.wizard.stream.FileStreamingOutput;
import org.cobbzilla.wizard.stream.SendableResource;
@@ -123,6 +124,11 @@ public class ResourceUtil {
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 ResourceHttpException forbiddenEx() { return new ResourceHttpException(FORBIDDEN); }



+ 10
- 2
wizard-server/src/main/java/org/cobbzilla/wizard/server/RestServerBase.java Dosyayı Görüntüle

@@ -29,6 +29,7 @@ import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.message.internal.StreamingOutputProvider;
import org.glassfish.jersey.server.ContainerFactory;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.ServerProperties;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
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.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.system.Sleep.sleep;

@@ -277,6 +277,14 @@ public abstract class RestServerBase<C extends RestServerConfiguration> implemen
if (jerseyConfiguration.hasProviderPackages()) {
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());
rc.register(new JacksonMessageBodyProvider(getObjectMapper(), configuration.getValidator()));


+ 10
- 3
wizard-server/src/main/java/org/cobbzilla/wizard/server/config/JerseyConfiguration.java Dosyayı Görüntüle

@@ -3,17 +3,24 @@ package org.cobbzilla.wizard.server.config;
import lombok.Getter;
import lombok.Setter;

import java.util.Map;

import static org.cobbzilla.util.daemon.ZillaRuntime.empty;

public class JerseyConfiguration {

@Getter @Setter private String[] resourcePackages;

@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;
public boolean hasRequestFilters() { return requestFilters != null && requestFilters.length > 0; }
public boolean hasRequestFilters() { return !empty(requestFilters); }

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

}

Yükleniyor…
İptal
Kaydet