You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2016/07/04 13:41:43 UTC
[2/2] cxf git commit: [CXF-6760] Moving Swagger code into its own
module
[CXF-6760] Moving Swagger code into its own module
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/21031e3a
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/21031e3a
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/21031e3a
Branch: refs/heads/master
Commit: 21031e3ab2ae227540e2a078d0336d894361acba
Parents: 2ba1449
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Jul 4 14:41:24 2016 +0100
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Jul 4 14:41:24 2016 +0100
----------------------------------------------------------------------
.../samples/jax_rs/description_swagger/pom.xml | 2 +-
.../samples/jax_rs/description_swagger2/pom.xml | 12 +-
.../jax_rs/description_swagger2_osgi/pom.xml | 12 +-
.../jax_rs/description_swagger2_spring/pom.xml | 12 +-
.../jax_rs/description_swagger2_web/pom.xml | 12 +-
.../release/samples/jax_rs/spring_boot/pom.xml | 13 +-
.../jax_rs/spring_boot_scan/application/pom.xml | 14 +-
.../features/src/main/resources/features.xml | 1 +
rt/rs/description-swagger/pom.xml | 93 +++++
rt/rs/description/pom.xml | 23 +-
.../jaxrs/model/doc/DocumentationProvider.java | 29 --
.../cxf/jaxrs/model/doc/JavaDocProvider.java | 380 -------------------
.../jaxrs/swagger/AbstractSwaggerFeature.java | 191 ----------
.../cxf/jaxrs/swagger/JaxRs2Extension.java | 225 -----------
.../cxf/jaxrs/swagger/MatrixParameter.java | 28 --
.../cxf/jaxrs/swagger/Swagger2Feature.java | 259 -------------
.../cxf/jaxrs/swagger/Swagger2Serializers.java | 164 --------
.../cxf/jaxrs/swagger/SwaggerFeature.java | 115 ------
.../apache/cxf/jaxrs/swagger/SwaggerUtils.java | 233 ------------
.../io.swagger.jaxrs.ext.SwaggerExtension | 1 -
.../jaxrs/model/doc/JavaDocProviderTest.java | 107 ------
.../cxf/jaxrs/swagger/Swagger2FeatureTest.java | 53 ---
.../cxf/jaxrs/swagger/SwaggerFeatureTest.java | 45 ---
.../cxf/jaxrs/swagger/SwaggerUtilsTest.java | 74 ----
.../resources/javadocs/pet-store-javadoc16.jar | Bin 3569 -> 0 bytes
.../resources/javadocs/pet-store-javadoc17.jar | Bin 3601 -> 0 bytes
.../resources/javadocs/pet-store-javadoc18.jar | Bin 3873 -> 0 bytes
.../src/test/resources/swagger12.json | 27 --
.../src/test/resources/swagger20.json | 44 ---
rt/rs/pom.xml | 1 +
systests/jaxrs/pom.xml | 41 +-
31 files changed, 124 insertions(+), 2087 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/description_swagger/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/description_swagger/pom.xml b/distribution/src/main/release/samples/jax_rs/description_swagger/pom.xml
index 577f4bd..53d0855 100644
--- a/distribution/src/main/release/samples/jax_rs/description_swagger/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/description_swagger/pom.xml
@@ -140,7 +140,7 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/description_swagger2/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/description_swagger2/pom.xml b/distribution/src/main/release/samples/jax_rs/description_swagger2/pom.xml
index 50b7503..9c9397e 100644
--- a/distribution/src/main/release/samples/jax_rs/description_swagger2/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/description_swagger2/pom.xml
@@ -91,16 +91,6 @@
<dependencies>
<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>2.1.0</version>
@@ -124,7 +114,7 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/description_swagger2_osgi/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/description_swagger2_osgi/pom.xml b/distribution/src/main/release/samples/jax_rs/description_swagger2_osgi/pom.xml
index c2c02cb..575e675 100644
--- a/distribution/src/main/release/samples/jax_rs/description_swagger2_osgi/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/description_swagger2_osgi/pom.xml
@@ -65,16 +65,6 @@ under the License.
<dependencies>
<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.0-SNAPSHOT</version>
@@ -86,7 +76,7 @@ under the License.
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/description_swagger2_spring/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/description_swagger2_spring/pom.xml b/distribution/src/main/release/samples/jax_rs/description_swagger2_spring/pom.xml
index 66d854a..5e6d90a3 100644
--- a/distribution/src/main/release/samples/jax_rs/description_swagger2_spring/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/description_swagger2_spring/pom.xml
@@ -62,16 +62,6 @@
<dependencies>
<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.0-SNAPSHOT</version>
@@ -89,7 +79,7 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml b/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
index 134bc43..e30d4f6 100644
--- a/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
@@ -109,16 +109,6 @@ under the License.
<dependencies>
<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>2.1.0</version>
@@ -136,7 +126,7 @@ under the License.
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/spring_boot/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot/pom.xml b/distribution/src/main/release/samples/jax_rs/spring_boot/pom.xml
index fa62e68..9eaf71b 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot/pom.xml
@@ -23,20 +23,9 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>${cxf.version}</version>
</dependency>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <version>1.5.8</version>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
</dependencies>
<build>
<plugins>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
index cbf835c..9e75e85 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
@@ -23,7 +23,7 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description</artifactId>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>${cxf.version}</version>
</dependency>
<!-- Eureka Service Discovery Client -->
@@ -38,18 +38,6 @@
<artifactId>spring-boot-actuator</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
-
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <version>1.5.8</version>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
</dependencies>
<build>
<plugins>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/osgi/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/osgi/karaf/features/src/main/resources/features.xml b/osgi/karaf/features/src/main/resources/features.xml
index 16877f9..71db85a 100644
--- a/osgi/karaf/features/src/main/resources/features.xml
+++ b/osgi/karaf/features/src/main/resources/features.xml
@@ -230,6 +230,7 @@
</feature>
<feature name="cxf-rs-description-swagger2" version="${project.version}" resolver="(obr)">
<feature version="${project.version}">cxf-jaxrs</feature>
+ <bundle start-level="40">mvn:org.apache.cxf/cxf-rt-rs-service-description-swagger2/${project.version}</bundle>
<bundle start-level="10" dependency="true">mvn:javax.validation/validation-api/${cxf.validation.api.version}</bundle>
<bundle start-level="35" dependency="true">mvn:org.apache.commons/commons-lang3/${cxf.commons-lang3.version}</bundle>
<bundle start-level="35" dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${cxf.jackson.version}</bundle>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description-swagger/pom.xml
----------------------------------------------------------------------
diff --git a/rt/rs/description-swagger/pom.xml b/rt/rs/description-swagger/pom.xml
new file mode 100644
index 0000000..97ceb4d
--- /dev/null
+++ b/rt/rs/description-swagger/pom.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
+ <packaging>bundle</packaging>
+ <name>Apache CXF JAX-RS Service Description Swagger</name>
+ <description>Apache CXF JAX-RS Service Description Swagger</description>
+ <url>http://cxf.apache.org</url>
+ <parent>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-parent</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <relativePath>../../../parent/pom.xml</relativePath>
+ </parent>
+ <properties>
+ <cxf.osgi.import>
+ javax.servlet*;version="${cxf.osgi.javax.servlet.version}",
+ </cxf.osgi.import>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${cxf.servlet-api.group}</groupId>
+ <artifactId>${cxf.servlet-api.artifact}</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.wordnik</groupId>
+ <artifactId>swagger-jaxrs_2.10</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>jsr311-api</artifactId>
+ </exclusion>
+ </exclusions>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-jaxrs</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>jsr311-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-json-basic</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/pom.xml
----------------------------------------------------------------------
diff --git a/rt/rs/description/pom.xml b/rt/rs/description/pom.xml
index b3ad10e..a751d77 100644
--- a/rt/rs/description/pom.xml
+++ b/rt/rs/description/pom.xml
@@ -37,11 +37,6 @@
</properties>
<dependencies>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>${cxf.servlet-api.group}</groupId>
<artifactId>${cxf.servlet-api.artifact}</artifactId>
<scope>provided</scope>
@@ -67,13 +62,6 @@
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-json-basic</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>${project.version}</version>
<scope>test</scope>
@@ -89,14 +77,9 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.wordnik</groupId>
- <artifactId>swagger-jaxrs_2.10</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-jaxrs</artifactId>
- <optional>true</optional>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
<build>
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/DocumentationProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/DocumentationProvider.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/DocumentationProvider.java
deleted file mode 100644
index dff4fd6..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/DocumentationProvider.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.model.doc;
-
-import org.apache.cxf.jaxrs.model.ClassResourceInfo;
-import org.apache.cxf.jaxrs.model.OperationResourceInfo;
-
-public interface DocumentationProvider {
- String getClassDoc(ClassResourceInfo cri);
- String getMethodDoc(OperationResourceInfo ori);
- String getMethodResponseDoc(OperationResourceInfo ori);
- String getMethodParameterDoc(OperationResourceInfo ori, int paramIndex);
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/JavaDocProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/JavaDocProvider.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/JavaDocProvider.java
deleted file mode 100644
index 5e702fe..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/model/doc/JavaDocProvider.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.cxf.jaxrs.model.doc;
-
-import java.io.InputStream;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.ws.rs.Path;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
-import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.jaxrs.model.ClassResourceInfo;
-import org.apache.cxf.jaxrs.model.OperationResourceInfo;
-import org.apache.cxf.jaxrs.utils.ResourceUtils;
-
-public class JavaDocProvider implements DocumentationProvider {
- public static final double JAVA_VERSION = getVersion();
- public static final double JAVA_VERSION_16 = 1.6D;
- public static final double JAVA_VERSION_17 = 1.7D;
- public static final double JAVA_VERSION_18 = 1.8D;
-
- private ClassLoader javaDocLoader;
- private final ConcurrentHashMap<String, ClassDocs> docs = new ConcurrentHashMap<>();
- private double javaDocsBuiltByVersion = JAVA_VERSION;
-
- public JavaDocProvider(URL... javaDocUrls) {
- if (javaDocUrls == null) {
- throw new IllegalArgumentException("URL are null");
- }
-
- javaDocLoader = new URLClassLoader(javaDocUrls);
- }
-
- public JavaDocProvider(String path) throws Exception {
- this(BusFactory.getDefaultBus(), path);
- }
-
- public JavaDocProvider(String... paths) throws Exception {
- this(BusFactory.getDefaultBus(), paths == null ? null : paths);
- }
-
- public JavaDocProvider(Bus bus, String... paths) throws Exception {
- if (paths == null) {
- throw new IllegalArgumentException("paths are null");
- }
-
- URL[] javaDocUrls = new URL[paths.length];
- for (int i = 0; i < paths.length; i++) {
- javaDocUrls[i] = ResourceUtils.getResourceURL(paths[i], bus);
- }
- javaDocLoader = new URLClassLoader(javaDocUrls);
- }
-
- private static double getVersion() {
- String version = System.getProperty("java.version");
- try {
- return Double.parseDouble(version.substring(0, 3));
- } catch (Exception ex) {
- return JAVA_VERSION_16;
- }
- }
-
- @Override
- public String getClassDoc(ClassResourceInfo cri) {
- try {
- ClassDocs doc = getClassDocInternal(cri.getServiceClass());
- if (doc == null) {
- return null;
- }
- return doc.getClassInfo();
- } catch (Exception ex) {
- // ignore
- }
- return null;
- }
-
- @Override
- public String getMethodDoc(OperationResourceInfo ori) {
- try {
- MethodDocs doc = getOperationDocInternal(ori);
- if (doc == null) {
- return null;
- }
- return doc.getMethodInfo();
- } catch (Exception ex) {
- // ignore
- }
- return null;
- }
-
- @Override
- public String getMethodResponseDoc(OperationResourceInfo ori) {
- try {
- MethodDocs doc = getOperationDocInternal(ori);
- if (doc == null) {
- return null;
- }
- return doc.getResponseInfo();
- } catch (Exception ex) {
- // ignore
- }
- return null;
- }
-
- @Override
- public String getMethodParameterDoc(OperationResourceInfo ori, int paramIndex) {
- try {
- MethodDocs doc = getOperationDocInternal(ori);
- if (doc == null) {
- return null;
- }
- List<String> params = doc.getParamInfo();
- if (paramIndex < params.size()) {
- return params.get(paramIndex);
- } else {
- return null;
- }
- } catch (Exception ex) {
- // ignore
- }
- return null;
- }
-
- private Class<?> getPathAnnotatedClass(Class<?> cls) {
- if (cls.getAnnotation(Path.class) != null) {
- return cls;
- }
- if (cls.getSuperclass() != null && cls.getSuperclass().getAnnotation(Path.class) != null) {
- return cls.getSuperclass();
- }
- for (Class<?> i : cls.getInterfaces()) {
- if (i.getAnnotation(Path.class) != null) {
- return i;
- }
- }
- return cls;
- }
-
- private ClassDocs getClassDocInternal(Class<?> cls) throws Exception {
- Class<?> annotatedClass = getPathAnnotatedClass(cls);
- String resource = annotatedClass.getName().replace(".", "/") + ".html";
- ClassDocs classDocs = docs.get(resource);
- if (classDocs == null) {
- InputStream resourceStream = javaDocLoader.getResourceAsStream(resource);
- if (resourceStream != null) {
- String doc = IOUtils.readStringFromStream(resourceStream);
-
- String qualifier = annotatedClass.isInterface() ? "Interface" : "Class";
- String classMarker = qualifier + " " + annotatedClass.getSimpleName();
- int index = doc.indexOf(classMarker);
- if (index != -1) {
- String classInfoTag = getClassInfoTag();
- String classInfo = getJavaDocText(doc, classInfoTag,
- "Method Summary", index + classMarker.length());
- classDocs = new ClassDocs(doc, classInfo);
- docs.putIfAbsent(resource, classDocs);
- }
- }
- }
- return classDocs;
- }
-
-
- private MethodDocs getOperationDocInternal(OperationResourceInfo ori) throws Exception {
- Method method = ori.getAnnotatedMethod() == null
- ? ori.getMethodToInvoke()
- : ori.getAnnotatedMethod();
- ClassDocs classDoc = getClassDocInternal(method.getDeclaringClass());
- if (classDoc == null) {
- return null;
- }
- MethodDocs mDocs = classDoc.getMethodDocs(method);
- if (mDocs == null) {
- String operLink = getOperLink();
- String operMarker = operLink + method.getName() + getOperationMarkerOpen();
-
- int operMarkerIndex = classDoc.getClassDoc().indexOf(operMarker);
- while (operMarkerIndex != -1) {
- int startOfOpSigIndex = operMarkerIndex + operMarker.length();
- int endOfOpSigIndex = classDoc.getClassDoc().indexOf(getOperationMarkerClose(),
- startOfOpSigIndex);
- int paramLen = method.getParameterTypes().length;
- if (endOfOpSigIndex == startOfOpSigIndex && paramLen == 0) {
- break;
- } else if (endOfOpSigIndex > startOfOpSigIndex + 1) {
- String paramSequence = classDoc.getClassDoc().substring(operMarkerIndex, endOfOpSigIndex);
- if (paramSequence.startsWith(operMarker)) {
- paramSequence = paramSequence.substring(operMarker.length());
- String[] opBits = paramSequence.split(getOperationParamSeparator());
- if (opBits.length == paramLen) {
- break;
- }
- }
- }
- operMarkerIndex = classDoc.getClassDoc().indexOf(operMarker,
- operMarkerIndex + operMarker.length());
- }
-
- if (operMarkerIndex == -1) {
- return null;
- }
-
- String operDoc = classDoc.getClassDoc().substring(operMarkerIndex + operMarker.length());
- String operInfoTag = getOperInfoTag();
- String operInfo = getJavaDocText(operDoc, operInfoTag, operLink, 0);
- String responseInfo = null;
- List<String> paramDocs = new LinkedList<>();
- if (!StringUtils.isEmpty(operInfo)) {
- int returnsIndex = operDoc.indexOf("Returns:", operLink.length());
- int nextOpIndex = operDoc.indexOf(operLink);
- if (returnsIndex != -1 && (nextOpIndex > returnsIndex || nextOpIndex == -1)) {
- responseInfo = getJavaDocText(operDoc, getResponseMarker(), operLink, returnsIndex + 8);
- }
-
- int paramIndex = operDoc.indexOf("Parameters:");
- if (paramIndex != -1 && (nextOpIndex == -1 || paramIndex < nextOpIndex)) {
- String paramString = returnsIndex == -1 ? operDoc.substring(paramIndex)
- : operDoc.substring(paramIndex, returnsIndex);
-
- String codeTag = getCodeTag();
-
- int codeIndex = paramString.indexOf(codeTag);
- while (codeIndex != -1) {
- int next = paramString.indexOf('<', codeIndex + 7);
- if (next == -1) {
- next = paramString.length();
- }
- String param = paramString.substring(codeIndex + 7, next).trim();
- if (param.startsWith("-")) {
- param = param.substring(1).trim();
- }
- paramDocs.add(param);
- if (next == paramString.length()) {
- break;
- } else {
- codeIndex = next + 1;
- }
- codeIndex = paramString.indexOf(codeTag, codeIndex);
- }
-
- }
- }
- mDocs = new MethodDocs(operInfo, paramDocs, responseInfo);
- classDoc.addMethodDocs(method, mDocs);
- }
-
- return mDocs;
- }
-
-
-
- private String getJavaDocText(String doc, String tag, String notAfterTag, int index) {
- int tagIndex = doc.indexOf(tag, index);
- if (tagIndex != -1) {
- int notAfterIndex = doc.indexOf(notAfterTag, index);
- if (notAfterIndex == -1 || notAfterIndex > tagIndex) {
- int nextIndex = doc.indexOf('<', tagIndex + tag.length());
- if (nextIndex != -1) {
- return doc.substring(tagIndex + tag.length(), nextIndex).trim();
- }
- }
- }
- return null;
- }
-
- protected String getClassInfoTag() {
- if (javaDocsBuiltByVersion == JAVA_VERSION_16) {
- return "<P>";
- } else {
- return "<div class=\"block\">";
- }
- }
- protected String getOperInfoTag() {
- if (javaDocsBuiltByVersion == JAVA_VERSION_16) {
- return "<DD>";
- } else {
- return "<div class=\"block\">";
- }
- }
- protected String getOperLink() {
- String operLink = "<A NAME=\"";
- return javaDocsBuiltByVersion == JAVA_VERSION_16 ? operLink : operLink.toLowerCase();
- }
-
- protected String getResponseMarker() {
- String tag = "<DD>";
- return javaDocsBuiltByVersion == JAVA_VERSION_16 ? tag : tag.toLowerCase();
- }
-
- protected String getCodeTag() {
- String tag = "</CODE>";
- return javaDocsBuiltByVersion == JAVA_VERSION_16 ? tag : tag.toLowerCase();
- }
-
- protected String getOperationMarkerOpen() {
- return javaDocsBuiltByVersion == JAVA_VERSION_18 ? "-" : "(";
- }
- protected String getOperationMarkerClose() {
- return javaDocsBuiltByVersion == JAVA_VERSION_18 ? "-\"" : ")";
- }
- protected String getOperationParamSeparator() {
- return javaDocsBuiltByVersion == JAVA_VERSION_18 ? "-" : ",";
- }
- public void setJavaDocsBuiltByVersion(String version) {
- javaDocsBuiltByVersion = Double.valueOf(version);
- }
-
- private static class ClassDocs {
- private final String classDoc;
- private final String classInfo;
- private final ConcurrentHashMap<Method, MethodDocs> mdocs = new ConcurrentHashMap<>();
- ClassDocs(String classDoc, String classInfo) {
- this.classDoc = classDoc;
- this.classInfo = classInfo;
- }
-
- public String getClassDoc() {
- return classDoc;
- }
-
- public String getClassInfo() {
- return classInfo;
- }
-
- public MethodDocs getMethodDocs(Method method) {
- return mdocs.get(method);
- }
-
- public void addMethodDocs(Method method, MethodDocs doc) {
- mdocs.putIfAbsent(method, doc);
- }
- }
-
- private static class MethodDocs {
- private final String methodInfo;
- private final List<String> paramInfo;
- private final String responseInfo;
- MethodDocs(String methodInfo, List<String> paramInfo, String responseInfo) {
- this.methodInfo = methodInfo;
- this.paramInfo = paramInfo;
- this.responseInfo = responseInfo;
- }
-
- public String getMethodInfo() {
- return methodInfo;
- }
-
- public List<String> getParamInfo() {
- return paramInfo;
- }
-
- public String getResponseInfo() {
- return responseInfo;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/AbstractSwaggerFeature.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/AbstractSwaggerFeature.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/AbstractSwaggerFeature.java
deleted file mode 100644
index c933b30..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/AbstractSwaggerFeature.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.util.PackageUtils;
-import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.feature.AbstractFeature;
-import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
-import org.apache.cxf.jaxrs.model.ClassResourceInfo;
-
-public abstract class AbstractSwaggerFeature extends AbstractFeature {
-
- private static final boolean SWAGGER_JAXRS_AVAILABLE;
-
- static {
- SWAGGER_JAXRS_AVAILABLE = isSwaggerJaxRsAvailable();
- }
-
- protected boolean scan = true;
- protected boolean runAsFilter;
- private boolean activateOnlyIfJaxrsSupported;
- private String resourcePackage;
- private String version = "1.0.0";
- // depending on swagger version basePath is set differently
- private String basePath;
- private String title = "Sample REST Application";
- private String description = "The Application";
- private String contact = "users@cxf.apache.org";
- private String license = "Apache 2.0 License";
- private String licenseUrl = "http://www.apache.org/licenses/LICENSE-2.0.html";
- private String termsOfServiceUrl;
- private String filterClass;
-
- private static boolean isSwaggerJaxRsAvailable() {
- try {
- Class.forName("io.swagger.jaxrs.DefaultParameterExtension");
- return true;
- } catch (Throwable ex) {
- return false;
- }
- }
-
- @Override
- public void initialize(Server server, Bus bus) {
- if (!activateOnlyIfJaxrsSupported || SWAGGER_JAXRS_AVAILABLE) {
- calculateDefaultResourcePackage(server);
- calculateDefaultBasePath(server);
- addSwaggerResource(server);
-
- initializeProvider(server.getEndpoint(), bus);
- bus.setProperty("swagger.service.descrition.available", "true");
- }
- }
-
- protected abstract void addSwaggerResource(Server server);
-
- protected abstract void setBasePathByAddress(String address);
-
- private void calculateDefaultResourcePackage(Server server) {
- if (!StringUtils.isEmpty(getResourcePackage())) {
- return;
- }
- JAXRSServiceFactoryBean serviceFactoryBean =
- (JAXRSServiceFactoryBean)server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName());
- List<ClassResourceInfo> resourceInfos = serviceFactoryBean.getClassResourceInfo();
-
- if (resourceInfos.size() == 1) {
- setResourcePackage(resourceInfos.get(0).getServiceClass().getPackage().getName());
- } else {
- List<Class<?>> serviceClasses = new ArrayList<Class<?>>(resourceInfos.size());
- for (ClassResourceInfo cri : resourceInfos) {
- serviceClasses.add(cri.getServiceClass());
- }
- String sharedPackage = PackageUtils.getSharedPackageName(serviceClasses);
- if (!StringUtils.isEmpty(sharedPackage)) {
- setResourcePackage(sharedPackage);
- }
- }
- }
-
- private void calculateDefaultBasePath(Server server) {
- if (getBasePath() == null || getBasePath().length() == 0) {
- String address = server.getEndpoint().getEndpointInfo().getAddress();
- setBasePathByAddress(address);
- }
- }
-
- public String getResourcePackage() {
- return resourcePackage;
- }
- public void setResourcePackage(String resourcePackage) {
- this.resourcePackage = resourcePackage;
- }
- public String getVersion() {
- return version;
- }
- public void setVersion(String version) {
- this.version = version;
- }
- public String getBasePath() {
- return basePath;
- }
- public void setBasePath(String basePath) {
- this.basePath = basePath;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public String getDescription() {
- return description;
- }
- public void setDescription(String description) {
- this.description = description;
- }
- public String getContact() {
- return contact;
- }
- public void setContact(String contact) {
- this.contact = contact;
- }
- public String getLicense() {
- return license;
- }
- public void setLicense(String license) {
- this.license = license;
- }
- public String getLicenseUrl() {
- return licenseUrl;
- }
- public void setLicenseUrl(String licenseUrl) {
- this.licenseUrl = licenseUrl;
- }
- public String getTermsOfServiceUrl() {
- return termsOfServiceUrl;
- }
- public void setTermsOfServiceUrl(String termsOfServiceUrl) {
- this.termsOfServiceUrl = termsOfServiceUrl;
- }
- public boolean isScan() {
- return scan;
- }
- public void setScan(boolean scan) {
- this.scan = scan;
- }
- public String getFilterClass() {
- return filterClass;
- }
- public void setFilterClass(String filterClass) {
- this.filterClass = filterClass;
- }
-
- public boolean isRunAsFilter() {
- return runAsFilter;
- }
- public void setRunAsFilter(boolean runAsFilter) {
- this.runAsFilter = runAsFilter;
- }
-
- public boolean isActivateOnlyIfJaxrsSupported() {
- return activateOnlyIfJaxrsSupported;
- }
-
- public void setActivateOnlyIfJaxrsSupported(boolean activateOnlyIfJaxrsSupported) {
- this.activateOnlyIfJaxrsSupported = activateOnlyIfJaxrsSupported;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/JaxRs2Extension.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/JaxRs2Extension.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/JaxRs2Extension.java
deleted file mode 100644
index 87e0cf2..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/JaxRs2Extension.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.validation.constraints.DecimalMax;
-import javax.validation.constraints.DecimalMin;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-import javax.ws.rs.BeanParam;
-import javax.ws.rs.MatrixParam;
-
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.introspect.AnnotatedField;
-import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
-import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;
-
-import io.swagger.converter.ModelConverters;
-import io.swagger.jaxrs.ext.AbstractSwaggerExtension;
-import io.swagger.jaxrs.ext.SwaggerExtension;
-import io.swagger.jaxrs.ext.SwaggerExtensions;
-import io.swagger.models.parameters.AbstractSerializableParameter;
-import io.swagger.models.parameters.Parameter;
-import io.swagger.models.properties.ArrayProperty;
-import io.swagger.models.properties.Property;
-import io.swagger.models.properties.RefProperty;
-import io.swagger.models.properties.StringProperty;
-import io.swagger.util.Json;
-import io.swagger.util.ParameterProcessor;
-
-public class JaxRs2Extension extends AbstractSwaggerExtension {
-
- private final ObjectMapper mapper = Json.mapper();
-
- @Override
- public List<Parameter> extractParameters(
- final List<Annotation> annotations,
- final Type type,
- final Set<Type> typesToSkip,
- final Iterator<SwaggerExtension> chain) {
-
- if (shouldIgnoreType(type, typesToSkip)) {
- return new ArrayList<>();
- }
-
- List<Parameter> parameters = new ArrayList<>();
- for (Annotation annotation : annotations) {
- if (annotation instanceof MatrixParam) {
- MatrixParam param = (MatrixParam) annotation;
- MatrixParameter mp = new MatrixParameter().name(param.value());
-
- Property schema = createProperty(type);
- if (schema != null) {
- mp.setProperty(schema);
- }
- applyBeanValidatorAnnotations(mp, annotations);
- parameters.add(mp);
- } else if (annotation instanceof BeanParam) {
- // Use Jackson's logic for processing Beans
- final BeanDescription beanDesc = mapper.getSerializationConfig().introspect(constructType(type));
- final List<BeanPropertyDefinition> properties = beanDesc.findProperties();
-
- for (final BeanPropertyDefinition propDef : properties) {
- final AnnotatedField field = propDef.getField();
- final AnnotatedMethod setter = propDef.getSetter();
- final List<Annotation> paramAnnotations = new ArrayList<>();
- final Iterator<SwaggerExtension> extensions = SwaggerExtensions.chain();
- Type paramType = null;
-
- // Gather the field's details
- if (field != null) {
- paramType = field.getGenericType();
-
- for (final Annotation fieldAnnotation : field.annotations()) {
- if (!paramAnnotations.contains(fieldAnnotation)) {
- paramAnnotations.add(fieldAnnotation);
- }
- }
- }
-
- // Gather the setter's details but only the ones we need
- if (setter != null) {
- // Do not set the param class/type from the setter if the values are already identified
- if (paramType == null && setter.getGenericParameterTypes() != null) {
- paramType = setter.getGenericParameterTypes()[0];
- }
-
- for (final Annotation fieldAnnotation : setter.annotations()) {
- if (!paramAnnotations.contains(fieldAnnotation)) {
- paramAnnotations.add(fieldAnnotation);
- }
- }
- }
-
- // Re-process all Bean fields and let the default swagger-jaxrs processor do its thing
- List<Parameter> extracted =
- extensions.next().extractParameters(paramAnnotations, paramType, typesToSkip, extensions);
-
- // since downstream processors won't know how to introspect @BeanParam, process here
- for (Parameter param : extracted) {
- if (ParameterProcessor.applyAnnotations(null, param, paramType, paramAnnotations) != null) {
- applyBeanValidatorAnnotations(param, paramAnnotations);
- parameters.add(param);
- }
- }
- }
- }
- }
-
- // Only call down to the other items in the chain if no parameters were produced
- if (parameters.isEmpty()) {
- parameters = super.extractParameters(annotations, type, typesToSkip, chain);
- }
-
- return parameters;
- }
-
- private Property createProperty(final Type type) {
- return enforcePrimitive(ModelConverters.getInstance().readAsProperty(type), 0);
- }
-
- private Property enforcePrimitive(final Property in, final int level) {
- if (in instanceof RefProperty) {
- return new StringProperty();
- }
- if (in instanceof ArrayProperty) {
- if (level == 0) {
- final ArrayProperty array = (ArrayProperty) in;
- array.setItems(enforcePrimitive(array.getItems(), level + 1));
- } else {
- return new StringProperty();
- }
- }
- return in;
- }
-
- /**
- * This is essentially a duplicate of {@link io.swagger.jackson.ModelResolver.applyBeanValidatorAnnotations}.
- *
- * @param parameter
- * @param annotations
- */
- private void applyBeanValidatorAnnotations(final Parameter parameter, final List<Annotation> annotations) {
- Map<String, Annotation> annos = new HashMap<>();
- if (annotations != null) {
- for (Annotation annotation : annotations) {
- annos.put(annotation.annotationType().getName(), annotation);
- }
- }
-
- if (annos.containsKey(NotNull.class.getName())) {
- parameter.setRequired(true);
- }
-
- if (parameter instanceof AbstractSerializableParameter) {
- AbstractSerializableParameter<?> serializable = (AbstractSerializableParameter<?>) parameter;
-
- if (annos.containsKey(Min.class.getName())) {
- Min min = (Min) annos.get(Min.class.getName());
- serializable.setMinimum(new Double(min.value()));
- }
- if (annos.containsKey(Max.class.getName())) {
- Max max = (Max) annos.get(Max.class.getName());
- serializable.setMaximum(new Double(max.value()));
- }
- if (annos.containsKey(Size.class.getName())) {
- Size size = (Size) annos.get(Size.class.getName());
-
- serializable.setMinimum(new Double(size.min()));
- serializable.setMaximum(new Double(size.max()));
-
- serializable.setMinItems(size.min());
- serializable.setMaxItems(size.max());
- }
- if (annos.containsKey(DecimalMin.class.getName())) {
- DecimalMin min = (DecimalMin) annos.get(DecimalMin.class.getName());
- if (min.inclusive()) {
- serializable.setMinimum(new Double(min.value()));
- } else {
- serializable.setExclusiveMinimum(!min.inclusive());
- }
- }
- if (annos.containsKey(DecimalMax.class.getName())) {
- DecimalMax max = (DecimalMax) annos.get(DecimalMax.class.getName());
- if (max.inclusive()) {
- serializable.setMaximum(new Double(max.value()));
- } else {
- serializable.setExclusiveMaximum(!max.inclusive());
- }
- }
- if (annos.containsKey(Pattern.class.getName())) {
- Pattern pattern = (Pattern) annos.get(Pattern.class.getName());
- serializable.setPattern(pattern.regexp());
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/MatrixParameter.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/MatrixParameter.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/MatrixParameter.java
deleted file mode 100644
index f1472c2..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/MatrixParameter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import io.swagger.models.parameters.AbstractSerializableParameter;
-
-public class MatrixParameter extends AbstractSerializableParameter<MatrixParameter> {
-
- public MatrixParameter() {
- super.setIn("matrix");
- }
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/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
deleted file mode 100644
index bc9102f..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.servlet.ServletContext;
-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;
-
-import org.apache.cxf.annotations.Provider;
-import org.apache.cxf.annotations.Provider.Type;
-import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
-import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.apache.cxf.jaxrs.model.ClassResourceInfo;
-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;
-import io.swagger.jaxrs.config.ReaderConfig;
-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;
-
- private boolean prettyPrint;
-
- private boolean scanAllResources;
-
- private String ignoreRoutes;
-
- @Override
- protected void addSwaggerResource(Server server) {
- 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.injectContextProxies(cri, apiListingResource);
- }
- }
- }
- providers.add(new Swagger2Serializers(dynamicBasePath, replaceTags, javadocProvider, cris));
- providers.add(new ReaderConfigFilter());
- ((ServerProviderFactory) server.getEndpoint().get(
- ServerProviderFactory.class.getName())).setUserProviders(providers);
-
- BeanConfig beanConfig = new BeanConfig();
- beanConfig.setResourcePackage(getResourcePackage());
- beanConfig.setVersion(getVersion());
- beanConfig.setBasePath(getBasePath());
- beanConfig.setHost(getHost());
- beanConfig.setSchemes(getSchemes());
- beanConfig.setTitle(getTitle());
- beanConfig.setDescription(getDescription());
- beanConfig.setContact(getContact());
- beanConfig.setLicense(getLicense());
- beanConfig.setLicenseUrl(getLicenseUrl());
- beanConfig.setTermsOfServiceUrl(getTermsOfServiceUrl());
- beanConfig.setScan(isScan());
- beanConfig.setPrettyPrint(isPrettyPrint());
- beanConfig.setFilterClass(getFilterClass());
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public String[] getSchemes() {
- return schemes;
- }
-
- public void setSchemes(String[] schemes) {
- this.schemes = schemes;
- }
-
- public boolean isPrettyPrint() {
- return prettyPrint;
- }
-
- public void setPrettyPrint(boolean prettyPrint) {
- this.prettyPrint = prettyPrint;
- }
-
- public boolean isScanAllResources() {
- return scanAllResources;
- }
-
- public void setScanAllResources(boolean scanAllResources) {
- this.scanAllResources = scanAllResources;
- }
-
- public String getIgnoreRoutes() {
- return ignoreRoutes;
- }
-
- public void setIgnoreRoutes(String ignoreRoutes) {
- this.ignoreRoutes = ignoreRoutes;
- }
-
- public void setDynamicBasePath(final boolean dynamicBasePath) {
- this.dynamicBasePath = dynamicBasePath;
- }
-
- public void setReplaceTags(final boolean replaceTags) {
- this.replaceTags = replaceTags;
- }
-
- public void setJavaDocPath(final String javaDocPath) throws Exception {
- this.javadocProvider = new JavaDocProvider(javaDocPath);
- }
-
- public void setJavaDocPaths(final String... javaDocPaths) throws Exception {
- this.javadocProvider = new JavaDocProvider(javaDocPaths);
- }
-
- public void setJavaDocURLs(final URL[] javaDocURLs) {
- this.javadocProvider = new JavaDocProvider(javaDocURLs);
- }
-
- @Override
- protected void setBasePathByAddress(String address) {
- if (!address.startsWith("/")) {
- // get the path part
- URI u = URI.create(address);
- setBasePath(u.getPath());
- setHost(u.getPort() < 0 ? u.getHost() : u.getHost() + ":" + u.getPort());
- } else {
- setBasePath(address);
- }
- }
-
- @PreMatching
- 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";
-
- protected static final String APIDOCS_LISTING_PATH_JSON = APIDOCS_LISTING_PATH + ".json";
-
- protected static final String APIDOCS_LISTING_PATH_YAML = APIDOCS_LISTING_PATH + ".yaml";
-
- @Context
- protected MessageContext mc;
-
- @Override
- public void filter(ContainerRequestContext requestContext) throws IOException {
- UriInfo ui = mc.getUriInfo();
- 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);
- }
- }
- }
-
- protected class ReaderConfigFilter implements ContainerRequestFilter {
-
- @Context
- protected MessageContext mc;
-
- @Override
- public void filter(ContainerRequestContext requestContext) throws IOException {
- ServletContext servletContext = mc.getServletContext();
- if (servletContext != null && servletContext.getAttribute(ReaderConfig.class.getName()) == null) {
- if (mc.getServletConfig() != null
- && Boolean.valueOf(mc.getServletConfig().getInitParameter("scan.all.resources"))) {
- addReaderConfig(mc.getServletConfig().getInitParameter("ignore.routes"));
- } else if (isScanAllResources()) {
- addReaderConfig(getIgnoreRoutes());
- }
- }
- }
-
- protected void addReaderConfig(String ignoreRoutesParam) {
- DefaultReaderConfig rc = new DefaultReaderConfig();
- rc.setScanAllResources(true);
- if (ignoreRoutesParam != null) {
- Set<String> routes = new LinkedHashSet<>();
- for (String route : StringUtils.split(ignoreRoutesParam, ",")) {
- routes.add(route.trim());
- }
- rc.setIgnoredRoutes(routes);
- }
- mc.getServletContext().setAttribute(ReaderConfig.class.getName(), rc);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/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
deleted file mode 100644
index e6f7be2..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Serializers.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.apache.cxf.jaxrs.model.ClassResourceInfo;
-import org.apache.cxf.jaxrs.model.OperationResourceInfo;
-import org.apache.cxf.jaxrs.model.doc.DocumentationProvider;
-import org.apache.cxf.jaxrs.utils.JAXRSUtils;
-
-import io.swagger.jaxrs.listing.SwaggerSerializers;
-import io.swagger.models.HttpMethod;
-import io.swagger.models.Operation;
-import io.swagger.models.Path;
-import io.swagger.models.Swagger;
-import io.swagger.models.Tag;
-
-public class Swagger2Serializers extends SwaggerSerializers {
-
- protected final boolean dynamicBasePath;
-
- protected final boolean replaceTags;
-
- protected final DocumentationProvider javadocProvider;
-
- protected final List<ClassResourceInfo> cris;
-
- public Swagger2Serializers(
- final boolean dynamicBasePath,
- final boolean replaceTags,
- final DocumentationProvider javadocProvider,
- final List<ClassResourceInfo> cris) {
-
- super();
-
- this.dynamicBasePath = dynamicBasePath;
- this.replaceTags = replaceTags;
- this.javadocProvider = javadocProvider;
- this.cris = cris;
- }
-
- @Override
- public void writeTo(
- final Swagger data,
- final Class<?> type,
- final Type genericType,
- final Annotation[] annotations,
- final MediaType mediaType,
- final MultivaluedMap<String, Object> headers,
- final OutputStream out) throws IOException {
-
- if (dynamicBasePath) {
- MessageContext ctx = JAXRSUtils.createContextValue(
- JAXRSUtils.getCurrentMessage(), null, MessageContext.class);
- data.setBasePath(StringUtils.substringBeforeLast(ctx.getHttpServletRequest().getRequestURI(), "/"));
- }
-
- if (replaceTags || javadocProvider != null) {
- Map<String, ClassResourceInfo> operations = new HashMap<>();
- Map<Pair<String, String>, OperationResourceInfo> methods = new HashMap<>();
- for (ClassResourceInfo cri : cris) {
- for (OperationResourceInfo ori : cri.getMethodDispatcher().getOperationResourceInfos()) {
- String normalizedPath = getNormalizedPath(
- cri.getURITemplate().getValue(), ori.getURITemplate().getValue());
-
- operations.put(normalizedPath, cri);
- methods.put(ImmutablePair.of(ori.getHttpMethod(), normalizedPath), ori);
- }
- }
-
- if (replaceTags && data.getTags() != null) {
- data.getTags().clear();
- }
- for (final Map.Entry<String, Path> entry : data.getPaths().entrySet()) {
- Tag tag = null;
- if (replaceTags && operations.containsKey(entry.getKey())) {
- ClassResourceInfo cri = operations.get(entry.getKey());
-
- tag = new Tag();
- tag.setName(cri.getURITemplate().getValue());
- if (javadocProvider != null) {
- tag.setDescription(javadocProvider.getClassDoc(cri));
- }
-
- data.addTag(tag);
- }
-
- for (Map.Entry<HttpMethod, Operation> subentry : entry.getValue().getOperationMap().entrySet()) {
- if (replaceTags && tag != null) {
- subentry.getValue().setTags(Collections.singletonList(tag.getName()));
- }
-
- Pair<String, String> key = ImmutablePair.of(subentry.getKey().name(), entry.getKey());
- if (methods.containsKey(key) && javadocProvider != null) {
- OperationResourceInfo ori = methods.get(key);
-
- subentry.getValue().setSummary(javadocProvider.getMethodDoc(ori));
- for (int i = 0; i < subentry.getValue().getParameters().size(); i++) {
- subentry.getValue().getParameters().get(i).
- setDescription(javadocProvider.getMethodParameterDoc(ori, i));
- }
-
- if (subentry.getValue().getResponses() != null
- && !subentry.getValue().getResponses().isEmpty()) {
-
- subentry.getValue().getResponses().entrySet().iterator().next().getValue().
- setDescription(javadocProvider.getMethodResponseDoc(ori));
- }
- }
- }
- }
- }
-
- super.writeTo(data, type, genericType, annotations, mediaType, headers, out);
- }
-
- protected String getNormalizedPath(String classResourcePath, String operationResourcePath) {
- StringBuilder normalizedPath = new StringBuilder();
-
- String[] segments = StringUtils.split(classResourcePath + operationResourcePath, "/");
- for (String segment : segments) {
- if (!StringUtils.isEmpty(segment)) {
- normalizedPath.append("/").append(segment);
- }
- }
- // Adapt to Swagger's path expression
- if (normalizedPath.toString().endsWith(":.*}")) {
- normalizedPath.setLength(normalizedPath.length() - 4);
- normalizedPath.append('}');
- }
- return StringUtils.EMPTY.equals(normalizedPath.toString()) ? "/" : normalizedPath.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/21031e3a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java
deleted file mode 100644
index 0a4162b..0000000
--- a/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.swagger;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-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.Response;
-import javax.ws.rs.core.UriInfo;
-
-import com.wordnik.swagger.jaxrs.config.BeanConfig;
-import com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider;
-import com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON;
-import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider;
-
-import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
-import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
-
-public class SwaggerFeature extends AbstractSwaggerFeature {
-
- @Override
- protected void addSwaggerResource(Server server) {
- ApiListingResourceJSON apiListingResource = new ApiListingResourceJSON();
- if (!runAsFilter) {
- List<Object> serviceBeans = new ArrayList<Object>();
- serviceBeans.add(apiListingResource);
- ((JAXRSServiceFactoryBean)server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName())).
- setResourceClassesFromBeans(serviceBeans);
- }
- List<Object> providers = new ArrayList<Object>();
- if (runAsFilter) {
- providers.add(new SwaggerContainerRequestFilter(apiListingResource));
- }
- providers.add(new ResourceListingProvider());
- providers.add(new ApiDeclarationProvider());
- ((ServerProviderFactory)server.getEndpoint().get(
- ServerProviderFactory.class.getName())).setUserProviders(providers);
-
- BeanConfig beanConfig = new BeanConfig();
- beanConfig.setResourcePackage(getResourcePackage());
- beanConfig.setVersion(getVersion());
- beanConfig.setBasePath(getBasePath());
- beanConfig.setTitle(getTitle());
- beanConfig.setDescription(getDescription());
- beanConfig.setContact(getContact());
- beanConfig.setLicense(getLicense());
- beanConfig.setLicenseUrl(getLicenseUrl());
- beanConfig.setTermsOfServiceUrl(getTermsOfServiceUrl());
- beanConfig.setScan(isScan());
- beanConfig.setFilterClass(getFilterClass());
- }
-
- @Override
- protected void setBasePathByAddress(String address) {
- setBasePath(address);
- }
-
- @PreMatching
- private static class SwaggerContainerRequestFilter implements ContainerRequestFilter {
- private static final String APIDOCS_LISTING_PATH = "api-docs";
- private static final Pattern APIDOCS_RESOURCE_PATH = Pattern.compile(APIDOCS_LISTING_PATH + "(/.+)");
-
- private ApiListingResourceJSON apiListingResource;
- @Context
- private MessageContext mc;
- SwaggerContainerRequestFilter(ApiListingResourceJSON apiListingResource) {
- this.apiListingResource = apiListingResource;
- }
-
- @Override
- public void filter(ContainerRequestContext requestContext) throws IOException {
- UriInfo ui = mc.getUriInfo();
- if (ui.getPath().endsWith(APIDOCS_LISTING_PATH)) {
- Response r =
- apiListingResource.resourceListing(null, mc.getServletConfig(), mc.getHttpHeaders(), ui);
- requestContext.abortWith(r);
- } else {
- final Matcher matcher = APIDOCS_RESOURCE_PATH.matcher(ui.getPath());
-
- if (matcher.find()) {
- Response r =
- apiListingResource.apiDeclaration(matcher.group(1),
- null, mc.getServletConfig(), mc.getHttpHeaders(), ui);
- requestContext.abortWith(r);
- }
- }
- }
-
- }
-}