Repository: syncope Updated Branches: refs/heads/2_0_X 3927f2c96 -> c81bc6ca1 refs/heads/master 2b7cfed68 -> 7bd5b1817
Upgrade to CXF 3.1.8 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/c81bc6ca Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/c81bc6ca Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/c81bc6ca Branch: refs/heads/2_0_X Commit: c81bc6ca10cfa35efcf93abc9a07d78a73703952 Parents: 3927f2c Author: Francesco Chicchiriccò <[email protected]> Authored: Thu Aug 25 15:57:02 2016 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Wed Oct 19 14:09:55 2016 +0200 ---------------------------------------------------------------------- .../syncope/common/lib/SyncopeConstants.java | 4 +- .../syncope/common/lib/info/package-info.java | 6 +- .../syncope/common/lib/jaxb/package-info.java | 6 +- .../apache/syncope/common/lib/package-info.java | 2 +- .../syncope/common/lib/patch/package-info.java | 6 +- .../syncope/common/lib/policy/package-info.java | 6 +- .../syncope/common/lib/report/package-info.java | 6 +- .../syncope/common/lib/search/package-info.java | 6 +- .../syncope/common/lib/to/package-info.java | 6 +- .../syncope/common/lib/types/package-info.java | 6 +- common/rest-api/pom.xml | 3 +- core/rest-cxf/pom.xml | 8 +- .../rest/cxf/ExtendedSwagger2Serializers.java | 194 +++---------------- .../syncope/core/rest/cxf/Swagger2Feature.java | 175 ----------------- .../core/rest/cxf/Swagger2Serializers.java | 36 ---- .../main/resources/META-INF/web-fragment.xml | 2 +- .../src/main/resources/restCXFContext.xml | 7 +- .../src/main/resources/jboss/restCXFContext.xml | 22 +-- pom.xml | 2 +- 19 files changed, 96 insertions(+), 407 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java index 81f93a0..8d80f6d 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java @@ -25,7 +25,9 @@ import java.util.regex.Pattern; public final class SyncopeConstants { - public static final String NAMESPACE = "http://syncope.apache.org/2.0"; + public static final String NS_PREFIX = "syncope2"; + + public static final String NS = "http://syncope.apache.org/2.0"; public static final String MASTER_DOMAIN = "Master"; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java index fccc6f4..60ef65d 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.info; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java index a04b95d..dd6b260 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.jaxb; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java index 8eac5d5..43df8b4 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema(namespace = SyncopeConstants.NS) package org.apache.syncope.common.lib; import javax.xml.bind.annotation.XmlSchema; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java index 426ac6d..2aeca44 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.patch; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java index bb26628..67952ac 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.policy; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java index bc452c1..9d6a5da 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.report; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java index ff6b5e7..5b06db0 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.search; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java index b02ed8f..7467695 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.to; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java index 80cb87f..6d6cd5c 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.types; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/common/rest-api/pom.xml ---------------------------------------------------------------------- diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml index de49287..d6d25ac 100644 --- a/common/rest-api/pom.xml +++ b/common/rest-api/pom.xml @@ -138,7 +138,8 @@ under the License. </goals> <configuration> <applicationTitle>Apache Syncope ${project.version}</applicationTitle> - <namespacePrefix>syncope</namespacePrefix> + <namespacePrefix>syncope2</namespacePrefix> + <incrementNamespacePrefix>false</incrementNamespacePrefix> <linkAnyMediaTypeToXmlSchema>true</linkAnyMediaTypeToXmlSchema> <useJaxbContextForQnames>true</useJaxbContextForQnames> <addResourceAndMethodIds>true</addResourceAndMethodIds> http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/core/rest-cxf/pom.xml ---------------------------------------------------------------------- diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml index 218a9b6..8af667b 100644 --- a/core/rest-cxf/pom.xml +++ b/core/rest-cxf/pom.xml @@ -241,7 +241,7 @@ under the License. </parameter> <parameter> <name>schema-prefix</name> - <value>syncope1</value> + <value>syncope2</value> </parameter> </parameters> <outputProperties> @@ -253,7 +253,7 @@ under the License. <fileMappers> <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.RegExpFileMapper"> <pattern>^.*$</pattern> - <replacement>schema_1_syncope1.html</replacement> + <replacement>schema_1_syncope2.html</replacement> </fileMapper> </fileMappers> </transformationSet> @@ -276,8 +276,8 @@ under the License. <replace file="${project.build.directory}/generated/wadl/index.html" token="../webjars/jquery-ui/$/jquery-ui.min.js" value="http://code.jquery.com/ui/${jquery-ui.version}/jquery-ui.min.js" /> <replace file="${project.build.directory}/generated/wadl/index.html" token="../webjars/jquery-ui-themes/$/smoothness/jquery-ui.min.css" value="https://code.jquery.com/ui/${jquery-ui.version}/themes/smoothness/jquery-ui.css" /> - <replace file="${project.build.directory}/generated/wadl/schema_1_syncope1.html" token="../webjars/highlightjs/$/highlight.min.js" value="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/${highlightjs.version}/highlight.min.js" /> - <replace file="${project.build.directory}/generated/wadl/schema_1_syncope1.html" token="../webjars/highlightjs/$/styles/default.min.css" value="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/${highlightjs.version}/styles/default.min.css" /> + <replace file="${project.build.directory}/generated/wadl/schema_1_syncope2.html" token="../webjars/highlightjs/$/highlight.min.js" value="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/${highlightjs.version}/highlight.min.js" /> + <replace file="${project.build.directory}/generated/wadl/schema_1_syncope2.html" token="../webjars/highlightjs/$/styles/default.min.css" value="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/${highlightjs.version}/styles/default.min.css" /> <copy todir="${site.deploymentBaseDir}/rest/2.0"> <fileset dir="${project.build.directory}/generated/wadl" /> http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java index 45b479e..6d2b4cd 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java @@ -18,192 +18,56 @@ */ package org.apache.syncope.core.rest.cxf; -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; import io.swagger.models.parameters.HeaderParameter; -import java.io.IOException; -import java.io.OutputStream; -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; +import io.swagger.models.parameters.Parameter; +import java.net.URL; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -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.collections4.ComparatorUtils; -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 org.apache.cxf.jaxrs.swagger.DefaultSwagger2Serializers; +import org.apache.cxf.jaxrs.swagger.Swagger2Serializers; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.rest.api.RESTHeaders; import org.apache.syncope.core.persistence.api.DomainsHolder; import org.apache.syncope.core.spring.ApplicationContextProvider; -public class ExtendedSwagger2Serializers extends SwaggerSerializers implements Swagger2Serializers { +public class ExtendedSwagger2Serializers extends DefaultSwagger2Serializers implements Swagger2Serializers { - protected boolean dynamicBasePath; + private List<String> domains; - protected boolean replaceTags; + public ExtendedSwagger2Serializers() { + super(); - protected DocumentationProvider javadocProvider; - - protected List<ClassResourceInfo> cris; - - @Override - public void setDynamicBasePath(final boolean dynamicBasePath) { - this.dynamicBasePath = dynamicBasePath; - } - - @Override - public void setReplaceTags(final boolean replaceTags) { - this.replaceTags = replaceTags; - } - - @Override - public void setJavadocProvider(final DocumentationProvider javadocProvider) { - this.javadocProvider = javadocProvider; - } - - @Override - public void setClassResourceInfos(final List<ClassResourceInfo> classResourceInfos) { - this.cris = classResourceInfos; + URL[] javaDocURLs = JavaDocUtils.getJavaDocURLs(); + if (javaDocURLs != null) { + super.setJavaDocURLs(javaDocURLs); + } } @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) { - List<String> domains = new ArrayList<>( + protected void addParameters(final List<Parameter> parameters) { + if (domains == null) { + domains = new ArrayList<>( ApplicationContextProvider.getApplicationContext(). getBean(DomainsHolder.class).getDomains().keySet()); - - 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().replaceAll("/", "_")); - 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)); - - boolean domainHeaderParameterFound = false; - for (int i = 0; i < subentry.getValue().getParameters().size(); i++) { - subentry.getValue().getParameters().get(i). - setDescription(javadocProvider.getMethodParameterDoc(ori, i)); - - if (subentry.getValue().getParameters().get(i) instanceof HeaderParameter - && RESTHeaders.DOMAIN.equals( - subentry.getValue().getParameters().get(i).getName())) { - - domainHeaderParameterFound = true; - } - } - if (!domainHeaderParameterFound) { - HeaderParameter domainHeaderParameter = new HeaderParameter(); - domainHeaderParameter.setName(RESTHeaders.DOMAIN); - domainHeaderParameter.setRequired(true); - domainHeaderParameter.setType("string"); - domainHeaderParameter.setEnum(domains); - domainHeaderParameter.setDefault(SyncopeConstants.MASTER_DOMAIN); - - subentry.getValue().getParameters().add(domainHeaderParameter); - } - - if (subentry.getValue().getResponses() != null - && !subentry.getValue().getResponses().isEmpty()) { - - subentry.getValue().getResponses().entrySet().iterator().next().getValue(). - setDescription(javadocProvider.getMethodResponseDoc(ori)); - } - } - } - } } - if (replaceTags && data.getTags() != null) { - Collections.sort(data.getTags(), new Comparator<Tag>() { - - @Override - public int compare(final Tag tag1, final Tag tag2) { - return ComparatorUtils.<String>naturalComparator().compare(tag1.getName(), tag2.getName()); - } - }); - } - - super.writeTo(data, type, genericType, annotations, mediaType, headers, out); - } - protected String getNormalizedPath(final String classResourcePath, final String operationResourcePath) { - StringBuilder normalizedPath = new StringBuilder(); + boolean domainHeaderParameterFound = false; + for (int i = 0; i < parameters.size(); i++) { + if (parameters.get(i) instanceof HeaderParameter + && RESTHeaders.DOMAIN.equals(parameters.get(i).getName())) { - String[] segments = org.apache.commons.lang3.StringUtils.split(classResourcePath + operationResourcePath, - "/"); - for (String segment : segments) { - if (!org.apache.commons.lang3.StringUtils.isEmpty(segment)) { - normalizedPath.append("/").append(segment); + domainHeaderParameterFound = true; } } - // Adapt to Swagger's path expression - if (normalizedPath.toString().endsWith(":.*}")) { - normalizedPath.setLength(normalizedPath.length() - 4); - normalizedPath.append('}'); + if (!domainHeaderParameterFound) { + HeaderParameter domainHeaderParameter = new HeaderParameter(); + domainHeaderParameter.setName(RESTHeaders.DOMAIN); + domainHeaderParameter.setRequired(true); + domainHeaderParameter.setType("string"); + domainHeaderParameter.setEnum(domains); + domainHeaderParameter.setDefault(SyncopeConstants.MASTER_DOMAIN); + + parameters.add(domainHeaderParameter); } - return StringUtils.EMPTY.equals(normalizedPath.toString()) ? "/" : normalizedPath.toString(); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java deleted file mode 100644 index e01d7e2..0000000 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java +++ /dev/null @@ -1,175 +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.syncope.core.rest.cxf; - -import io.swagger.jaxrs.config.BeanConfig; -import io.swagger.jaxrs.config.DefaultReaderConfig; -import io.swagger.jaxrs.config.ReaderConfig; -import io.swagger.jaxrs.listing.ApiListingResource; -import java.io.IOException; -import java.net.URI; -import java.net.URL; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.regex.Pattern; -import javax.servlet.ServletContext; -import javax.ws.rs.HttpMethod; -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.UriInfo; -import org.apache.commons.lang3.StringUtils; -import org.apache.cxf.Bus; -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.provider.ServerProviderFactory; -import org.apache.cxf.jaxrs.utils.InjectionUtils; - -/** - * Automatically loads available javadocs from class loader (when {@link java.net.URLClassLoader}). - */ -public class Swagger2Feature extends org.apache.cxf.jaxrs.swagger.Swagger2Feature { - - @Override - public void initialize(final Server server, final Bus bus) { - URL[] javaDocURLs = JavaDocUtils.getJavaDocURLs(); - if (javaDocURLs != null) { - super.setJavaDocURLs(javaDocURLs); - } - - super.initialize(server, bus); - } - - // ------- Remove the code below this point when CXF 3.1.8 is available ----- - private Swagger2Serializers swagger2Serializers; - - public void setSwagger2Serializers(final Swagger2Serializers swagger2Serializers) { - this.swagger2Serializers = swagger2Serializers; - } - - @Override - protected void addSwaggerResource(final Server server, final Bus bus) { - List<Object> swaggerResources = new LinkedList<>(); - ApiListingResource apiListingResource = new ApiListingResource(); - swaggerResources.add(apiListingResource); - if (SWAGGER_UI_RESOURCE_ROOT != null) { - swaggerResources.add(new SwaggerUIService()); - bus.setProperty("swagger.service.ui.available", "true"); - } - JAXRSServiceFactoryBean sfb = - (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName()); - sfb.setResourceClassesFromBeans(swaggerResources); - - List<ClassResourceInfo> cris = sfb.getClassResourceInfo(); - - List<Object> providers = new ArrayList<>(); - for (ClassResourceInfo cri : cris) { - if (ApiListingResource.class == cri.getResourceClass()) { - InjectionUtils.injectContextProxies(cri, apiListingResource); - } - } - if (SWAGGER_UI_RESOURCE_ROOT != null) { - providers.add(new SwaggerUIFilter()); - } - - if (swagger2Serializers != null) { - swagger2Serializers.setJavadocProvider(javadocProvider); - swagger2Serializers.setClassResourceInfos(cris); - providers.add(swagger2Serializers); - } - - providers.add(new ReaderConfigFilter()); - ((ServerProviderFactory) server.getEndpoint().get( - ServerProviderFactory.class.getName())).setUserProviders(providers); - - BeanConfig beanConfig = new BeanConfig(); - beanConfig.setResourcePackage(getResourcePackage()); - beanConfig.setVersion(getVersion()); - String basePath = getBasePath(); - beanConfig.setBasePath(basePath); - 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()); - } - - protected class ReaderConfigFilter implements ContainerRequestFilter { - - @Context - protected MessageContext mc; - - @Override - public void filter(final 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(final 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); - } - } - - @PreMatching - protected static class SwaggerUIFilter implements ContainerRequestFilter { - - private static final Pattern PATTERN = - Pattern.compile(".*[.]js|/css/.*|/images/.*|/lib/.*|.*ico|/fonts/.*"); - - @Override - public void filter(final ContainerRequestContext rc) throws IOException { - if (HttpMethod.GET.equals(rc.getRequest().getMethod())) { - UriInfo ui = rc.getUriInfo(); - String path = "/" + ui.getPath(); - if (PATTERN.matcher(path).matches()) { - rc.setRequestUri(URI.create("api-docs" + path)); - } - } - } - } - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java deleted file mode 100644 index 39abf7b..0000000 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java +++ /dev/null @@ -1,36 +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.syncope.core.rest.cxf; - -import io.swagger.models.Swagger; -import java.util.List; -import javax.ws.rs.ext.MessageBodyWriter; -import org.apache.cxf.jaxrs.model.ClassResourceInfo; -import org.apache.cxf.jaxrs.model.doc.DocumentationProvider; - -public interface Swagger2Serializers extends MessageBodyWriter<Swagger> { - - void setDynamicBasePath(boolean dynamicBasePath); - - void setReplaceTags(boolean replaceTags); - - void setJavadocProvider(DocumentationProvider javadocProvider); - - void setClassResourceInfos(List<ClassResourceInfo> classResourceInfos); -} http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml b/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml index 405139a..9e75b2d 100644 --- a/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml +++ b/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml @@ -45,7 +45,7 @@ under the License. <servlet-mapping> <servlet-name>WADLServlet</servlet-name> <url-pattern>/index.html</url-pattern> - <url-pattern>/schema_1_syncope1.html</url-pattern> + <url-pattern>/schema_1_syncope2.html</url-pattern> <url-pattern>/syncope.wadl</url-pattern> </servlet-mapping> http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/core/rest-cxf/src/main/resources/restCXFContext.xml ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml index 4f4d12b..5daa96a 100644 --- a/core/rest-cxf/src/main/resources/restCXFContext.xml +++ b/core/rest-cxf/src/main/resources/restCXFContext.xml @@ -40,7 +40,7 @@ under the License. <property name="namespacePrefixes"> <map> <entry key="http://syncope.apache.org/2.0"> - <value>syncope</value> + <value>syncope2</value> </entry> </map> </property> @@ -91,7 +91,8 @@ under the License. <bean id="wadlGenerator" class="org.apache.syncope.core.rest.cxf.WadlGenerator"> <property name="applicationTitle" value="Apache Syncope ${syncope.version}"/> - <property name="namespacePrefix" value="syncope"/> + <property name="namespacePrefix" value="syncope2"/> + <property name="incrementNamespacePrefix" value="false"/> <property name="linkAnyMediaTypeToXmlSchema" value="true"/> <property name="useJaxbContextForQnames" value="true"/> <property name="addResourceAndMethodIds" value="true"/> @@ -103,7 +104,7 @@ under the License. <property name="dynamicBasePath" value="true"/> <property name="replaceTags" value="true"/> </bean> - <bean id="swagger2Feature" class="org.apache.syncope.core.rest.cxf.Swagger2Feature"> + <bean id="swagger2Feature" class="org.apache.cxf.jaxrs.swagger.Swagger2Feature"> <property name="title" value="Apache Syncope"/> <property name="version" value="${syncope.version}"/> <property name="description" value="Apache Syncope ${syncope.version}"/> http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/fit/core-reference/src/main/resources/jboss/restCXFContext.xml ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml index 1b709b1..7a9bed5 100644 --- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml +++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml @@ -40,7 +40,7 @@ under the License. <property name="namespacePrefixes"> <map> <entry key="http://syncope.apache.org/2.0"> - <value>syncope</value> + <value>syncope2</value> </entry> </map> </property> @@ -91,7 +91,8 @@ under the License. <bean id="wadlGenerator" class="org.apache.syncope.core.rest.cxf.WadlGenerator"> <property name="applicationTitle" value="Apache Syncope ${syncope.version}"/> - <property name="namespacePrefix" value="syncope"/> + <property name="namespacePrefix" value="syncope2"/> + <property name="incrementNamespacePrefix" value="false"/> <property name="linkAnyMediaTypeToXmlSchema" value="true"/> <property name="useJaxbContextForQnames" value="true"/> <property name="addResourceAndMethodIds" value="true"/> @@ -108,24 +109,23 @@ under the License. <bean id="extendedSwagger2Serializers" class="org.apache.syncope.core.rest.cxf.ExtendedSwagger2Serializers"> <property name="dynamicBasePath" value="true"/> <property name="replaceTags" value="true"/> + <property name="javaDocPaths"> + <list> + <value>/WEB-INF/lib/syncope-common-rest-api-${syncope.version}-javadoc.jar</value> + <value>/WEB-INF/lib/syncope-ext-camel-rest-api-${syncope.version}-javadoc.jar</value> + </list> + </property> </bean> - <bean id="swagger2Feature" class="org.apache.syncope.core.rest.cxf.Swagger2Feature"> + <bean id="swagger2Feature" class="org.apache.cxf.jaxrs.swagger.Swagger2Feature"> <property name="title" value="Apache Syncope"/> <property name="version" value="${syncope.version}"/> <property name="description" value="Apache Syncope ${syncope.version}"/> - <property name="contact" value="[email protected]"/> + <property name="contact" value="[email protected]"/> <property name="resourcePackage" value="org.apache.syncope.common.rest.api.service"/> <property name="scanAllResources" value="true"/> <property name="activateOnlyIfJaxrsSupported" value="true"/> - <property name="javaDocPaths"> - <list> - <value>/WEB-INF/lib/syncope-common-rest-api-${syncope.version}-javadoc.jar</value> - <value>/WEB-INF/lib/syncope-ext-camel-rest-api-${syncope.version}-javadoc.jar</value> - </list> - </property> - <property name="swagger2Serializers" ref="extendedSwagger2Serializers"/> </bean> http://git-wip-us.apache.org/repos/asf/syncope/blob/c81bc6ca/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index c27550c..4b611f9 100644 --- a/pom.xml +++ b/pom.xml @@ -356,7 +356,7 @@ under the License. <connid.ldap.version>1.5.1</connid.ldap.version> <connid.ad.version>1.3.2</connid.ad.version> - <cxf.version>3.1.7</cxf.version> + <cxf.version>3.1.8</cxf.version> <camel.version>2.17.3</camel.version>
