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/10/01 15:04:42 UTC

[1/6] syncope git commit: [SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value

Repository: syncope
Updated Branches:
  refs/heads/2_0_X 3285cc036 -> 1b2c2050a
  refs/heads/2_1_X 88891b155 -> 54e528b89
  refs/heads/master c2cc8c977 -> da9186869


[SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value


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

Branch: refs/heads/2_0_X
Commit: 1b2c2050a0d96bc9d56105c9dd16fb412c2a673d
Parents: 62faf1f
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 17:01:49 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:01:59 2018 +0200

----------------------------------------------------------------------
 .../syncope/core/rest/cxf/AddETagFilter.java    |  2 +-
 .../core/rest/cxf/CheckDomainFilter.java        | 81 ++++++++++++++++++++
 .../src/main/resources/restCXFContext.xml       |  2 +
 .../core/spring/security/AuthContextUtils.java  | 15 ++--
 .../src/main/resources/jboss/restCXFContext.xml |  2 +
 .../syncope/fit/core/MultitenancyITCase.java    | 17 ++++
 6 files changed, 110 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index dc6f0e6..145bea2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 
 /**
- * Adds the <tt>ETag</tt> header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
+ * Adds the {@code ETag} header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
  * The actual ETag value is computed on the basis of last change date (or creation date if not available).
  */
 @Provider

http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
new file mode 100644
index 0000000..f2aabad
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
@@ -0,0 +1,81 @@
+/*
+ * 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 java.io.IOException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ErrorTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.core.persistence.api.dao.DomainDAO;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Checks that requested Domain exists.
+ */
+@Provider
+@PreMatching
+public class CheckDomainFilter implements ContainerRequestFilter {
+
+    @Autowired
+    private DomainDAO domainDAO;
+
+    @Override
+    public void filter(final ContainerRequestContext reqContext) throws IOException {
+        final String domain = reqContext.getHeaderString(RESTHeaders.DOMAIN);
+        if (domain != null && !SyncopeConstants.MASTER_DOMAIN.equals(domain)) {
+            AuthContextUtils.execWithAuthContext(
+                    SyncopeConstants.MASTER_DOMAIN, new AuthContextUtils.Executable<Void>() {
+
+                @Override
+                public Void exec() {
+                    if (domainDAO.find(domain) == null) {
+                        String message = "Domain '" + domain + "' not available";
+
+                        ErrorTO error = new ErrorTO();
+                        error.setStatus(Response.Status.NOT_FOUND.getStatusCode());
+                        error.setType(ClientExceptionType.NotFound);
+                        error.getElements().add(message);
+
+                        reqContext.abortWith(Response.status(Response.Status.NOT_FOUND).
+                                entity(error).
+                                header(HttpHeaders.CONTENT_TYPE,
+                                        reqContext.getAcceptableMediaTypes().isEmpty()
+                                        ? MediaType.APPLICATION_JSON
+                                        : reqContext.getAcceptableMediaTypes().get(0).toString()).
+                                header(RESTHeaders.ERROR_CODE,
+                                        ClientExceptionType.NotFound.name()).
+                                header(RESTHeaders.ERROR_INFO,
+                                        ClientExceptionType.NotFound.getInfoHeaderValue(message)).
+                                build());
+                    }
+                    return null;
+                }
+            });
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/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 ec4b0ff..caa1c88 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -85,6 +85,7 @@ under the License.
   
   <bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
     
+  <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
   <bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
   <bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
   
@@ -152,6 +153,7 @@ under the License.
       <ref bean="yamlProvider"/>
       <ref bean="exceptionMapper"/>
       <ref bean="searchContextProvider"/>
+      <ref bean="checkDomainFilter"/>
       <ref bean="addDomainFilter"/>
       <ref bean="addETagFilter"/>
       <ref bean="wadlGenerator"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index cc0b4fd..b0a1b5b 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -112,7 +112,7 @@ public final class AuthContextUtils {
         return domainKey;
     }
 
-    private static void setFakeAuth(final String domain) {
+    private static Authentication getFakeAuth(final String domain) {
         List<GrantedAuthority> authorities = CollectionUtils.collect(EntitlementsHolder.getInstance().getValues(),
                 new Transformer<String, GrantedAuthority>() {
 
@@ -126,20 +126,19 @@ public final class AuthContextUtils {
                 new User(ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
                         "FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
         auth.setDetails(new SyncopeAuthenticationDetails(domain));
-        SecurityContextHolder.getContext().setAuthentication(auth);
+        return auth;
     }
 
-    public static <T> T execWithAuthContext(final String domainKey, final Executable<T> executable) {
-        SecurityContext ctx = SecurityContextHolder.getContext();
-        setFakeAuth(domainKey);
+    public static <T> T execWithAuthContext(final String domain, final Executable<T> executable) {
+        Authentication original = SecurityContextHolder.getContext().getAuthentication();
+        SecurityContextHolder.getContext().setAuthentication(getFakeAuth(domain));
         try {
             return executable.exec();
         } catch (Throwable t) {
-            LOG.debug("Error during execution with domain {} context", domainKey, t);
+            LOG.debug("Error during execution with domain {} context", domain, t);
             throw t;
         } finally {
-            SecurityContextHolder.clearContext();
-            SecurityContextHolder.setContext(ctx);
+            SecurityContextHolder.getContext().setAuthentication(original);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/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 5480f68..fdefbdf 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -85,6 +85,7 @@ under the License.
   
   <bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
     
+  <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
   <bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
   <bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
   
@@ -166,6 +167,7 @@ under the License.
       <ref bean="yamlProvider"/>
       <ref bean="exceptionMapper"/>
       <ref bean="searchContextProvider"/>
+      <ref bean="checkDomainFilter"/>
       <ref bean="addDomainFilter"/>
       <ref bean="addETagFilter"/>
       <ref bean="wadlGenerator"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index b3f08ee..59405fe 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -21,6 +21,7 @@ package org.apache.syncope.fit.core;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.util.List;
@@ -31,6 +32,7 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ItemTO;
@@ -45,6 +47,7 @@ import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.LoggerType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.MatchingRule;
@@ -63,6 +66,7 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.apache.syncope.common.rest.api.service.UserService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -241,4 +245,17 @@ public class MultitenancyITCase extends AbstractITCase {
             adminClient.getService(ResourceService.class).delete(resource.getKey());
         }
     }
+
+    @Test
+    public void issueSYNCOPE1377() {
+        try {
+            new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("NotExisting").create().
+                    getService(UserSelfService.class).
+                    create(UserITCase.getUniqueSampleTO("syncope1377@syncope.apache.org"), true);
+            fail();
+        } catch (SyncopeClientException e) {
+            assertEquals(ClientExceptionType.NotFound, e.getType());
+            assertTrue(e.getMessage().contains("NotExisting"));
+        }
+    }
 }


[6/6] syncope git commit: [SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value

Posted by il...@apache.org.
[SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value


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

Branch: refs/heads/master
Commit: da91868697e61412ef53cdee717bc82b6db405bc
Parents: 25d6c1f
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 17:01:49 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:04:33 2018 +0200

----------------------------------------------------------------------
 .../syncope/core/rest/cxf/AddETagFilter.java    |  2 +-
 .../core/rest/cxf/CheckDomainFilter.java        | 81 ++++++++++++++++++++
 .../src/main/resources/restCXFContext.xml       |  2 +
 .../core/spring/security/AuthContextUtils.java  | 15 ++--
 .../src/main/resources/jboss/restCXFContext.xml |  2 +
 .../syncope/fit/core/MultitenancyITCase.java    | 17 ++++
 6 files changed, 110 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index dc6f0e6..145bea2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 
 /**
- * Adds the <tt>ETag</tt> header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
+ * Adds the {@code ETag} header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
  * The actual ETag value is computed on the basis of last change date (or creation date if not available).
  */
 @Provider

http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
new file mode 100644
index 0000000..f2aabad
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
@@ -0,0 +1,81 @@
+/*
+ * 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 java.io.IOException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ErrorTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.core.persistence.api.dao.DomainDAO;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Checks that requested Domain exists.
+ */
+@Provider
+@PreMatching
+public class CheckDomainFilter implements ContainerRequestFilter {
+
+    @Autowired
+    private DomainDAO domainDAO;
+
+    @Override
+    public void filter(final ContainerRequestContext reqContext) throws IOException {
+        final String domain = reqContext.getHeaderString(RESTHeaders.DOMAIN);
+        if (domain != null && !SyncopeConstants.MASTER_DOMAIN.equals(domain)) {
+            AuthContextUtils.execWithAuthContext(
+                    SyncopeConstants.MASTER_DOMAIN, new AuthContextUtils.Executable<Void>() {
+
+                @Override
+                public Void exec() {
+                    if (domainDAO.find(domain) == null) {
+                        String message = "Domain '" + domain + "' not available";
+
+                        ErrorTO error = new ErrorTO();
+                        error.setStatus(Response.Status.NOT_FOUND.getStatusCode());
+                        error.setType(ClientExceptionType.NotFound);
+                        error.getElements().add(message);
+
+                        reqContext.abortWith(Response.status(Response.Status.NOT_FOUND).
+                                entity(error).
+                                header(HttpHeaders.CONTENT_TYPE,
+                                        reqContext.getAcceptableMediaTypes().isEmpty()
+                                        ? MediaType.APPLICATION_JSON
+                                        : reqContext.getAcceptableMediaTypes().get(0).toString()).
+                                header(RESTHeaders.ERROR_CODE,
+                                        ClientExceptionType.NotFound.name()).
+                                header(RESTHeaders.ERROR_INFO,
+                                        ClientExceptionType.NotFound.getInfoHeaderValue(message)).
+                                build());
+                    }
+                    return null;
+                }
+            });
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/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 dd3ff18..b68b33f 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
   
   <bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
     
+  <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
   <bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
   <bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
   
@@ -165,6 +166,7 @@ under the License.
       <ref bean="yamlProvider"/>
       <ref bean="exceptionMapper"/>
       <ref bean="searchContextProvider"/>
+      <ref bean="checkDomainFilter"/>
       <ref bean="addDomainFilter"/>
       <ref bean="addETagFilter"/>
       <ref bean="wadlGenerator"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index 6bc5fdb..ee99056 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -98,7 +98,7 @@ public final class AuthContextUtils {
         return domainKey;
     }
 
-    private static void setFakeAuth(final String domain) {
+    private static Authentication getFakeAuth(final String domain) {
         List<GrantedAuthority> authorities = EntitlementsHolder.getInstance().getValues().stream().
                 map(entitlement -> new SyncopeGrantedAuthority(entitlement, SyncopeConstants.ROOT_REALM)).
                 collect(Collectors.toList());
@@ -107,20 +107,19 @@ public final class AuthContextUtils {
                 new User(ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
                         "FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
         auth.setDetails(new SyncopeAuthenticationDetails(domain));
-        SecurityContextHolder.getContext().setAuthentication(auth);
+        return auth;
     }
 
-    public static <T> T execWithAuthContext(final String domainKey, final Executable<T> executable) {
-        SecurityContext ctx = SecurityContextHolder.getContext();
-        setFakeAuth(domainKey);
+    public static <T> T execWithAuthContext(final String domain, final Executable<T> executable) {
+        Authentication original = SecurityContextHolder.getContext().getAuthentication();
+        SecurityContextHolder.getContext().setAuthentication(getFakeAuth(domain));
         try {
             return executable.exec();
         } catch (Throwable t) {
-            LOG.debug("Error during execution with domain {} context", domainKey, t);
+            LOG.debug("Error during execution with domain {} context", domain, t);
             throw t;
         } finally {
-            SecurityContextHolder.clearContext();
-            SecurityContextHolder.setContext(ctx);
+            SecurityContextHolder.getContext().setAuthentication(original);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/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 b06589b..7bb4b94 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
   
   <bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
     
+  <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
   <bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
   <bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
   
@@ -179,6 +180,7 @@ under the License.
       <ref bean="yamlProvider"/>
       <ref bean="exceptionMapper"/>
       <ref bean="searchContextProvider"/>
+      <ref bean="checkDomainFilter"/>
       <ref bean="addDomainFilter"/>
       <ref bean="addETagFilter"/>
       <ref bean="wadlGenerator"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index e07c30f..c088bd6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -21,6 +21,7 @@ package org.apache.syncope.fit.core;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.List;
@@ -31,6 +32,7 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ItemTO;
@@ -45,6 +47,7 @@ import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.LoggerType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.ExecStatus;
@@ -63,6 +66,7 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.apache.syncope.common.rest.api.service.UserService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -241,4 +245,17 @@ public class MultitenancyITCase extends AbstractITCase {
             adminClient.getService(ResourceService.class).delete(resource.getKey());
         }
     }
+
+    @Test
+    public void issueSYNCOPE1377() {
+        try {
+            new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("NotExisting").create().
+                    getService(UserSelfService.class).
+                    create(UserITCase.getUniqueSampleTO("syncope1377@syncope.apache.org"), true);
+            fail("This should not happen");
+        } catch (SyncopeClientException e) {
+            assertEquals(ClientExceptionType.NotFound, e.getType());
+            assertTrue(e.getMessage().contains("NotExisting"));
+        }
+    }
 }


[4/6] syncope git commit: [SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value

Posted by il...@apache.org.
[SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value


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

Branch: refs/heads/2_1_X
Commit: 54e528b894873708b635e74a9410d1ca00e696b9
Parents: c2e8a20
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 17:01:49 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:04:09 2018 +0200

----------------------------------------------------------------------
 .../syncope/core/rest/cxf/AddETagFilter.java    |  2 +-
 .../core/rest/cxf/CheckDomainFilter.java        | 81 ++++++++++++++++++++
 .../src/main/resources/restCXFContext.xml       |  2 +
 .../core/spring/security/AuthContextUtils.java  | 15 ++--
 .../src/main/resources/jboss/restCXFContext.xml |  2 +
 .../syncope/fit/core/MultitenancyITCase.java    | 17 ++++
 6 files changed, 110 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index dc6f0e6..145bea2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 
 /**
- * Adds the <tt>ETag</tt> header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
+ * Adds the {@code ETag} header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
  * The actual ETag value is computed on the basis of last change date (or creation date if not available).
  */
 @Provider

http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
new file mode 100644
index 0000000..f2aabad
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
@@ -0,0 +1,81 @@
+/*
+ * 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 java.io.IOException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ErrorTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.core.persistence.api.dao.DomainDAO;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Checks that requested Domain exists.
+ */
+@Provider
+@PreMatching
+public class CheckDomainFilter implements ContainerRequestFilter {
+
+    @Autowired
+    private DomainDAO domainDAO;
+
+    @Override
+    public void filter(final ContainerRequestContext reqContext) throws IOException {
+        final String domain = reqContext.getHeaderString(RESTHeaders.DOMAIN);
+        if (domain != null && !SyncopeConstants.MASTER_DOMAIN.equals(domain)) {
+            AuthContextUtils.execWithAuthContext(
+                    SyncopeConstants.MASTER_DOMAIN, new AuthContextUtils.Executable<Void>() {
+
+                @Override
+                public Void exec() {
+                    if (domainDAO.find(domain) == null) {
+                        String message = "Domain '" + domain + "' not available";
+
+                        ErrorTO error = new ErrorTO();
+                        error.setStatus(Response.Status.NOT_FOUND.getStatusCode());
+                        error.setType(ClientExceptionType.NotFound);
+                        error.getElements().add(message);
+
+                        reqContext.abortWith(Response.status(Response.Status.NOT_FOUND).
+                                entity(error).
+                                header(HttpHeaders.CONTENT_TYPE,
+                                        reqContext.getAcceptableMediaTypes().isEmpty()
+                                        ? MediaType.APPLICATION_JSON
+                                        : reqContext.getAcceptableMediaTypes().get(0).toString()).
+                                header(RESTHeaders.ERROR_CODE,
+                                        ClientExceptionType.NotFound.name()).
+                                header(RESTHeaders.ERROR_INFO,
+                                        ClientExceptionType.NotFound.getInfoHeaderValue(message)).
+                                build());
+                    }
+                    return null;
+                }
+            });
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/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 dd3ff18..b68b33f 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
   
   <bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
     
+  <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
   <bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
   <bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
   
@@ -165,6 +166,7 @@ under the License.
       <ref bean="yamlProvider"/>
       <ref bean="exceptionMapper"/>
       <ref bean="searchContextProvider"/>
+      <ref bean="checkDomainFilter"/>
       <ref bean="addDomainFilter"/>
       <ref bean="addETagFilter"/>
       <ref bean="wadlGenerator"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index 6bc5fdb..ee99056 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -98,7 +98,7 @@ public final class AuthContextUtils {
         return domainKey;
     }
 
-    private static void setFakeAuth(final String domain) {
+    private static Authentication getFakeAuth(final String domain) {
         List<GrantedAuthority> authorities = EntitlementsHolder.getInstance().getValues().stream().
                 map(entitlement -> new SyncopeGrantedAuthority(entitlement, SyncopeConstants.ROOT_REALM)).
                 collect(Collectors.toList());
@@ -107,20 +107,19 @@ public final class AuthContextUtils {
                 new User(ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
                         "FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
         auth.setDetails(new SyncopeAuthenticationDetails(domain));
-        SecurityContextHolder.getContext().setAuthentication(auth);
+        return auth;
     }
 
-    public static <T> T execWithAuthContext(final String domainKey, final Executable<T> executable) {
-        SecurityContext ctx = SecurityContextHolder.getContext();
-        setFakeAuth(domainKey);
+    public static <T> T execWithAuthContext(final String domain, final Executable<T> executable) {
+        Authentication original = SecurityContextHolder.getContext().getAuthentication();
+        SecurityContextHolder.getContext().setAuthentication(getFakeAuth(domain));
         try {
             return executable.exec();
         } catch (Throwable t) {
-            LOG.debug("Error during execution with domain {} context", domainKey, t);
+            LOG.debug("Error during execution with domain {} context", domain, t);
             throw t;
         } finally {
-            SecurityContextHolder.clearContext();
-            SecurityContextHolder.setContext(ctx);
+            SecurityContextHolder.getContext().setAuthentication(original);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/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 b06589b..7bb4b94 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
   
   <bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
     
+  <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
   <bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
   <bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
   
@@ -179,6 +180,7 @@ under the License.
       <ref bean="yamlProvider"/>
       <ref bean="exceptionMapper"/>
       <ref bean="searchContextProvider"/>
+      <ref bean="checkDomainFilter"/>
       <ref bean="addDomainFilter"/>
       <ref bean="addETagFilter"/>
       <ref bean="wadlGenerator"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index e07c30f..c088bd6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -21,6 +21,7 @@ package org.apache.syncope.fit.core;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.List;
@@ -31,6 +32,7 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ItemTO;
@@ -45,6 +47,7 @@ import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.LoggerType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.ExecStatus;
@@ -63,6 +66,7 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.apache.syncope.common.rest.api.service.UserService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -241,4 +245,17 @@ public class MultitenancyITCase extends AbstractITCase {
             adminClient.getService(ResourceService.class).delete(resource.getKey());
         }
     }
+
+    @Test
+    public void issueSYNCOPE1377() {
+        try {
+            new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("NotExisting").create().
+                    getService(UserSelfService.class).
+                    create(UserITCase.getUniqueSampleTO("syncope1377@syncope.apache.org"), true);
+            fail("This should not happen");
+        } catch (SyncopeClientException e) {
+            assertEquals(ClientExceptionType.NotFound, e.getType());
+            assertTrue(e.getMessage().contains("NotExisting"));
+        }
+    }
 }


[3/6] syncope git commit: Upgrading Codemirror and docker-maven-plugin

Posted by il...@apache.org.
Upgrading Codemirror and docker-maven-plugin


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

Branch: refs/heads/2_1_X
Commit: c2e8a2092c5d5ba713cef5cff535ead06b48af10
Parents: 88891b1
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 08:37:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:02:10 2018 +0200

----------------------------------------------------------------------
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/c2e8a209/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ab962f8..e77a599 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,7 +457,7 @@ under the License.
     <font-awesome.filename>font-awesome.min.css</font-awesome.filename>
     <ionicons.version>2.0.1</ionicons.version>
     <highlightjs.version>9.8.0</highlightjs.version>
-    <codemirror.version>5.33.0</codemirror.version>
+    <codemirror.version>5.40.2</codemirror.version>
     <googlediffmatchpath.version>20121119-1</googlediffmatchpath.version>
     <jsplumb.version>2.0.7</jsplumb.version>
     <chartjs.version>1.0.2</chartjs.version>
@@ -1947,7 +1947,7 @@ under the License.
         <plugin>
           <groupId>io.fabric8</groupId>
           <artifactId>docker-maven-plugin</artifactId>
-          <version>0.27.0</version>
+          <version>0.27.1</version>
         </plugin>
 
         <plugin>


[2/6] syncope git commit: Upgrading Codemirror and docker-maven-plugin

Posted by il...@apache.org.
Upgrading Codemirror and docker-maven-plugin


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

Branch: refs/heads/2_0_X
Commit: 62faf1fe32dcaf80faaad85026c704f00b636368
Parents: 3285cc0
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 08:37:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:01:59 2018 +0200

----------------------------------------------------------------------
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/62faf1fe/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8db8281..180c3d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -462,7 +462,7 @@ under the License.
     <font-awesome.filename>font-awesome.min.css</font-awesome.filename>
     <ionicons.version>2.0.1</ionicons.version>
     <highlightjs.version>9.8.0</highlightjs.version>
-    <codemirror.version>5.33.0</codemirror.version>
+    <codemirror.version>5.40.2</codemirror.version>
     <googlediffmatchpath.version>20121119-1</googlediffmatchpath.version>
     <jsplumb.version>2.0.7</jsplumb.version>
     <chartjs.version>1.0.2</chartjs.version>
@@ -2021,7 +2021,7 @@ under the License.
         <plugin>
           <groupId>io.fabric8</groupId>
           <artifactId>docker-maven-plugin</artifactId>
-          <version>0.27.0</version>
+          <version>0.27.1</version>
         </plugin>
 
         <plugin>


[5/6] syncope git commit: Upgrading Codemirror and docker-maven-plugin

Posted by il...@apache.org.
Upgrading Codemirror and docker-maven-plugin


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

Branch: refs/heads/master
Commit: 25d6c1f76b7fc544013b32710c8203f4c09dbea9
Parents: c2cc8c9
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 08:37:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:04:30 2018 +0200

----------------------------------------------------------------------
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/25d6c1f7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bfd47c3..8a90d63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,7 +457,7 @@ under the License.
     <font-awesome.filename>font-awesome.min.css</font-awesome.filename>
     <ionicons.version>2.0.1</ionicons.version>
     <highlightjs.version>9.8.0</highlightjs.version>
-    <codemirror.version>5.33.0</codemirror.version>
+    <codemirror.version>5.40.2</codemirror.version>
     <googlediffmatchpath.version>20121119-1</googlediffmatchpath.version>
     <jsplumb.version>2.0.7</jsplumb.version>
     <chartjs.version>1.0.2</chartjs.version>
@@ -1947,7 +1947,7 @@ under the License.
         <plugin>
           <groupId>io.fabric8</groupId>
           <artifactId>docker-maven-plugin</artifactId>
-          <version>0.27.0</version>
+          <version>0.27.1</version>
         </plugin>
 
         <plugin>