You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by il...@apache.org on 2016/03/16 16:40:12 UTC
[1/2] cxf git commit: Several Swagger-related improvements:
swagger-jaxrs upgraded to 1.5.8, now working properly even as filter,
prepared Swagger2Feature for extension
Repository: cxf
Updated Branches:
refs/heads/3.0.x-fixes 0afa9d25d -> e515c1365
refs/heads/master bafe76605 -> 7098ccba6
Several Swagger-related improvements: swagger-jaxrs upgraded to 1.5.8, now working properly even as filter, prepared Swagger2Feature for extension
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/7098ccba
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/7098ccba
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/7098ccba
Branch: refs/heads/master
Commit: 7098ccba6b70f911fa7056979b94324fe6104522
Parents: bafe766
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 16 16:09:17 2016 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 16 16:18:35 2016 +0100
----------------------------------------------------------------------
parent/pom.xml | 2 +-
.../cxf/jaxrs/swagger/Swagger2Feature.java | 82 ++++++++++++--------
.../cxf/jaxrs/swagger/Swagger2Serializers.java | 10 +--
3 files changed, 55 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/7098ccba/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 0815e51..864df71 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -148,7 +148,7 @@
<cxf.spring.ldap.version>1.3.1.RELEASE</cxf.spring.ldap.version>
<cxf.spring.mock>spring-test</cxf.spring.mock>
<cxf.swagger.version>1.3.13</cxf.swagger.version>
- <cxf.swagger2.version>1.5.4</cxf.swagger2.version>
+ <cxf.swagger2.version>1.5.8</cxf.swagger2.version>
<cxf.velocity.version>1.7</cxf.velocity.version>
<cxf.woodstox.core.version>4.4.1</cxf.woodstox.core.version>
<cxf.woodstox.stax2-api.version>3.1.4</cxf.woodstox.stax2-api.version>
http://git-wip-us.apache.org/repos/asf/cxf/blob/7098ccba/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
index 5072104..bc9102f 100644
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
@@ -32,6 +32,7 @@ import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@@ -46,6 +47,7 @@ import org.apache.cxf.jaxrs.model.doc.DocumentationProvider;
import org.apache.cxf.jaxrs.model.doc.JavaDocProvider;
import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.config.DefaultReaderConfig;
@@ -55,6 +57,12 @@ import io.swagger.jaxrs.listing.ApiListingResource;
@Provider(Type.Feature)
public class Swagger2Feature extends AbstractSwaggerFeature {
+ protected boolean dynamicBasePath;
+
+ protected boolean replaceTags;
+
+ protected DocumentationProvider javadocProvider;
+
private String host;
private String[] schemes;
@@ -65,33 +73,24 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
private String ignoreRoutes;
- private boolean dynamicBasePath;
-
- private boolean replaceTags;
-
- private DocumentationProvider javadocProvider;
-
@Override
protected void addSwaggerResource(Server server) {
- List<ClassResourceInfo> cris = Collections.emptyList();
- if (!runAsFilter) {
- List<Object> serviceBeans = new ArrayList<>();
- ApiListingResource apiListingResource = new ApiListingResource();
- serviceBeans.add(apiListingResource);
- JAXRSServiceFactoryBean sfb =
- (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName());
- sfb.setResourceClassesFromBeans(serviceBeans);
- cris = sfb.getClassResourceInfo();
+ ApiListingResource apiListingResource = new ApiListingResource();
+ JAXRSServiceFactoryBean sfb =
+ (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName());
+ sfb.setResourceClassesFromBeans(Collections.<Object>singletonList(apiListingResource));
+ List<ClassResourceInfo> cris = sfb.getClassResourceInfo();
+
+ List<Object> providers = new ArrayList<>();
+ if (runAsFilter) {
+ providers.add(new SwaggerContainerRequestFilter());
+ } else {
for (ClassResourceInfo cri : cris) {
if (ApiListingResource.class == cri.getResourceClass()) {
- InjectionUtils.injectContextProxiesAndApplication(cri, apiListingResource, null);
+ InjectionUtils.injectContextProxies(cri, apiListingResource);
}
}
}
- List<Object> providers = new ArrayList<>();
- if (runAsFilter) {
- providers.add(new SwaggerContainerRequestFilter());
- }
providers.add(new Swagger2Serializers(dynamicBasePath, replaceTags, javadocProvider, cris));
providers.add(new ReaderConfigFilter());
((ServerProviderFactory) server.getEndpoint().get(
@@ -187,32 +186,49 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
}
@PreMatching
- private static class SwaggerContainerRequestFilter extends ApiListingResource implements ContainerRequestFilter {
+ protected static class SwaggerContainerRequestFilter extends ApiListingResource implements ContainerRequestFilter {
+
+ protected static final MediaType APPLICATION_YAML_TYPE = JAXRSUtils.toMediaType("application/yaml");
+
+ protected static final String APIDOCS_LISTING_PATH = "swagger";
- private static final String APIDOCS_LISTING_PATH_JSON = "swagger.json";
+ protected static final String APIDOCS_LISTING_PATH_JSON = APIDOCS_LISTING_PATH + ".json";
- private static final String APIDOCS_LISTING_PATH_YAML = "swagger.yaml";
+ protected static final String APIDOCS_LISTING_PATH_YAML = APIDOCS_LISTING_PATH + ".yaml";
@Context
- private MessageContext mc;
+ protected MessageContext mc;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
UriInfo ui = mc.getUriInfo();
- if (ui.getPath().endsWith(APIDOCS_LISTING_PATH_JSON)) {
- Response r = getListingJson(null, mc.getServletConfig(), mc.getHttpHeaders(), ui);
- requestContext.abortWith(r);
- } else if (ui.getPath().endsWith(APIDOCS_LISTING_PATH_YAML)) {
- Response r = getListingYaml(null, mc.getServletConfig(), mc.getHttpHeaders(), ui);
- requestContext.abortWith(r);
+ List<MediaType> mediaTypes = mc.getHttpHeaders().getAcceptableMediaTypes();
+
+ Response response = null;
+ if ((ui.getPath().endsWith(APIDOCS_LISTING_PATH)
+ && !JAXRSUtils.intersectMimeTypes(mediaTypes, MediaType.APPLICATION_JSON_TYPE).isEmpty())
+ || ui.getPath().endsWith(APIDOCS_LISTING_PATH_JSON)) {
+
+ response = getListingJsonResponse(
+ null, mc.getServletContext(), mc.getServletConfig(), mc.getHttpHeaders(), ui);
+ } else if ((ui.getPath().endsWith(APIDOCS_LISTING_PATH)
+ && !JAXRSUtils.intersectMimeTypes(mediaTypes, APPLICATION_YAML_TYPE).isEmpty())
+ || ui.getPath().endsWith(APIDOCS_LISTING_PATH_YAML)) {
+
+ response = getListingYamlResponse(
+ null, mc.getServletContext(), mc.getServletConfig(), mc.getHttpHeaders(), ui);
+ }
+
+ if (response != null) {
+ requestContext.abortWith(response);
}
}
}
- private class ReaderConfigFilter implements ContainerRequestFilter {
+ protected class ReaderConfigFilter implements ContainerRequestFilter {
@Context
- private MessageContext mc;
+ protected MessageContext mc;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
@@ -227,7 +243,7 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
}
}
- private void addReaderConfig(String ignoreRoutesParam) {
+ protected void addReaderConfig(String ignoreRoutesParam) {
DefaultReaderConfig rc = new DefaultReaderConfig();
rc.setScanAllResources(true);
if (ignoreRoutesParam != null) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/7098ccba/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
index 187ea96..e6f7be2 100644
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
@@ -48,13 +48,13 @@ import io.swagger.models.Tag;
public class Swagger2Serializers extends SwaggerSerializers {
- private final boolean dynamicBasePath;
+ protected final boolean dynamicBasePath;
- private final boolean replaceTags;
+ protected final boolean replaceTags;
- private final DocumentationProvider javadocProvider;
+ protected final DocumentationProvider javadocProvider;
- private final List<ClassResourceInfo> cris;
+ protected final List<ClassResourceInfo> cris;
public Swagger2Serializers(
final boolean dynamicBasePath,
@@ -145,7 +145,7 @@ public class Swagger2Serializers extends SwaggerSerializers {
super.writeTo(data, type, genericType, annotations, mediaType, headers, out);
}
- private String getNormalizedPath(String classResourcePath, String operationResourcePath) {
+ protected String getNormalizedPath(String classResourcePath, String operationResourcePath) {
StringBuilder normalizedPath = new StringBuilder();
String[] segments = StringUtils.split(classResourcePath + operationResourcePath, "/");
[2/2] cxf git commit: Several Swagger-related improvements:
swagger-jaxrs upgraded to 1.5.8, now working properly even as filter,
prepared Swagger2Feature for extension
Posted by il...@apache.org.
Several Swagger-related improvements: swagger-jaxrs upgraded to 1.5.8, now working properly even as filter, prepared Swagger2Feature for extension
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e515c136
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e515c136
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e515c136
Branch: refs/heads/3.0.x-fixes
Commit: e515c136504d2854a6db42c5351adf7aa00cddb3
Parents: 0afa9d2
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 16 16:40:02 2016 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 16 16:40:02 2016 +0100
----------------------------------------------------------------------
parent/pom.xml | 2 +-
.../cxf/jaxrs/swagger/Swagger2Feature.java | 82 ++++++++++++--------
.../cxf/jaxrs/swagger/Swagger2Serializers.java | 14 ++--
3 files changed, 57 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/e515c136/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 1a49ffa..18abcc7 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -159,7 +159,7 @@
<cxf.spring.ldap.version>1.3.1.RELEASE</cxf.spring.ldap.version>
<cxf.spring.mock>spring-test</cxf.spring.mock>
<cxf.swagger.version>1.3.13</cxf.swagger.version>
- <cxf.swagger2.version>1.5.4</cxf.swagger2.version>
+ <cxf.swagger2.version>1.5.8</cxf.swagger2.version>
<cxf.velocity.version>1.7</cxf.velocity.version>
<cxf.woodstox.core.version>4.4.1</cxf.woodstox.core.version>
<cxf.woodstox.stax2-api.version>3.1.4</cxf.woodstox.stax2-api.version>
http://git-wip-us.apache.org/repos/asf/cxf/blob/e515c136/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
index 701701b..df5ea1e 100644
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
@@ -32,6 +32,7 @@ import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@@ -44,6 +45,7 @@ import org.apache.cxf.jaxrs.model.doc.DocumentationProvider;
import org.apache.cxf.jaxrs.model.doc.JavaDocProvider;
import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.config.DefaultReaderConfig;
@@ -52,6 +54,12 @@ import io.swagger.jaxrs.listing.ApiListingResource;
public class Swagger2Feature extends AbstractSwaggerFeature {
+ protected boolean dynamicBasePath;
+
+ protected boolean replaceTags;
+
+ protected DocumentationProvider javadocProvider;
+
private String host;
private String[] schemes;
@@ -62,33 +70,24 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
private String ignoreRoutes;
- private boolean dynamicBasePath;
-
- private boolean replaceTags;
-
- private DocumentationProvider javadocProvider;
-
@Override
protected void addSwaggerResource(Server server) {
- List<ClassResourceInfo> cris = Collections.emptyList();
- if (!runAsFilter) {
- List<Object> serviceBeans = new ArrayList<Object>();
- ApiListingResource apiListingResource = new ApiListingResource();
- serviceBeans.add(apiListingResource);
- JAXRSServiceFactoryBean sfb =
- (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName());
- sfb.setResourceClassesFromBeans(serviceBeans);
- cris = sfb.getClassResourceInfo();
+ ApiListingResource apiListingResource = new ApiListingResource();
+ JAXRSServiceFactoryBean sfb =
+ (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName());
+ sfb.setResourceClassesFromBeans(Collections.<Object>singletonList(apiListingResource));
+ List<ClassResourceInfo> cris = sfb.getClassResourceInfo();
+
+ List<Object> providers = new ArrayList<Object>();
+ if (runAsFilter) {
+ providers.add(new SwaggerContainerRequestFilter());
+ } else {
for (ClassResourceInfo cri : cris) {
if (ApiListingResource.class == cri.getResourceClass()) {
- InjectionUtils.injectContextProxiesAndApplication(cri, apiListingResource, null);
+ InjectionUtils.injectContextProxies(cri, apiListingResource);
}
}
}
- List<Object> providers = new ArrayList<Object>();
- if (runAsFilter) {
- providers.add(new SwaggerContainerRequestFilter());
- }
providers.add(new Swagger2Serializers(dynamicBasePath, replaceTags, javadocProvider, cris));
providers.add(new ReaderConfigFilter());
((ServerProviderFactory) server.getEndpoint().get(
@@ -184,32 +183,49 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
}
@PreMatching
- private static class SwaggerContainerRequestFilter extends ApiListingResource implements ContainerRequestFilter {
+ protected static class SwaggerContainerRequestFilter extends ApiListingResource implements ContainerRequestFilter {
+
+ protected static final MediaType APPLICATION_YAML_TYPE = JAXRSUtils.toMediaType("application/yaml");
+
+ protected static final String APIDOCS_LISTING_PATH = "swagger";
- private static final String APIDOCS_LISTING_PATH_JSON = "swagger.json";
+ protected static final String APIDOCS_LISTING_PATH_JSON = APIDOCS_LISTING_PATH + ".json";
- private static final String APIDOCS_LISTING_PATH_YAML = "swagger.yaml";
+ protected static final String APIDOCS_LISTING_PATH_YAML = APIDOCS_LISTING_PATH + ".yaml";
@Context
- private MessageContext mc;
+ protected MessageContext mc;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
UriInfo ui = mc.getUriInfo();
- if (ui.getPath().endsWith(APIDOCS_LISTING_PATH_JSON)) {
- Response r = getListingJson(null, mc.getServletConfig(), mc.getHttpHeaders(), ui);
- requestContext.abortWith(r);
- } else if (ui.getPath().endsWith(APIDOCS_LISTING_PATH_YAML)) {
- Response r = getListingYaml(null, mc.getServletConfig(), mc.getHttpHeaders(), ui);
- requestContext.abortWith(r);
+ List<MediaType> mediaTypes = mc.getHttpHeaders().getAcceptableMediaTypes();
+
+ Response response = null;
+ if ((ui.getPath().endsWith(APIDOCS_LISTING_PATH)
+ && !JAXRSUtils.intersectMimeTypes(mediaTypes, MediaType.APPLICATION_JSON_TYPE).isEmpty())
+ || ui.getPath().endsWith(APIDOCS_LISTING_PATH_JSON)) {
+
+ response = getListingJsonResponse(
+ null, mc.getServletContext(), mc.getServletConfig(), mc.getHttpHeaders(), ui);
+ } else if ((ui.getPath().endsWith(APIDOCS_LISTING_PATH)
+ && !JAXRSUtils.intersectMimeTypes(mediaTypes, APPLICATION_YAML_TYPE).isEmpty())
+ || ui.getPath().endsWith(APIDOCS_LISTING_PATH_YAML)) {
+
+ response = getListingYamlResponse(
+ null, mc.getServletContext(), mc.getServletConfig(), mc.getHttpHeaders(), ui);
+ }
+
+ if (response != null) {
+ requestContext.abortWith(response);
}
}
}
- private class ReaderConfigFilter implements ContainerRequestFilter {
+ protected class ReaderConfigFilter implements ContainerRequestFilter {
@Context
- private MessageContext mc;
+ protected MessageContext mc;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
@@ -224,7 +240,7 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
}
}
- private void addReaderConfig(String ignoreRoutesParam) {
+ protected void addReaderConfig(String ignoreRoutesParam) {
DefaultReaderConfig rc = new DefaultReaderConfig();
rc.setScanAllResources(true);
if (ignoreRoutesParam != null) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/e515c136/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
index 0a39b8d..c6dcdae 100644
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
@@ -48,13 +48,13 @@ import io.swagger.models.Tag;
public class Swagger2Serializers extends SwaggerSerializers {
- private final boolean dynamicBasePath;
+ protected final boolean dynamicBasePath;
- private final boolean replaceTags;
+ protected final boolean replaceTags;
- private final DocumentationProvider javadocProvider;
+ protected final DocumentationProvider javadocProvider;
- private final List<ClassResourceInfo> cris;
+ protected final List<ClassResourceInfo> cris;
public Swagger2Serializers(
final boolean dynamicBasePath,
@@ -88,8 +88,8 @@ public class Swagger2Serializers extends SwaggerSerializers {
if (replaceTags || javadocProvider != null) {
Map<String, ClassResourceInfo> operations = new HashMap<String, ClassResourceInfo>();
- Map<Pair<String, String>, OperationResourceInfo> methods =
- new HashMap<Pair<String, String>, OperationResourceInfo>();
+ Map<Pair<String, String>, OperationResourceInfo> methods =
+ new HashMap<Pair<String, String>, OperationResourceInfo>();
for (ClassResourceInfo cri : cris) {
for (OperationResourceInfo ori : cri.getMethodDispatcher().getOperationResourceInfos()) {
String normalizedPath = getNormalizedPath(
@@ -146,7 +146,7 @@ public class Swagger2Serializers extends SwaggerSerializers {
super.writeTo(data, type, genericType, annotations, mediaType, headers, out);
}
- private String getNormalizedPath(String classResourcePath, String operationResourcePath) {
+ protected String getNormalizedPath(String classResourcePath, String operationResourcePath) {
StringBuilder normalizedPath = new StringBuilder();
String[] segments = StringUtils.split(classResourcePath + operationResourcePath, "/");