[CXF-6512] The host property is missing in Swagger2 feature's configuration 
properties


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

Branch: refs/heads/3.0.x-fixes
Commit: 48f74636200cbcc6ac68ad43553a4257adff7bfe
Parents: cbb936b
Author: Akitoshi Yoshida <a...@apache.org>
Authored: Fri Jul 31 17:48:12 2015 +0200
Committer: Akitoshi Yoshida <a...@apache.org>
Committed: Fri Jul 31 18:09:02 2015 +0200

----------------------------------------------------------------------
 .../jaxrs/swagger/AbstractSwaggerFeature.java   |  1 +
 .../cxf/jaxrs/swagger/Swagger2Feature.java      | 16 +++++-
 .../cxf/jaxrs/swagger/Swagger2FeatureTest.java  | 53 ++++++++++++++++++++
 .../cxf/jaxrs/swagger/SwaggerFeatureTest.java   | 45 +++++++++++++++++
 4 files changed, 113 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/48f74636/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
index 44f5f08..66b65b8 100644
--- 
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
@@ -29,6 +29,7 @@ abstract class AbstractSwaggerFeature extends AbstractFeature 
{
     protected boolean runAsFilter;
     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";

http://git-wip-us.apache.org/repos/asf/cxf/blob/48f74636/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 279a581..1441b5c 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
@@ -42,6 +42,7 @@ import io.swagger.jaxrs.listing.ApiListingResource;
 import io.swagger.jaxrs.listing.SwaggerSerializers;
 
 public class Swagger2Feature extends AbstractSwaggerFeature {
+    private String host;
 
     @Override
     protected void addSwaggerResource(Server server) {
@@ -70,6 +71,7 @@ public class Swagger2Feature extends AbstractSwaggerFeature {
         beanConfig.setResourcePackage(getResourcePackage());
         beanConfig.setVersion(getVersion());
         beanConfig.setBasePath(getBasePath());
+        beanConfig.setHost(getHost());
         beanConfig.setTitle(getTitle());
         beanConfig.setDescription(getDescription());
         beanConfig.setContact(getContact());
@@ -78,13 +80,23 @@ public class Swagger2Feature extends AbstractSwaggerFeature 
{
         beanConfig.setScan(isScan());
     }
 
+    public String getHost() {
+        return host;
+    }
+    public void setHost(String host) {
+        this.host = host;
+    }
+
     @Override
     protected void setBasePathByAddress(String address) {
         if (!address.startsWith("/")) {
             // get the path part
-            address = URI.create(address).getPath();
+            URI u = URI.create(address); 
+            setBasePath(u.getPath());
+            setHost(u.getPort() < 0 ? u.getHost() : u.getHost() + ":" + 
u.getPort());
+        } else {
+            setBasePath(address);
         }
-        setBasePath(address);
     }
 
     @PreMatching

http://git-wip-us.apache.org/repos/asf/cxf/blob/48f74636/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/Swagger2FeatureTest.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/Swagger2FeatureTest.java
 
b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/Swagger2FeatureTest.java
new file mode 100644
index 0000000..c87b041
--- /dev/null
+++ 
b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/Swagger2FeatureTest.java
@@ -0,0 +1,53 @@
+/**
+ * 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 org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class Swagger2FeatureTest extends Assert {
+    @Test
+    public void testSetBasePathByAddress() {
+        Swagger2Feature f = new Swagger2Feature();
+
+        f.setBasePathByAddress("http://localhost:8080/foo";);
+        assertEquals("/foo", f.getBasePath());
+        assertEquals("localhost:8080", f.getHost());
+        unsetBasePath(f);
+
+        f.setBasePathByAddress("http://localhost/foo";);
+        assertEquals("/foo", f.getBasePath());
+        assertEquals("localhost", f.getHost());
+        unsetBasePath(f);
+
+        f.setBasePathByAddress("/foo");
+        assertEquals("/foo", f.getBasePath());
+        assertNull(f.getHost());
+        unsetBasePath(f);
+    }
+
+    private static void unsetBasePath(Swagger2Feature f) {
+        f.setBasePath(null);
+        f.setHost(null);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/48f74636/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerFeatureTest.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerFeatureTest.java
 
b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerFeatureTest.java
new file mode 100644
index 0000000..a1922d5
--- /dev/null
+++ 
b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerFeatureTest.java
@@ -0,0 +1,45 @@
+/**
+ * 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 org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SwaggerFeatureTest extends Assert {
+    @Test
+    public void testSetBasePathByAddress() {
+        SwaggerFeature f = new SwaggerFeature();
+
+        f.setBasePathByAddress("http://localhost:8080/foo";);
+        assertEquals("http://localhost:8080/foo";, f.getBasePath());
+        unsetBasePath(f);
+
+        f.setBasePathByAddress("/foo");
+        assertEquals("/foo", f.getBasePath());
+        unsetBasePath(f);
+    }
+
+    private static void unsetBasePath(SwaggerFeature f) {
+        f.setBasePath(null);
+    }
+}

Reply via email to