You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by md...@apache.org on 2013/07/18 11:19:20 UTC
svn commit: r1504397 - in
/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core:
propagation/impl/DefaultPropagationHandler.java
rest/controller/RoleController.java rest/controller/UserController.java
Author: mdisabatino
Date: Thu Jul 18 09:19:19 2013
New Revision: 1504397
URL: http://svn.apache.org/r1504397
Log:
SYNCOPE-402 Fix RoleController, add propagation status to assigned resource when primary resource failed.
Modified:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/DefaultPropagationHandler.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/DefaultPropagationHandler.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/DefaultPropagationHandler.java?rev=1504397&r1=1504396&r2=1504397&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/DefaultPropagationHandler.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/propagation/impl/DefaultPropagationHandler.java Thu Jul 18 09:19:19 2013
@@ -22,11 +22,16 @@ import java.util.List;
import org.apache.syncope.common.to.PropagationStatusTO;
import org.apache.syncope.common.types.PropagationTaskExecStatus;
import org.apache.syncope.core.connid.ConnObjectUtil;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
import org.apache.syncope.core.propagation.PropagationHandler;
import org.identityconnectors.framework.common.objects.ConnectorObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DefaultPropagationHandler implements PropagationHandler {
+ protected static final Logger LOG = LoggerFactory.getLogger(DefaultPropagationHandler.class);
+
private final ConnObjectUtil connObjectUtil;
private final List<PropagationStatusTO> propagations;
@@ -57,4 +62,32 @@ public class DefaultPropagationHandler i
propagations.add(propagation);
}
+
+ public void completeWhenPrimaryResourceErrored(
+ final List<PropagationStatusTO> propagations, final List<PropagationTask> tasks) {
+
+ final String failedResource = propagations.get(propagations.size() - 1).getResource();
+
+ LOG.debug("Propagation error: {} primary resource failed to propagate", failedResource);
+
+ for (PropagationTask propagationTask : tasks) {
+ if (!containsPropagationStatusTO(propagationTask.getResource().getName(), propagations)) {
+ final PropagationStatusTO propagationStatusTO = new PropagationStatusTO();
+ propagationStatusTO.setResource(propagationTask.getResource().getName());
+ propagationStatusTO.setStatus(PropagationTaskExecStatus.FAILURE);
+ propagationStatusTO.setExecutionMessage(
+ "Propagation error: " + failedResource + " primary resource failed to propagate.");
+ propagations.add(propagationStatusTO);
+ }
+ }
+ }
+
+ private boolean containsPropagationStatusTO(final String resource, final List<PropagationStatusTO> propagations) {
+ for (PropagationStatusTO status : propagations) {
+ if (resource.equals(status.getResource())) {
+ return true;
+ }
+ }
+ return false;
+ }
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java?rev=1504397&r1=1504396&r2=1504397&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java Thu Jul 18 09:19:19 2013
@@ -42,6 +42,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.dao.NotFoundException;
import org.apache.syncope.core.persistence.dao.RoleDAO;
import org.apache.syncope.core.persistence.dao.UserDAO;
+import org.apache.syncope.core.propagation.PropagationException;
import org.apache.syncope.core.propagation.PropagationTaskExecutor;
import org.apache.syncope.core.propagation.impl.DefaultPropagationHandler;
import org.apache.syncope.core.propagation.impl.PropagationManager;
@@ -281,7 +282,13 @@ public class RoleController {
List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created, roleTO.getVirtualAttributes());
final List<PropagationStatusTO> propagations = new ArrayList<PropagationStatusTO>();
- taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ final DefaultPropagationHandler propHanlder = new DefaultPropagationHandler(connObjectUtil, propagations);
+ try {
+ taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ } catch (PropagationException e) {
+ LOG.error("Error propagation primary resource", e);
+ propHanlder.completeWhenPrimaryResourceErrored(propagations, tasks);
+ }
final RoleTO savedTO = binder.getRoleTO(created.getResult());
savedTO.setPropagationStatusTOs(propagations);
@@ -308,8 +315,13 @@ public class RoleController {
roleMod.getVirtualAttributesToBeRemoved(), roleMod.getVirtualAttributesToBeUpdated());
final List<PropagationStatusTO> propagations = new ArrayList<PropagationStatusTO>();
- taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
-
+ final DefaultPropagationHandler propHanlder = new DefaultPropagationHandler(connObjectUtil, propagations);
+ try {
+ taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ } catch (PropagationException e) {
+ LOG.error("Error propagation primary resource", e);
+ propHanlder.completeWhenPrimaryResourceErrored(propagations, tasks);
+ }
final RoleTO updatedTO = binder.getRoleTO(updated.getResult());
updatedTO.setPropagationStatusTOs(propagations);
@@ -340,7 +352,13 @@ public class RoleController {
roleTO.setId(roleId);
final List<PropagationStatusTO> propagations = new ArrayList<PropagationStatusTO>();
- taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ final DefaultPropagationHandler propHanlder = new DefaultPropagationHandler(connObjectUtil, propagations);
+ try {
+ taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ } catch (PropagationException e) {
+ LOG.error("Error propagation primary resource", e);
+ propHanlder.completeWhenPrimaryResourceErrored(propagations, tasks);
+ }
roleTO.setPropagationStatusTOs(propagations);
rwfAdapter.delete(roleId);
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java?rev=1504397&r1=1504396&r2=1504397&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java Thu Jul 18 09:19:19 2013
@@ -41,7 +41,6 @@ import org.apache.syncope.common.types.A
import org.apache.syncope.common.types.AuditElements.Category;
import org.apache.syncope.common.types.AuditElements.Result;
import org.apache.syncope.common.types.AuditElements.UserSubCategory;
-import org.apache.syncope.common.types.PropagationTaskExecStatus;
import org.apache.syncope.common.types.ResourceOperation;
import org.apache.syncope.core.audit.AuditManager;
import org.apache.syncope.core.connid.ConnObjectUtil;
@@ -302,11 +301,12 @@ public class UserController {
created, userTO.getPassword(), userTO.getVirtualAttributes());
final List<PropagationStatusTO> propagations = new ArrayList<PropagationStatusTO>();
+ final DefaultPropagationHandler propHanlder = new DefaultPropagationHandler(connObjectUtil, propagations);
try {
- taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ taskExecutor.execute(tasks, propHanlder);
} catch (PropagationException e) {
LOG.error("Error propagation primary resource", e);
- completeWhenErroredPrimaryPropagation(propagations, tasks);
+ propHanlder.completeWhenPrimaryResourceErrored(propagations, tasks);
}
notificationManager.createTasks(created.getResult().getKey(), created.getPerformedTasks());
@@ -385,11 +385,12 @@ public class UserController {
}
final List<PropagationStatusTO> propagations = new ArrayList<PropagationStatusTO>();
+ final DefaultPropagationHandler propHanlder = new DefaultPropagationHandler(connObjectUtil, propagations);
try {
- taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
+ taskExecutor.execute(tasks, propHanlder);
} catch (PropagationException e) {
LOG.error("Error propagation primary resource", e);
- completeWhenErroredPrimaryPropagation(propagations, tasks);
+ propHanlder.completeWhenPrimaryResourceErrored(propagations, tasks);
}
// 3. create notification tasks
@@ -711,12 +712,12 @@ public class UserController {
userTO.setId(userId);
final List<PropagationStatusTO> propagations = new ArrayList<PropagationStatusTO>();
-
+ final DefaultPropagationHandler propHanlder = new DefaultPropagationHandler(connObjectUtil, propagations);
try {
taskExecutor.execute(tasks, new DefaultPropagationHandler(connObjectUtil, propagations));
} catch (PropagationException e) {
LOG.error("Error propagation primary resource", e);
- completeWhenErroredPrimaryPropagation(propagations, tasks);
+ propHanlder.completeWhenPrimaryResourceErrored(propagations, tasks);
}
userTO.setPropagationStatusTOs(propagations);
@@ -777,32 +778,4 @@ public class UserController {
return res;
}
-
- private void completeWhenErroredPrimaryPropagation(
- final List<PropagationStatusTO> propagations, final List<PropagationTask> tasks) {
-
- final String failedResource = propagations.get(propagations.size() - 1).getResource();
-
- LOG.debug("Propagation error: {} primary resource failed to propagate", failedResource);
-
- for (PropagationTask propagationTask : tasks) {
- if (!containsPropagationStatusTO(propagationTask.getResource().getName(), propagations)) {
- final PropagationStatusTO propagationStatusTO = new PropagationStatusTO();
- propagationStatusTO.setResource(propagationTask.getResource().getName());
- propagationStatusTO.setStatus(PropagationTaskExecStatus.FAILURE);
- propagationStatusTO.setExecutionMessage(
- "Propagation error: " + failedResource + " primary resource failed to propagate.");
- propagations.add(propagationStatusTO);
- }
- }
- }
-
- private boolean containsPropagationStatusTO(final String resource, final List<PropagationStatusTO> propagations) {
- for (PropagationStatusTO status : propagations) {
- if (resource.equals(status.getResource())) {
- return true;
- }
- }
- return false;
- }
}