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 2015/12/01 12:00:05 UTC
[1/2] cxf git commit: [CXF-6695] Adding JAX-RS 2 extension for
handling @BeanParam and @MatrixParam
Repository: cxf
Updated Branches:
refs/heads/3.0.x-fixes 1c635e00a -> 3ff04d2b4
refs/heads/master c6b6c5766 -> ec15e3580
[CXF-6695] Adding JAX-RS 2 extension for handling @BeanParam and @MatrixParam
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/ec15e358
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/ec15e358
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/ec15e358
Branch: refs/heads/master
Commit: ec15e35805cf21c03d9eb922241ed4c02419c7e2
Parents: c6b6c57
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Nov 30 16:13:17 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Dec 1 11:16:11 2015 +0100
----------------------------------------------------------------------
parent/pom.xml | 2 +-
.../cxf/jaxrs/swagger/JaxRs2Extension.java | 151 +++++++++++++++++++
.../cxf/jaxrs/swagger/MatrixParameter.java | 28 ++++
.../io.swagger.jaxrs.ext.SwaggerExtension | 1 +
.../cxf/jaxrs/swagger/SwaggerUtilsTest.java | 6 +-
.../src/test/resources/swagger20.json | 15 +-
6 files changed, 200 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/ec15e358/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index ebecbd9..3df4832 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -144,7 +144,7 @@
<cxf.spring.osgi.version>1.2.1</cxf.spring.osgi.version>
<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.12</cxf.swagger.version>
+ <cxf.swagger.version>1.3.13</cxf.swagger.version>
<cxf.swagger2.version>1.5.4</cxf.swagger2.version>
<cxf.velocity.version>1.7</cxf.velocity.version>
<cxf.woodstox.core.version>4.4.1</cxf.woodstox.core.version>
http://git-wip-us.apache.org/repos/asf/cxf/blob/ec15e358/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
new file mode 100644
index 0000000..3c8ae95
--- /dev/null
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/JaxRs2Extension.java
@@ -0,0 +1,151 @@
+/**
+ * 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.Iterator;
+import java.util.List;
+import java.util.Set;
+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.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);
+ }
+ 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) {
+ 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(Type type) {
+ return enforcePrimitive(ModelConverters.getInstance().readAsProperty(type), 0);
+ }
+
+ private Property enforcePrimitive(Property in, 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;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/ec15e358/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
new file mode 100644
index 0000000..f1472c2
--- /dev/null
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/MatrixParameter.java
@@ -0,0 +1,28 @@
+/**
+ * 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/ec15e358/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension b/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension
new file mode 100644
index 0000000..9803485
--- /dev/null
+++ b/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension
@@ -0,0 +1 @@
+org.apache.cxf.jaxrs.swagger.JaxRs2Extension
http://git-wip-us.apache.org/repos/asf/cxf/blob/ec15e358/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
index e9434e1..5c3d6e9 100644
--- a/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
+++ b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
@@ -57,7 +57,7 @@ public class SwaggerUtilsTest extends Assert {
assertEquals("application/x-www-form-urlencoded", op.getConsumes());
assertEquals("application/json", op.getProduces());
- assertEquals(2, op.getParameters().size());
+ assertEquals(3, op.getParameters().size());
Parameter param1 = op.getParameters().get(0);
assertEquals("userName", param1.getName());
assertEquals(ParameterType.FORM, param1.getType());
@@ -66,5 +66,9 @@ public class SwaggerUtilsTest extends Assert {
assertEquals("password", param2.getName());
assertEquals(ParameterType.FORM, param2.getType());
assertEquals(String.class, param2.getJavaType());
+ Parameter param3 = op.getParameters().get(2);
+ assertEquals("type", param3.getName());
+ assertEquals(ParameterType.MATRIX, param3.getType());
+ assertEquals(String.class, param3.getJavaType());
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/ec15e358/rt/rs/description/src/test/resources/swagger20.json
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/test/resources/swagger20.json b/rt/rs/description/src/test/resources/swagger20.json
index 44e7a32..f8f264d 100644
--- a/rt/rs/description/src/test/resources/swagger20.json
+++ b/rt/rs/description/src/test/resources/swagger20.json
@@ -23,7 +23,20 @@
"in": "formData",
"name": "password",
"type": "string"
- }
+ },
+ {
+ "name": "type",
+ "in": "matrix",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "PROPAGATION",
+ "NOTIFICATION",
+ "SCHEDULED",
+ "SYNCHRONIZATION",
+ "PUSH"
+ ]
+ }
]
}
}
[2/2] cxf git commit: [CXF-6695] Adding JAX-RS 2 extension for
handling @BeanParam
Posted by il...@apache.org.
[CXF-6695] Adding JAX-RS 2 extension for handling @BeanParam
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/3ff04d2b
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3ff04d2b
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3ff04d2b
Branch: refs/heads/3.0.x-fixes
Commit: 3ff04d2b458b867ea6437a7ed9949d834b16e346
Parents: 1c635e0
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Dec 1 11:59:35 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Dec 1 11:59:35 2015 +0100
----------------------------------------------------------------------
parent/pom.xml | 2 +-
.../cxf/jaxrs/swagger/JaxRs2Extension.java | 151 +++++++++++++++++++
.../cxf/jaxrs/swagger/MatrixParameter.java | 28 ++++
.../io.swagger.jaxrs.ext.SwaggerExtension | 1 +
.../cxf/jaxrs/swagger/SwaggerUtilsTest.java | 6 +-
.../src/test/resources/swagger20.json | 15 +-
6 files changed, 200 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/3ff04d2b/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 5c696e3..ee9b504 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -158,7 +158,7 @@
<cxf.spring.osgi.version>1.2.1</cxf.spring.osgi.version>
<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.12</cxf.swagger.version>
+ <cxf.swagger.version>1.3.13</cxf.swagger.version>
<cxf.swagger2.version>1.5.4</cxf.swagger2.version>
<cxf.velocity.version>1.7</cxf.velocity.version>
<cxf.woodstox.core.version>4.4.1</cxf.woodstox.core.version>
http://git-wip-us.apache.org/repos/asf/cxf/blob/3ff04d2b/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
new file mode 100644
index 0000000..55054da
--- /dev/null
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/JaxRs2Extension.java
@@ -0,0 +1,151 @@
+/**
+ * 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.Iterator;
+import java.util.List;
+import java.util.Set;
+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.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<Parameter>();
+ }
+
+ List<Parameter> parameters = new ArrayList<Parameter>();
+ 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);
+ }
+ 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<Annotation>();
+ 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) {
+ 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(Type type) {
+ return enforcePrimitive(ModelConverters.getInstance().readAsProperty(type), 0);
+ }
+
+ private Property enforcePrimitive(Property in, 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;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/3ff04d2b/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
new file mode 100644
index 0000000..f1472c2
--- /dev/null
+++ b/rt/rs/description/src/main/java/org/apache/cxf/jaxrs/swagger/MatrixParameter.java
@@ -0,0 +1,28 @@
+/**
+ * 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/3ff04d2b/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension b/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension
new file mode 100644
index 0000000..9803485
--- /dev/null
+++ b/rt/rs/description/src/main/resources/META-INF/services/io.swagger.jaxrs.ext.SwaggerExtension
@@ -0,0 +1 @@
+org.apache.cxf.jaxrs.swagger.JaxRs2Extension
http://git-wip-us.apache.org/repos/asf/cxf/blob/3ff04d2b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
index e9434e1..5c3d6e9 100644
--- a/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
+++ b/rt/rs/description/src/test/java/org/apache/cxf/jaxrs/swagger/SwaggerUtilsTest.java
@@ -57,7 +57,7 @@ public class SwaggerUtilsTest extends Assert {
assertEquals("application/x-www-form-urlencoded", op.getConsumes());
assertEquals("application/json", op.getProduces());
- assertEquals(2, op.getParameters().size());
+ assertEquals(3, op.getParameters().size());
Parameter param1 = op.getParameters().get(0);
assertEquals("userName", param1.getName());
assertEquals(ParameterType.FORM, param1.getType());
@@ -66,5 +66,9 @@ public class SwaggerUtilsTest extends Assert {
assertEquals("password", param2.getName());
assertEquals(ParameterType.FORM, param2.getType());
assertEquals(String.class, param2.getJavaType());
+ Parameter param3 = op.getParameters().get(2);
+ assertEquals("type", param3.getName());
+ assertEquals(ParameterType.MATRIX, param3.getType());
+ assertEquals(String.class, param3.getJavaType());
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/3ff04d2b/rt/rs/description/src/test/resources/swagger20.json
----------------------------------------------------------------------
diff --git a/rt/rs/description/src/test/resources/swagger20.json b/rt/rs/description/src/test/resources/swagger20.json
index 44e7a32..f8f264d 100644
--- a/rt/rs/description/src/test/resources/swagger20.json
+++ b/rt/rs/description/src/test/resources/swagger20.json
@@ -23,7 +23,20 @@
"in": "formData",
"name": "password",
"type": "string"
- }
+ },
+ {
+ "name": "type",
+ "in": "matrix",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "PROPAGATION",
+ "NOTIFICATION",
+ "SCHEDULED",
+ "SYNCHRONIZATION",
+ "PUSH"
+ ]
+ }
]
}
}