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;
- }
-
-}