Repository: cxf
Updated Branches:
  refs/heads/master 99f6eb63f -> dd3cb8eb8


[CXF-7353] Initial support for custom Swagger UI coordinates


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/dd3cb8eb
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/dd3cb8eb
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/dd3cb8eb

Branch: refs/heads/master
Commit: dd3cb8eb84f1f17ebadb4104873faa4f17377a96
Parents: 99f6eb6
Author: Sergey Beryozkin <sberyoz...@gmail.com>
Authored: Fri Apr 28 17:07:22 2017 +0100
Committer: Sergey Beryozkin <sberyoz...@gmail.com>
Committed: Fri Apr 28 17:07:22 2017 +0100

----------------------------------------------------------------------
 .../cxf/jaxrs/swagger/OsgiSwaggerUiResolver.java    | 16 +++++++++++-----
 .../apache/cxf/jaxrs/swagger/Swagger2Feature.java   | 13 ++++++++++++-
 .../apache/cxf/jaxrs/swagger/SwaggerUiResolver.java | 12 ++++++++----
 3 files changed, 31 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/dd3cb8eb/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/OsgiSwaggerUiResolver.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/OsgiSwaggerUiResolver.java
 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/OsgiSwaggerUiResolver.java
index 1350fcd..32493a1 100644
--- 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/OsgiSwaggerUiResolver.java
+++ 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/OsgiSwaggerUiResolver.java
@@ -26,25 +26,31 @@ import org.osgi.framework.FrameworkUtil;
 import io.swagger.annotations.Api;
 
 public class OsgiSwaggerUiResolver extends SwaggerUiResolver {
-    private static final String LOCATIONS[] = {
-        "mvn:org.webjars/swagger-ui/",
-        "wrap:mvn:org.webjars/swagger-ui/"
+    private static final String DEFAULT_COORDINATES = "org.webjars/swagger-ui";
+    private static final String DEFAULT_LOCATIONS[] = {
+        "mvn:" + DEFAULT_COORDINATES + "/",
+        "wrap:mvn:" + DEFAULT_COORDINATES + "/"
     };
 
     OsgiSwaggerUiResolver() throws Exception {
         Class.forName("org.osgi.framework.FrameworkUtil");
     }
 
-    protected String findSwaggerUiRootInternal(String swaggerUiVersion) {
+    @Override
+    protected String findSwaggerUiRootInternal(String 
swaggerUiMavenGroupAndArtifact,
+                                               String swaggerUiVersion) {
         try {
             Bundle bundle = FrameworkUtil.getBundle(Api.class);
             if (bundle == null) {
                 return null;
             }
+            String[] locations = swaggerUiMavenGroupAndArtifact == null ? 
DEFAULT_LOCATIONS
+                : new String[]{"mvn:" + DEFAULT_COORDINATES + "/",
+                               "wrap:mvn:" + swaggerUiMavenGroupAndArtifact + 
"/"};
             for (Bundle b : bundle.getBundleContext().getBundles()) {
                 String location = b.getLocation();
 
-                for (String pattern: LOCATIONS) {
+                for (String pattern: locations) {
                     if (swaggerUiVersion != null) {
                         if (location.equals(pattern + swaggerUiVersion)) {
                             return getSwaggerUiRoot(b, swaggerUiVersion);

http://git-wip-us.apache.org/repos/asf/cxf/blob/dd3cb8eb/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
index fd57b64..5696c94 100644
--- 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
+++ 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/Swagger2Feature.java
@@ -89,6 +89,8 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
     private boolean supportSwaggerUi = true;
 
     private String swaggerUiVersion;
+    
+    private String swaggerUiMavenGroupAndArtifact;
 
     private Map<String, String> swaggerUiMediaTypes;
 
@@ -134,7 +136,8 @@ public class Swagger2Feature extends AbstractSwaggerFeature 
{
         }
 
         if (supportSwaggerUi) {
-            String swaggerUiRoot = 
SwaggerUiResolver.findSwaggerUiRoot(swaggerUiVersion);
+            String swaggerUiRoot = 
SwaggerUiResolver.findSwaggerUiRoot(swaggerUiMavenGroupAndArtifact, 
+                                                                       
swaggerUiVersion);
             if (swaggerUiRoot != null) {
                 SwaggerUIService swaggerUiService = new 
SwaggerUIService(swaggerUiRoot, swaggerUiMediaTypes);
                 if (!runAsFilter) {
@@ -267,6 +270,14 @@ public class Swagger2Feature extends 
AbstractSwaggerFeature {
         }
     }
 
+    /**
+     * Set SwaggerUI Maven group and artifact using the "groupId/artifactId" 
format. 
+     * @param swaggerUiMavenGroupAndArtifact
+     */
+    public void setSwaggerUiMavenGroupAndArtifact(String 
swaggerUiMavenGroupAndArtifact) {
+        this.swaggerUiMavenGroupAndArtifact = swaggerUiMavenGroupAndArtifact;
+    }
+    
     public void setSwaggerUiVersion(String swaggerUiVersion) {
         this.swaggerUiVersion = swaggerUiVersion;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/dd3cb8eb/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiResolver.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiResolver.java
 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiResolver.java
index f38ad2b..314e8b3 100644
--- 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiResolver.java
+++ 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiResolver.java
@@ -37,7 +37,8 @@ public class SwaggerUiResolver {
     protected SwaggerUiResolver() {
     }
 
-    protected String findSwaggerUiRootInternal(String swaggerUiVersion) {
+    protected String findSwaggerUiRootInternal(String 
swaggerUiMavenGroupAndArtifact,
+                                               String swaggerUiVersion) {
         try {
             ClassLoader cl = AbstractSwaggerFeature.class.getClassLoader();
             if (cl instanceof URLClassLoader) {
@@ -68,10 +69,13 @@ public class SwaggerUiResolver {
         return null;
     }
 
-    public static String findSwaggerUiRoot(String swaggerUiVersion) {
-        String root = HELPER.findSwaggerUiRootInternal(swaggerUiVersion);
+    public static String findSwaggerUiRoot(String 
swaggerUiMavenGroupAndArtifact, 
+                                           String swaggerUiVersion) {
+        String root = 
HELPER.findSwaggerUiRootInternal(swaggerUiMavenGroupAndArtifact, 
+                                                       swaggerUiVersion);
         if (root == null && HELPER.getClass() != SwaggerUiResolver.class) {
-            root = new 
SwaggerUiResolver().findSwaggerUiRootInternal(swaggerUiVersion);
+            root = new 
SwaggerUiResolver().findSwaggerUiRootInternal(swaggerUiMavenGroupAndArtifact, 
+                                                                     
swaggerUiVersion);
         }
         return root;
     }

Reply via email to