You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/03/19 16:03:05 UTC
[1/3] syncope git commit: Upgrading H2
Repository: syncope
Updated Branches:
refs/heads/2_0_X 31ba14ed1 -> fa079531e
refs/heads/master 8787624d0 -> 410972518
Upgrading H2
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/41097251
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/41097251
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/41097251
Branch: refs/heads/master
Commit: 410972518a21761672860f1d2e3e411592006c16
Parents: 8787624
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Mar 19 16:14:14 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Mar 19 16:16:37 2018 +0100
----------------------------------------------------------------------
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/41097251/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0064596..69b179f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -407,7 +407,7 @@ under the License.
<joda.version>2.9.9</joda.version>
- <h2.version>1.4.196</h2.version>
+ <h2.version>1.4.197</h2.version>
<junit.version>5.1.0</junit.version>
[3/3] syncope git commit: Backporting fix to
SwaggerToOpenApiConversionUtils from CXF 3.1.16-SNAPSHOT
Posted by il...@apache.org.
Backporting fix to SwaggerToOpenApiConversionUtils from CXF 3.1.16-SNAPSHOT
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/fa079531
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/fa079531
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/fa079531
Branch: refs/heads/2_0_X
Commit: fa079531e4dc8f40a3ee62479b485394a619613d
Parents: 6ecbc88
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Mar 19 16:14:47 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Mar 19 17:02:57 2018 +0100
----------------------------------------------------------------------
.../SwaggerToOpenApiConversionFilter.java | 100 +++++
.../SwaggerToOpenApiConversionUtils.java | 405 +++++++++++++++++++
.../src/main/resources/restCXFContext.xml | 2 +-
3 files changed, 506 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/fa079531/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionFilter.java
new file mode 100644
index 0000000..c07e5fc
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionFilter.java
@@ -0,0 +1,100 @@
+/*
+ * 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.openapi;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.Objects;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.ext.Provider;
+import javax.ws.rs.ext.WriterInterceptor;
+import javax.ws.rs.ext.WriterInterceptorContext;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.jaxrs.ext.MessageContext;
+import org.apache.cxf.jaxrs.swagger.openapi.OpenApiConfiguration;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
+
+@Provider
+@PreMatching
+public final class SwaggerToOpenApiConversionFilter implements ContainerRequestFilter, WriterInterceptor {
+
+ private static final String SWAGGER_PATH = "swagger.json";
+
+ private static final String OPEN_API_PATH = "openapi.json";
+
+ private static final String OPEN_API_PROPERTY = "openapi";
+
+ private OpenApiConfiguration openApiConfig;
+
+ private String openApiJsonPath = OPEN_API_PATH;
+
+ @Override
+ public void filter(final ContainerRequestContext reqCtx) throws IOException {
+ String path = reqCtx.getUriInfo().getPath();
+ if (path.endsWith(openApiJsonPath)) {
+ reqCtx.setRequestUri(URI.create(SWAGGER_PATH));
+ JAXRSUtils.getCurrentMessage().getExchange().put(OPEN_API_PROPERTY, Boolean.TRUE);
+ }
+
+ }
+
+ public OpenApiConfiguration getOpenApiConfig() {
+ return openApiConfig;
+ }
+
+ public void setOpenApiConfig(final OpenApiConfiguration openApiConfig) {
+ this.openApiConfig = openApiConfig;
+ }
+
+ @Override
+ public void aroundWriteTo(final WriterInterceptorContext context) throws IOException, WebApplicationException {
+ if (isOpenApiRequested()) {
+ OutputStream os = context.getOutputStream();
+ CachedOutputStream cos = new CachedOutputStream();
+ context.setOutputStream(cos);
+ context.proceed();
+ String swaggerJson = IOUtils.readStringFromStream(cos.getInputStream());
+ String openApiJson = SwaggerToOpenApiConversionUtils.getOpenApiFromSwaggerJson(
+ createMessageContext(), swaggerJson, openApiConfig);
+ os.write(StringUtils.toBytesUTF8(openApiJson));
+ os.flush();
+ } else {
+ context.proceed();
+ }
+ }
+
+ private MessageContext createMessageContext() {
+ return JAXRSUtils.createContextValue(
+ JAXRSUtils.getCurrentMessage(), null, MessageContext.class);
+ }
+
+ private boolean isOpenApiRequested() {
+ return Objects.equals(Boolean.TRUE, JAXRSUtils.getCurrentMessage().getExchange().get(OPEN_API_PROPERTY));
+ }
+
+ public void setOpenApiJsonPath(final String openApiJsonPath) {
+ this.openApiJsonPath = openApiJsonPath;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/fa079531/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
new file mode 100644
index 0000000..87f127b
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
@@ -0,0 +1,405 @@
+/*
+ * 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.openapi;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import javax.ws.rs.core.MediaType;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.jaxrs.ext.MessageContext;
+import org.apache.cxf.jaxrs.json.basic.JsonMapObject;
+import org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter;
+import org.apache.cxf.jaxrs.swagger.openapi.OpenApiConfiguration;
+
+public final class SwaggerToOpenApiConversionUtils {
+
+ private static final List<String> SIMPLE_TYPE_RELATED_PROPS =
+ Arrays.asList("format", "minimum", "maximum", "default");
+
+ private SwaggerToOpenApiConversionUtils() {
+ // private constructor for static utility class
+ }
+
+ public static String getOpenApiFromSwaggerJson(
+ final MessageContext ctx,
+ final String json,
+ final OpenApiConfiguration oac) throws IOException {
+
+ JsonMapObjectReaderWriter readerWriter = new JsonMapObjectReaderWriter();
+ JsonMapObject sw2 = readerWriter.fromJsonToJsonObject(json);
+ JsonMapObject sw3 = new JsonMapObject();
+
+ // "openapi"
+ sw3.setProperty("openapi", "3.0.1");
+
+ // "servers"
+ setServersProperty(ctx, sw2, sw3);
+
+ // "info"
+ JsonMapObject infoObject = sw2.getJsonMapProperty("info");
+ if (infoObject != null) {
+ sw3.setProperty("info", infoObject);
+ }
+
+ // "tags"
+ List<Map<String, Object>> tagsObject = sw2.getListMapProperty("tags");
+ if (tagsObject != null) {
+ sw3.setProperty("tags", tagsObject);
+ }
+
+ // paths
+ Map<String, JsonMapObject> requestBodies = oac != null && oac.isCreateRequestBodies()
+ ? new LinkedHashMap<String, JsonMapObject>() : null;
+ setPathsProperty(sw2, sw3, requestBodies);
+
+ // components
+ setComponentsProperty(sw2, sw3, requestBodies);
+
+ // externalDocs
+ Object externalDocsObject = sw2.getProperty("externalDocs");
+ if (externalDocsObject != null) {
+ sw3.setProperty("externalDocs", externalDocsObject);
+ }
+
+ return readerWriter.toJson(sw3);
+ }
+
+ private static void setComponentsProperty(
+ final JsonMapObject sw2,
+ final JsonMapObject sw3,
+ final Map<String, JsonMapObject> requestBodies) {
+
+ JsonMapObject comps = new JsonMapObject();
+ JsonMapObject requestBodiesObj = new JsonMapObject();
+ if (requestBodies != null) {
+ for (Map.Entry<String, JsonMapObject> entry : requestBodies.entrySet()) {
+ requestBodiesObj.setProperty(entry.getKey(), entry.getValue());
+ }
+ }
+ comps.setProperty("requestBodies", requestBodiesObj);
+
+ JsonMapObject s2Defs = sw2.getJsonMapProperty("definitions");
+ if (s2Defs != null) {
+ for (Object schema : s2Defs.asMap().values()) {
+ if (schema instanceof Map) {
+ @SuppressWarnings("unchecked")
+ Map<String, Object> schemaMap = (Map<String, Object>) schema;
+ Object discriminator = schemaMap.get("discriminator");
+ if (discriminator != null) {
+ schemaMap.put("discriminator", new JsonMapObject(
+ Collections.singletonMap("propertyName", discriminator)));
+ }
+ }
+ }
+
+ comps.setProperty("schemas", s2Defs);
+ }
+ JsonMapObject s2SecurityDefs = sw2.getJsonMapProperty("securityDefinitions");
+ if (s2SecurityDefs != null) {
+ comps.setProperty("securitySchemes", s2SecurityDefs);
+
+ for (String property : s2SecurityDefs.asMap().keySet()) {
+ JsonMapObject securityScheme = s2SecurityDefs.getJsonMapProperty(property);
+ if ("basic".equals(securityScheme.getStringProperty("type"))) {
+ securityScheme.setProperty("type", "http");
+ securityScheme.setProperty("scheme", "basic");
+ }
+ }
+ }
+
+ sw3.setProperty("components", comps);
+ }
+
+ private static void setPathsProperty(
+ final JsonMapObject sw2,
+ final JsonMapObject sw3,
+ final Map<String, JsonMapObject> requestBodies) {
+
+ JsonMapObject sw2Paths = sw2.getJsonMapProperty("paths");
+ for (Map.Entry<String, Object> sw2PathEntries : sw2Paths.asMap().entrySet()) {
+ Map<String, Object> map1 = CastUtils.cast((Map<?, ?>) sw2PathEntries.getValue());
+ JsonMapObject sw2PathVerbs = new JsonMapObject(map1);
+ for (Map.Entry<String, Object> sw2PathVerbEntries : sw2PathVerbs.asMap().entrySet()) {
+ Map<String, Object> map2 = CastUtils.cast((Map<?, ?>) sw2PathVerbEntries.getValue());
+ JsonMapObject sw2PathVerbProps = new JsonMapObject(map2);
+
+ prepareRequestBody(sw2PathVerbProps, requestBodies);
+ prepareResponses(sw2PathVerbProps);
+
+ }
+ }
+
+ sw3.setProperty("paths", sw2Paths);
+ }
+
+ private static void prepareResponses(final JsonMapObject sw2PathVerbProps) {
+ List<String> sw2PathVerbProduces = CastUtils.cast((List<?>) sw2PathVerbProps.removeProperty("produces"));
+
+ JsonMapObject sw2PathVerbResps = sw2PathVerbProps.getJsonMapProperty("responses");
+ if (sw2PathVerbResps != null) {
+ JsonMapObject sw3PathVerbResps = new JsonMapObject();
+
+ for (Map.Entry<String, Object> entry : sw2PathVerbResps.asMap().entrySet()) {
+ JsonMapObject v2Resp = new JsonMapObject(sw2PathVerbResps.getMapProperty(entry.getKey()));
+ JsonMapObject v3Resp = new JsonMapObject();
+ String description = v2Resp.getStringProperty("description");
+ if (description != null) {
+ v3Resp.setProperty("description", description);
+ }
+ JsonMapObject schema = v2Resp.getJsonMapProperty("schema");
+ if (schema != null) {
+ JsonMapObject content = prepareContentFromSchema(schema, sw2PathVerbProduces, false);
+ if (content != null) {
+ v3Resp.setProperty("content", content);
+ }
+
+ }
+ JsonMapObject headers = v2Resp.getJsonMapProperty("headers");
+ if (headers != null) {
+ for (Map.Entry<String, Object> header : headers.asMap().entrySet()) {
+ JsonMapObject headerObj = new JsonMapObject(headers.getMapProperty(header.getKey()));
+ String type = headerObj.getStringProperty("type");
+ if (type != null) {
+ JsonMapObject headerSchema = new JsonMapObject();
+ headerSchema.setProperty("type", type);
+ headerObj.removeProperty("type");
+ headerObj.setProperty("schema", headerSchema);
+ }
+ }
+ v3Resp.setProperty("headers", headers);
+ }
+ sw3PathVerbResps.setProperty(entry.getKey(), v3Resp);
+ }
+
+ sw2PathVerbProps.setProperty("responses", sw3PathVerbResps);
+ }
+ }
+
+ private static void prepareRequestBody(
+ final JsonMapObject sw2PathVerbProps,
+ final Map<String, JsonMapObject> requestBodies) {
+
+ List<String> sw2PathVerbConsumes = CastUtils.cast((List<?>) sw2PathVerbProps.removeProperty("consumes"));
+
+ JsonMapObject sw3RequestBody = null;
+ List<JsonMapObject> sw3formBody = null;
+ List<Map<String, Object>> sw2PathVerbParamsList = sw2PathVerbProps.getListMapProperty("parameters");
+ if (sw2PathVerbParamsList != null) {
+ for (Iterator<Map<String, Object>> it = sw2PathVerbParamsList.iterator(); it.hasNext();) {
+ JsonMapObject sw2PathVerbParamMap = new JsonMapObject(it.next());
+ sw2PathVerbParamMap.removeProperty("pattern");
+ if ("body".equals(sw2PathVerbParamMap.getStringProperty("in"))) {
+ it.remove();
+
+ sw3RequestBody = new JsonMapObject();
+ String description = sw2PathVerbParamMap.getStringProperty("description");
+ if (description != null) {
+ sw3RequestBody.setProperty("description", description);
+ }
+ Boolean required = sw2PathVerbParamMap.getBooleanProperty("required");
+ if (required != null) {
+ sw3RequestBody.setProperty("required", required);
+ }
+ JsonMapObject schema = sw2PathVerbParamMap.getJsonMapProperty("schema");
+ if (schema != null) {
+ JsonMapObject content = prepareContentFromSchema(schema, sw2PathVerbConsumes,
+ requestBodies != null);
+ if (content != null) {
+ sw3RequestBody.setProperty("content", content);
+ }
+
+ }
+ } else if ("formData".equals(sw2PathVerbParamMap.getStringProperty("in"))) {
+ it.remove();
+ if (sw3formBody == null) {
+ sw3formBody = new LinkedList<>();
+ sw3RequestBody = new JsonMapObject();
+ }
+ sw2PathVerbParamMap.removeProperty("in");
+ sw2PathVerbParamMap.removeProperty("required");
+ sw3formBody.add(sw2PathVerbParamMap);
+ } else if ("array".equals(sw2PathVerbParamMap.getStringProperty("type"))) {
+ sw2PathVerbParamMap.removeProperty("type");
+ sw2PathVerbParamMap.removeProperty("collectionFormat");
+ sw2PathVerbParamMap.setProperty("explode", true);
+ JsonMapObject items = sw2PathVerbParamMap.getJsonMapProperty("items");
+ sw2PathVerbParamMap.removeProperty("items");
+ JsonMapObject schema = new JsonMapObject();
+ schema.setProperty("type", "array");
+ schema.setProperty("items", items);
+ sw2PathVerbParamMap.setProperty("schema", schema);
+ } else {
+ if ("matrix".equals(sw2PathVerbParamMap.getStringProperty("in"))) {
+ sw2PathVerbParamMap.removeProperty("in");
+ sw2PathVerbParamMap.setProperty("in", "path");
+ sw2PathVerbParamMap.setProperty("style", "matrix");
+ }
+
+ String type = (String) sw2PathVerbParamMap.removeProperty("type");
+ Object enumK = sw2PathVerbParamMap.removeProperty("enum");
+ if (type != null) {
+ JsonMapObject schema = new JsonMapObject();
+ schema.setProperty("type", type);
+ if (enumK != null) {
+ schema.setProperty("enum", enumK);
+ }
+ for (String prop : SIMPLE_TYPE_RELATED_PROPS) {
+ Object value = sw2PathVerbParamMap.removeProperty(prop);
+ if (value != null) {
+ schema.setProperty(prop, value);
+ }
+ }
+ if ("password".equals(sw2PathVerbParamMap.getProperty("name"))) {
+ schema.setProperty("format", "password");
+ }
+ sw2PathVerbParamMap.setProperty("schema", schema);
+ }
+ }
+ }
+ }
+ if (sw2PathVerbParamsList != null && sw2PathVerbParamsList.isEmpty()) {
+ sw2PathVerbProps.removeProperty("parameters");
+ }
+ if (sw3RequestBody != null && sw3formBody != null) {
+ sw3RequestBody.setProperty("content", prepareFormContent(sw3formBody, sw2PathVerbConsumes));
+ }
+ if (sw3RequestBody != null) {
+ if (requestBodies == null || sw3formBody != null) {
+ sw2PathVerbProps.setProperty("requestBody", sw3RequestBody);
+ } else {
+ JsonMapObject content = sw3RequestBody.getJsonMapProperty("content");
+ if (content != null) {
+ String requestBodyName = (String) content.removeProperty("requestBodyName");
+ if (requestBodyName != null) {
+ requestBodies.put(requestBodyName, sw3RequestBody);
+ String ref = "#/components/requestBodies/" + requestBodyName;
+ sw2PathVerbProps.setProperty("requestBody",
+ Collections.singletonMap("$ref", ref));
+ }
+ }
+ }
+ }
+ }
+
+ private static JsonMapObject prepareFormContent(
+ final List<JsonMapObject> formList, final List<String> mediaTypes) {
+
+ String mediaType = StringUtils.isEmpty(mediaTypes)
+ ? MediaType.APPLICATION_FORM_URLENCODED : mediaTypes.get(0);
+ JsonMapObject content = new JsonMapObject();
+ JsonMapObject formType = new JsonMapObject();
+ JsonMapObject schema = new JsonMapObject();
+ schema.setProperty("type", "object");
+ JsonMapObject props = new JsonMapObject();
+ for (JsonMapObject prop : formList) {
+ String name = (String) prop.removeProperty("name");
+ props.setProperty(name, prop);
+ if ("file".equals(prop.getProperty("type"))) {
+ prop.setProperty("type", "string");
+ if (!prop.containsProperty("format")) {
+ prop.setProperty("format", "binary");
+ }
+ }
+ }
+ schema.setProperty("properties", props);
+ formType.setProperty("schema", schema);
+ content.setProperty(mediaType, formType);
+ return content;
+ }
+
+ private static JsonMapObject prepareContentFromSchema(
+ final JsonMapObject schema,
+ final List<String> mediaTypes,
+ final boolean storeModelName) {
+
+ String type = schema.getStringProperty("type");
+ String modelName = null;
+ boolean isArray = false;
+ if (!"object".equals(type) || !"string".equals(type)) {
+ String ref;
+ JsonMapObject items = null;
+ if ("array".equals(type)) {
+ isArray = true;
+ items = schema.getJsonMapProperty("items");
+ ref = (String) items.getProperty("$ref");
+ } else {
+ ref = schema.getStringProperty("$ref");
+ }
+ if (ref != null) {
+ int index = ref.lastIndexOf("/");
+ modelName = ref.substring(index + 1);
+ if (items == null) {
+ schema.setProperty("$ref", "#/components/schemas/" + modelName);
+ } else {
+ items.setProperty("$ref", "#/components/schemas/" + modelName);
+ }
+ }
+ }
+
+ JsonMapObject content = new JsonMapObject();
+
+ for (String mediaType : mediaTypes == null ? Arrays.asList(MediaType.APPLICATION_JSON) : mediaTypes) {
+ content.setProperty(mediaType, Collections.singletonMap("schema", schema));
+ }
+
+ if (modelName != null && storeModelName) {
+ content.setProperty("requestBodyName", isArray ? modelName + "Array" : modelName);
+ }
+ // pass the model name via the content object
+ return content;
+ }
+
+ private static void setServersProperty(
+ final MessageContext ctx,
+ final JsonMapObject sw2,
+ final JsonMapObject sw3) {
+
+ URI requestURI = ctx == null ? null : URI.create(ctx.getHttpServletRequest().getRequestURL().toString());
+
+ List<String> sw2Schemes = sw2.getListStringProperty("schemes");
+ String sw2Scheme;
+ if (StringUtils.isEmpty(sw2Schemes)) {
+ if (requestURI == null) {
+ sw2Scheme = "https";
+ } else {
+ sw2Scheme = requestURI.getScheme();
+ }
+ } else {
+ sw2Scheme = sw2Schemes.get(0);
+ }
+
+ String sw2Host = sw2.getStringProperty("host");
+ if (sw2Host == null && requestURI != null) {
+ sw2Host = requestURI.getHost() + ":" + requestURI.getPort();
+ }
+
+ String sw2BasePath = sw2.getStringProperty("basePath");
+
+ String sw3ServerUrl = sw2Scheme + "://" + sw2Host + sw2BasePath;
+ sw3.setProperty("servers", Arrays.asList(Collections.singletonMap("url", sw3ServerUrl)));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/fa079531/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 a31ec25..667c876 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -125,7 +125,7 @@ under the License.
</map>
</property>
</bean>
- <bean id="sw2OpenAPI" class="org.apache.cxf.jaxrs.swagger.openapi.SwaggerToOpenApiConversionFilter"/>
+ <bean id="sw2OpenAPI" class="org.apache.syncope.core.rest.cxf.openapi.SwaggerToOpenApiConversionFilter"/>
<jaxrs:server id="restContainer" address="/"
basePackages="org.apache.syncope.common.rest.api.service, org.apache.syncope.core.rest.cxf.service"
[2/3] syncope git commit: Upgrading H2
Posted by il...@apache.org.
Upgrading H2
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/6ecbc88f
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/6ecbc88f
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/6ecbc88f
Branch: refs/heads/2_0_X
Commit: 6ecbc88f84a0c96764aa98267026794742b2990e
Parents: 31ba14e
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Mar 19 16:14:14 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Mar 19 17:02:57 2018 +0100
----------------------------------------------------------------------
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ecbc88f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 954032d..07b199e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -411,7 +411,7 @@ under the License.
<joda.version>2.9.9</joda.version>
- <h2.version>1.4.196</h2.version>
+ <h2.version>1.4.197</h2.version>
<junit.version>4.12</junit.version>