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 2017/09/27 12:37:18 UTC

[2/2] syncope git commit: [SYNCOPE-1212] On PropagationTask execution

[SYNCOPE-1212] On PropagationTask execution


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

Branch: refs/heads/master
Commit: 79f96cdd0f37580558a89c95d90bd9e83725127c
Parents: 678bff9
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Sep 27 12:43:04 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Sep 27 12:52:44 2017 +0200

----------------------------------------------------------------------
 .../jpa/dao/JPAExternalResourceDAO.java         | 18 ++--
 .../entity/resource/JPAExternalResource.java    |  1 -
 .../DefaultPropagationTaskCallable.java         | 96 ++++++++++++++++++++
 .../PriorityPropagationTaskExecutor.java        |  2 +-
 .../PropagationTaskCallableImpl.java            | 96 --------------------
 5 files changed, 106 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/79f96cdd/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
index 5822a6e..8e6485f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
@@ -293,15 +293,15 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem
         policyDAO().findByResource(resource).
                 forEach(policy -> policy.getResources().remove(resource));
 
-        resource.getProvisions().stream().map(provision -> {
-            provision.getMapping().getItems().forEach(item -> item.setMapping(null));
-            return provision;
-        }).map(provision -> {
-            provision.getMapping().getItems().clear();
-            provision.setMapping(null);
-            provision.setResource(null);
-            return provision;
-        }).forEachOrdered(provision -> virSchemaDAO().findByProvision(provision).
+        resource.getProvisions().stream().
+                filter(provision -> provision.getMapping() != null).
+                peek(provision -> provision.getMapping().getItems().forEach(item -> item.setMapping(null))).
+                peek(provision -> {
+                    provision.getMapping().getItems().clear();
+                    provision.setMapping(null);
+                    provision.setResource(null);
+                }).
+                forEachOrdered(provision -> virSchemaDAO().findByProvision(provision).
                 forEach(schema -> virSchemaDAO().delete(schema.getKey())));
 
         externalResourceHistoryConfDAO().deleteByEntity(resource);

http://git-wip-us.apache.org/repos/asf/syncope/blob/79f96cdd/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
index 6c34916..8283df0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
@@ -89,7 +89,6 @@ public class JPAExternalResource extends AbstractProvidedKeyEntity implements Ex
      * The resource type is identified by the associated connector.
      */
     @ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.MERGE })
-    @NotNull
     private JPAConnInstance connector;
 
     @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY, mappedBy = "resource")

http://git-wip-us.apache.org/repos/asf/syncope/blob/79f96cdd/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java
new file mode 100644
index 0000000..e13864e
--- /dev/null
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java
@@ -0,0 +1,96 @@
+/*
+ * 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.provisioning.java.propagation;
+
+import java.util.Collection;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.apache.syncope.core.spring.security.SyncopeAuthenticationDetails;
+import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskCallable;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional(rollbackFor = { Throwable.class })
+public class DefaultPropagationTaskCallable implements PropagationTaskCallable {
+
+    protected static final Logger LOG = LoggerFactory.getLogger(PropagationTaskCallable.class);
+
+    protected final String domain;
+
+    protected final String username;
+
+    protected final Collection<? extends GrantedAuthority> authorities;
+
+    protected AbstractPropagationTaskExecutor executor;
+
+    protected PropagationTask task;
+
+    protected PropagationReporter reporter;
+
+    public DefaultPropagationTaskCallable() {
+        SecurityContext ctx = SecurityContextHolder.getContext();
+        domain = AuthContextUtils.getDomain();
+        username = ctx.getAuthentication().getName();
+        authorities = ctx.getAuthentication().getAuthorities();
+    }
+
+    @Override
+    public void setExecutor(final PropagationTaskExecutor executor) {
+        if (executor instanceof AbstractPropagationTaskExecutor) {
+            this.executor = (AbstractPropagationTaskExecutor) executor;
+        }
+    }
+
+    @Override
+    public void setTask(final PropagationTask task) {
+        this.task = task;
+    }
+
+    @Override
+    public void setReporter(final PropagationReporter reporter) {
+        this.reporter = reporter;
+    }
+
+    @Override
+    public TaskExec call() throws Exception {
+        // set security context according to the one gathered at instantiation time from the calling thread
+        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(
+                new User(username, "FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
+        auth.setDetails(new SyncopeAuthenticationDetails(domain));
+        SecurityContextHolder.getContext().setAuthentication(auth);
+
+        LOG.debug("Execution started for {}", task);
+
+        TaskExec execution = executor.execute(task, reporter);
+
+        LOG.debug("Execution completed for {}, {}", task, execution);
+
+        return execution;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/79f96cdd/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
index 8322635..c7f9ee5 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
@@ -68,7 +68,7 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
             final PropagationTask task, final PropagationReporter reporter) {
 
         PropagationTaskCallable callable = (PropagationTaskCallable) ApplicationContextProvider.getBeanFactory().
-                createBean(PropagationTaskCallableImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, false);
+                createBean(DefaultPropagationTaskCallable.class, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, false);
         callable.setExecutor(this);
         callable.setTask(task);
         callable.setReporter(reporter);

http://git-wip-us.apache.org/repos/asf/syncope/blob/79f96cdd/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationTaskCallableImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationTaskCallableImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationTaskCallableImpl.java
deleted file mode 100644
index 33adeec..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationTaskCallableImpl.java
+++ /dev/null
@@ -1,96 +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.provisioning.java.propagation;
-
-import java.util.Collection;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.security.SyncopeAuthenticationDetails;
-import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskCallable;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.User;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional(rollbackFor = { Throwable.class })
-public class PropagationTaskCallableImpl implements PropagationTaskCallable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PropagationTaskCallable.class);
-
-    private final String domain;
-
-    private final String username;
-
-    private final Collection<? extends GrantedAuthority> authorities;
-
-    private AbstractPropagationTaskExecutor executor;
-
-    private PropagationTask task;
-
-    private PropagationReporter reporter;
-
-    public PropagationTaskCallableImpl() {
-        SecurityContext ctx = SecurityContextHolder.getContext();
-        domain = AuthContextUtils.getDomain();
-        username = ctx.getAuthentication().getName();
-        authorities = ctx.getAuthentication().getAuthorities();
-    }
-
-    @Override
-    public void setExecutor(final PropagationTaskExecutor executor) {
-        if (executor instanceof AbstractPropagationTaskExecutor) {
-            this.executor = (AbstractPropagationTaskExecutor) executor;
-        }
-    }
-
-    @Override
-    public void setTask(final PropagationTask task) {
-        this.task = task;
-    }
-
-    @Override
-    public void setReporter(final PropagationReporter reporter) {
-        this.reporter = reporter;
-    }
-
-    @Override
-    public TaskExec call() throws Exception {
-        // set security context according to the one gathered at instantiation time from the calling thread
-        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(
-                new User(username, "FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
-        auth.setDetails(new SyncopeAuthenticationDetails(domain));
-        SecurityContextHolder.getContext().setAuthentication(auth);
-
-        LOG.debug("Execution started for {}", task);
-
-        TaskExec execution = executor.execute(task, reporter);
-
-        LOG.debug("Execution completed for {}, {}", task, execution);
-
-        return execution;
-    }
-
-}