You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2014/01/07 15:33:45 UTC
svn commit: r1556227 [1/3] - in /syncope/trunk:
common/src/main/java/org/apache/syncope/common/services/
common/src/main/java/org/apache/syncope/common/to/
common/src/main/java/org/apache/syncope/common/types/
common/src/main/java/org/apache/syncope/co...
Author: fmartelli
Date: Tue Jan 7 14:33:44 2014
New Revision: 1556227
URL: http://svn.apache.org/r1556227
Log:
Introduces push task about SYNCOPE-392; currently missing correlation rules management and matching rules management
Added:
syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java
- copied, changed from r1555091, syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java
syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PushTaskTO.java
- copied, changed from r1555091, syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java
syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/PushActionClass.java
- copied, changed from r1555091, syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/SyncActionClass.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/AbstractSyncActions.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultPushActions.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/PushActions.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/SyncJob.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeSyncResultHandler.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/PushJob.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/SyncJob.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/SyncopePushResultHandler.java
- copied, changed from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/SyncopeSyncResultHandler.java
Modified:
syncope/trunk/common/src/main/java/org/apache/syncope/common/services/TaskService.java
syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java
syncope/trunk/common/src/main/java/org/apache/syncope/common/types/AuditElements.java
syncope/trunk/common/src/main/java/org/apache/syncope/common/types/TaskType.java
syncope/trunk/common/src/main/java/org/apache/syncope/common/util/LoggerEventUtils.java
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/EventSelectionPanel.java
syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskDAOImpl.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/AbstractPropagationTaskExecutor.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/quartz/AbstractTaskJob.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/services/TaskServiceImpl.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPMembershipSyncActions.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/SyncJob.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/SyncopeSyncResultHandler.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/util/MappingUtil.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/util/TaskUtil.java
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
syncope/trunk/core/src/test/java/org/apache/syncope/core/sync/TestSyncActions.java
syncope/trunk/core/src/test/resources/content.xml
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/services/TaskService.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/services/TaskService.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/services/TaskService.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/services/TaskService.java Tue Jan 7 14:33:44 2014
@@ -46,6 +46,7 @@ import org.apache.syncope.common.to.Abst
import org.apache.syncope.common.to.SchedTaskTO;
import org.apache.syncope.common.types.TaskType;
import org.apache.syncope.common.wrap.JobClass;
+import org.apache.syncope.common.wrap.PushActionClass;
import org.apache.syncope.common.wrap.SyncActionClass;
/**
@@ -75,6 +76,16 @@ public interface TaskService extends JAX
List<SyncActionClass> getSyncActionsClasses();
/**
+ * Returns a list of classes to be used as push actions.
+ *
+ * @return list of classes to be used as push actions
+ */
+ @GET
+ @Path("pushActionsClasses")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ List<PushActionClass> getPushActionsClasses();
+
+ /**
* Returns the task matching the given id.
*
* @param taskId id of task to be read
Copied: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java (from r1555091, syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java?p2=syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java&p1=syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java&r1=1555091&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java Tue Jan 7 14:33:44 2014
@@ -18,21 +18,12 @@
*/
package org.apache.syncope.common.to;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "syncTask")
-@XmlType
-public class SyncTaskTO extends SchedTaskTO {
+public class AbstractSyncTaskTO extends SchedTaskTO {
private static final long serialVersionUID = -2143537546915809016L;
private String resource;
- private UserTO userTemplate;
-
- private RoleTO roleTemplate;
-
private boolean performCreate;
private boolean performUpdate;
@@ -41,26 +32,8 @@ public class SyncTaskTO extends SchedTas
private boolean syncStatus;
- private boolean fullReconciliation;
-
private String actionsClassName;
- public UserTO getUserTemplate() {
- return userTemplate;
- }
-
- public void setUserTemplate(UserTO userTemplate) {
- this.userTemplate = userTemplate;
- }
-
- public RoleTO getRoleTemplate() {
- return roleTemplate;
- }
-
- public void setRoleTemplate(RoleTO roleTemplate) {
- this.roleTemplate = roleTemplate;
- }
-
public String getResource() {
return resource;
}
@@ -101,14 +74,6 @@ public class SyncTaskTO extends SchedTas
this.syncStatus = syncStatus;
}
- public boolean isFullReconciliation() {
- return fullReconciliation;
- }
-
- public void setFullReconciliation(boolean fullReconciliation) {
- this.fullReconciliation = fullReconciliation;
- }
-
public String getActionsClassName() {
return actionsClassName;
}
Copied: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PushTaskTO.java (from r1555091, syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PushTaskTO.java?p2=syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PushTaskTO.java&p1=syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java&r1=1555091&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PushTaskTO.java Tue Jan 7 14:33:44 2014
@@ -21,99 +21,10 @@ package org.apache.syncope.common.to;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
-@XmlRootElement(name = "syncTask")
+@XmlRootElement(name = "pushTask")
@XmlType
-public class SyncTaskTO extends SchedTaskTO {
+public class PushTaskTO extends AbstractSyncTaskTO {
- private static final long serialVersionUID = -2143537546915809016L;
+ private static final long serialVersionUID = -2143537546915809018L;
- private String resource;
-
- private UserTO userTemplate;
-
- private RoleTO roleTemplate;
-
- private boolean performCreate;
-
- private boolean performUpdate;
-
- private boolean performDelete;
-
- private boolean syncStatus;
-
- private boolean fullReconciliation;
-
- private String actionsClassName;
-
- public UserTO getUserTemplate() {
- return userTemplate;
- }
-
- public void setUserTemplate(UserTO userTemplate) {
- this.userTemplate = userTemplate;
- }
-
- public RoleTO getRoleTemplate() {
- return roleTemplate;
- }
-
- public void setRoleTemplate(RoleTO roleTemplate) {
- this.roleTemplate = roleTemplate;
- }
-
- public String getResource() {
- return resource;
- }
-
- public void setResource(String resource) {
- this.resource = resource;
- }
-
- public boolean isPerformCreate() {
- return performCreate;
- }
-
- public void setPerformCreate(boolean performCreate) {
- this.performCreate = performCreate;
- }
-
- public boolean isPerformUpdate() {
- return performUpdate;
- }
-
- public void setPerformUpdate(boolean performUpdate) {
- this.performUpdate = performUpdate;
- }
-
- public boolean isPerformDelete() {
- return performDelete;
- }
-
- public void setPerformDelete(boolean performDelete) {
- this.performDelete = performDelete;
- }
-
- public boolean isSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(boolean syncStatus) {
- this.syncStatus = syncStatus;
- }
-
- public boolean isFullReconciliation() {
- return fullReconciliation;
- }
-
- public void setFullReconciliation(boolean fullReconciliation) {
- this.fullReconciliation = fullReconciliation;
- }
-
- public String getActionsClassName() {
- return actionsClassName;
- }
-
- public void setActionsClassName(String actionsClassName) {
- this.actionsClassName = actionsClassName;
- }
}
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/SyncTaskTO.java Tue Jan 7 14:33:44 2014
@@ -23,28 +23,16 @@ import javax.xml.bind.annotation.XmlType
@XmlRootElement(name = "syncTask")
@XmlType
-public class SyncTaskTO extends SchedTaskTO {
+public class SyncTaskTO extends AbstractSyncTaskTO {
- private static final long serialVersionUID = -2143537546915809016L;
-
- private String resource;
+ private static final long serialVersionUID = -2143537546915809017L;
private UserTO userTemplate;
private RoleTO roleTemplate;
- private boolean performCreate;
-
- private boolean performUpdate;
-
- private boolean performDelete;
-
- private boolean syncStatus;
-
private boolean fullReconciliation;
- private String actionsClassName;
-
public UserTO getUserTemplate() {
return userTemplate;
}
@@ -61,46 +49,6 @@ public class SyncTaskTO extends SchedTas
this.roleTemplate = roleTemplate;
}
- public String getResource() {
- return resource;
- }
-
- public void setResource(String resource) {
- this.resource = resource;
- }
-
- public boolean isPerformCreate() {
- return performCreate;
- }
-
- public void setPerformCreate(boolean performCreate) {
- this.performCreate = performCreate;
- }
-
- public boolean isPerformUpdate() {
- return performUpdate;
- }
-
- public void setPerformUpdate(boolean performUpdate) {
- this.performUpdate = performUpdate;
- }
-
- public boolean isPerformDelete() {
- return performDelete;
- }
-
- public void setPerformDelete(boolean performDelete) {
- this.performDelete = performDelete;
- }
-
- public boolean isSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(boolean syncStatus) {
- this.syncStatus = syncStatus;
- }
-
public boolean isFullReconciliation() {
return fullReconciliation;
}
@@ -108,12 +56,4 @@ public class SyncTaskTO extends SchedTas
public void setFullReconciliation(boolean fullReconciliation) {
this.fullReconciliation = fullReconciliation;
}
-
- public String getActionsClassName() {
- return actionsClassName;
- }
-
- public void setActionsClassName(String actionsClassName) {
- this.actionsClassName = actionsClassName;
- }
}
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/types/AuditElements.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/types/AuditElements.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/types/AuditElements.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/types/AuditElements.java Tue Jan 7 14:33:44 2014
@@ -36,6 +36,7 @@ public final class AuditElements impleme
TASK(StringUtils.EMPTY),
PROPAGATION("PropagationTask"),
SYNCHRONIZATION("SyncTask"),
+ PUSH("PushTask"),
CUSTOM(StringUtils.EMPTY);
private final String value;
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/types/TaskType.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/types/TaskType.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/types/TaskType.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/types/TaskType.java Tue Jan 7 14:33:44 2014
@@ -26,7 +26,8 @@ public enum TaskType {
PROPAGATION("propagation"),
NOTIFICATION("notification"),
SCHEDULED("sched"),
- SYNCHRONIZATION("sync");
+ SYNCHRONIZATION("sync"),
+ PUSH("push");
private String name;
@@ -47,6 +48,7 @@ public enum TaskType {
}
}
}
- return TaskType.valueOf(name.toUpperCase());
+
+ return null;
}
}
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/util/LoggerEventUtils.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/util/LoggerEventUtils.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/util/LoggerEventUtils.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/util/LoggerEventUtils.java Tue Jan 7 14:33:44 2014
@@ -47,6 +47,8 @@ public class LoggerEventUtils {
type = EventCategoryType.PROPAGATION;
} else if (EventCategoryType.SYNCHRONIZATION.toString().equals(elements[0])) {
type = EventCategoryType.SYNCHRONIZATION;
+ } else if (EventCategoryType.PUSH.toString().equals(elements[0])) {
+ type = EventCategoryType.PUSH;
} else {
try {
type = EventCategoryType.valueOf(elements[0]);
Copied: syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/PushActionClass.java (from r1555091, syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/SyncActionClass.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/PushActionClass.java?p2=syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/PushActionClass.java&p1=syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/SyncActionClass.java&r1=1555091&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/SyncActionClass.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/wrap/PushActionClass.java Tue Jan 7 14:33:44 2014
@@ -21,10 +21,10 @@ package org.apache.syncope.common.wrap;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
-@XmlRootElement(name = "syncActionClass")
+@XmlRootElement(name = "pushActionClass")
@XmlType
-public class SyncActionClass extends AbstractWrappable<String> {
+public class PushActionClass extends AbstractWrappable<String> {
- private static final long serialVersionUID = 1669581609310071905L;
+ private static final long serialVersionUID = 1669581609310071906L;
}
Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/EventSelectionPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/EventSelectionPanel.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/EventSelectionPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/EventSelectionPanel.java Tue Jan 7 14:33:44 2014
@@ -214,7 +214,8 @@ public abstract class EventSelectionPane
if (res.isEmpty()) {
if ((AuditElements.EventCategoryType.PROPAGATION == eventCategoryTO.getType()
- || AuditElements.EventCategoryType.SYNCHRONIZATION == eventCategoryTO.getType())
+ || AuditElements.EventCategoryType.SYNCHRONIZATION == eventCategoryTO.getType()
+ || AuditElements.EventCategoryType.PUSH == eventCategoryTO.getType())
&& StringUtils.isEmpty(eventCategoryTO.getCategory())) {
res.add(eventCategoryTO.getType().toString());
} else if (AuditElements.EventCategoryType.TASK == eventCategoryTO.getType()
Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/TaskRestClient.java Tue Jan 7 14:33:44 2014
@@ -33,6 +33,7 @@ import org.apache.syncope.common.to.Abst
import org.apache.syncope.common.types.TaskType;
import org.apache.syncope.common.util.CollectionWrapper;
import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.PushTaskTO;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.springframework.stereotype.Component;
@@ -99,6 +100,8 @@ public class TaskRestClient extends Base
result = TaskType.SCHEDULED;
} else if (SyncTaskTO.class.equals(reference)) {
result = TaskType.SYNCHRONIZATION;
+ } else if (PushTaskTO.class.equals(reference)) {
+ result = TaskType.PUSH;
}
return result;
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java Tue Jan 7 14:33:44 2014
@@ -29,8 +29,10 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.propagation.PropagationActions;
import org.apache.syncope.core.quartz.TaskJob;
import org.apache.syncope.core.report.Reportlet;
+import org.apache.syncope.core.sync.PushActions;
import org.apache.syncope.core.sync.SyncActions;
import org.apache.syncope.core.sync.SyncCorrelationRule;
+import org.apache.syncope.core.sync.impl.PushJob;
import org.apache.syncope.core.sync.impl.SyncJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +55,9 @@ public class ImplementationClassNamesLoa
REPORTLET,
TASKJOB,
SYNC_ACTIONS,
+ PUSH_ACTIONS,
SYNC_CORRELATION_RULES,
+ PUSH_CORRELATION_RULES,
PROPAGATION_ACTIONS,
VALIDATOR
@@ -90,7 +94,9 @@ public class ImplementationClassNamesLoa
}
if ((interfaces.contains(TaskJob.class))
- && !metadata.isAbstract() && !SyncJob.class.getName().equals(metadata.getClassName())) {
+ && !metadata.isAbstract()
+ && !SyncJob.class.getName().equals(metadata.getClassName())
+ && !PushJob.class.getName().equals(metadata.getClassName())) {
classNames.get(Type.TASKJOB).add(metadata.getClassName());
}
@@ -99,10 +105,16 @@ public class ImplementationClassNamesLoa
classNames.get(Type.SYNC_ACTIONS).add(metadata.getClassName());
}
+ if (interfaces.contains(PushActions.class) && !metadata.isAbstract()) {
+ classNames.get(Type.PUSH_ACTIONS).add(metadata.getClassName());
+ }
+
if (interfaces.contains(SyncCorrelationRule.class) && !metadata.isAbstract()) {
classNames.get(Type.SYNC_CORRELATION_RULES).add(metadata.getClassName());
}
+ // TODO: add push correlation rules management
+
if (interfaces.contains(PropagationActions.class) && !metadata.isAbstract()) {
classNames.get(Type.PROPAGATION_ACTIONS).add(metadata.getClassName());
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java Tue Jan 7 14:33:44 2014
@@ -25,6 +25,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.core.notification.NotificationJob;
+import org.apache.syncope.core.persistence.beans.PushTask;
import org.apache.syncope.core.persistence.beans.Report;
import org.apache.syncope.core.persistence.beans.SchedTask;
import org.apache.syncope.core.persistence.beans.SyncTask;
@@ -35,8 +36,11 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.dao.TaskDAO;
import org.apache.syncope.core.quartz.TaskJob;
import org.apache.syncope.core.report.ReportJob;
+import org.apache.syncope.core.sync.DefaultPushActions;
import org.apache.syncope.core.sync.DefaultSyncActions;
+import org.apache.syncope.core.sync.PushActions;
import org.apache.syncope.core.sync.SyncActions;
+import org.apache.syncope.core.sync.impl.PushJob;
import org.apache.syncope.core.sync.impl.SyncJob;
import org.apache.syncope.core.util.ApplicationContextProvider;
import org.quartz.Job;
@@ -179,6 +183,21 @@ public class JobInstanceLoader {
createBean(syncActionsClass, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, true);
((SyncJob) jobInstance).setActions(syncActions);
+ } else if (jobInstance instanceof PushJob && task instanceof PushTask) {
+ String jobActionsClassName = ((PushTask) task).getActionsClassName();
+ Class<?> syncActionsClass = DefaultPushActions.class;
+ if (StringUtils.isNotBlank(jobActionsClassName)) {
+ try {
+ syncActionsClass = Class.forName(jobActionsClassName);
+ } catch (Exception e) {
+ LOG.error("Class {} not found, reverting to {}", jobActionsClassName,
+ syncActionsClass.getName(), e);
+ }
+ }
+ PushActions pushActions = (PushActions) ApplicationContextProvider.getBeanFactory().
+ createBean(syncActionsClass, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, true);
+
+ ((PushJob) jobInstance).setActions(pushActions);
}
registerJob(getJobName(task), jobInstance, cronExpression);
@@ -240,6 +259,7 @@ public class JobInstanceLoader {
// 1. jobs for SchedTasks
Set<SchedTask> tasks = new HashSet<SchedTask>(taskDAO.findAll(SchedTask.class));
tasks.addAll(taskDAO.findAll(SyncTask.class));
+ tasks.addAll(taskDAO.findAll(PushTask.class));
for (SchedTask task : tasks) {
try {
registerJob(task, task.getJobClassName(), task.getCronExpression());
Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java (from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java&r1=1554763&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java Tue Jan 7 14:33:44 2014
@@ -19,19 +19,15 @@
package org.apache.syncope.core.persistence.beans;
import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.MappedSuperclass;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
-import org.apache.syncope.common.to.RoleTO;
-import org.apache.syncope.common.to.UserTO;
import org.apache.syncope.core.persistence.validation.entity.SyncTaskCheck;
-import org.apache.syncope.core.util.XMLSerializer;
-@Entity
+@MappedSuperclass
@SyncTaskCheck
-public class SyncTask extends SchedTask {
+public abstract class AbstractSyncTask extends SchedTask {
private static final long serialVersionUID = -4141057723006682562L;
@@ -41,12 +37,6 @@ public class SyncTask extends SchedTask
@ManyToOne
private ExternalResource resource;
- @Lob
- private String userTemplate;
-
- @Lob
- private String roleTemplate;
-
@Basic
@Min(0)
@Max(1)
@@ -67,20 +57,11 @@ public class SyncTask extends SchedTask
@Max(1)
private Integer syncStatus;
- @Basic
- @Min(0)
- @Max(1)
- private Integer fullReconciliation;
-
private String actionsClassName;
- /**
- * Default constructor.
- */
- public SyncTask() {
+ public AbstractSyncTask(final String jobClassName) {
super();
-
- super.setJobClassName("org.apache.syncope.core.sync.impl.SyncJob");
+ super.setJobClassName(jobClassName);
}
@Override
@@ -96,26 +77,6 @@ public class SyncTask extends SchedTask
this.resource = resource;
}
- public UserTO getUserTemplate() {
- return userTemplate == null
- ? new UserTO()
- : XMLSerializer.<UserTO>deserialize(userTemplate);
- }
-
- public void setUserTemplate(final UserTO userTemplate) {
- this.userTemplate = XMLSerializer.serialize(userTemplate);
- }
-
- public RoleTO getRoleTemplate() {
- return userTemplate == null
- ? new RoleTO()
- : XMLSerializer.<RoleTO>deserialize(roleTemplate);
- }
-
- public void setRoleTemplate(final RoleTO roleTemplate) {
- this.roleTemplate = XMLSerializer.serialize(roleTemplate);
- }
-
public boolean isPerformCreate() {
return isBooleanAsInteger(performCreate);
}
@@ -148,19 +109,11 @@ public class SyncTask extends SchedTask
this.syncStatus = getBooleanAsInteger(syncStatus);
}
- public boolean isFullReconciliation() {
- return isBooleanAsInteger(fullReconciliation);
- }
-
- public void setFullReconciliation(final boolean fullReconciliation) {
- this.fullReconciliation = getBooleanAsInteger(fullReconciliation);
- }
-
public String getActionsClassName() {
return actionsClassName;
}
- public void setActionsClassName(String actionsClassName) {
+ public void setActionsClassName(final String actionsClassName) {
this.actionsClassName = actionsClassName;
}
}
Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java (from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java&r1=1554763&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java Tue Jan 7 14:33:44 2014
@@ -18,149 +18,17 @@
*/
package org.apache.syncope.core.persistence.beans;
-import javax.persistence.Basic;
import javax.persistence.Entity;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import org.apache.syncope.common.to.RoleTO;
-import org.apache.syncope.common.to.UserTO;
-import org.apache.syncope.core.persistence.validation.entity.SyncTaskCheck;
-import org.apache.syncope.core.util.XMLSerializer;
@Entity
-@SyncTaskCheck
-public class SyncTask extends SchedTask {
+public class PushTask extends AbstractSyncTask {
- private static final long serialVersionUID = -4141057723006682562L;
-
- /**
- * ExternalResource to which the sync happens.
- */
- @ManyToOne
- private ExternalResource resource;
-
- @Lob
- private String userTemplate;
-
- @Lob
- private String roleTemplate;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer performCreate;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer performUpdate;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer performDelete;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer syncStatus;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer fullReconciliation;
-
- private String actionsClassName;
+ private static final long serialVersionUID = -4141057723006682564L;
/**
* Default constructor.
*/
- public SyncTask() {
- super();
-
- super.setJobClassName("org.apache.syncope.core.sync.impl.SyncJob");
- }
-
- @Override
- public void setJobClassName(final String jobClassName) {
- // fixed to SyncJob, cannot be changed
- }
-
- public ExternalResource getResource() {
- return resource;
- }
-
- public void setResource(ExternalResource resource) {
- this.resource = resource;
- }
-
- public UserTO getUserTemplate() {
- return userTemplate == null
- ? new UserTO()
- : XMLSerializer.<UserTO>deserialize(userTemplate);
- }
-
- public void setUserTemplate(final UserTO userTemplate) {
- this.userTemplate = XMLSerializer.serialize(userTemplate);
- }
-
- public RoleTO getRoleTemplate() {
- return userTemplate == null
- ? new RoleTO()
- : XMLSerializer.<RoleTO>deserialize(roleTemplate);
- }
-
- public void setRoleTemplate(final RoleTO roleTemplate) {
- this.roleTemplate = XMLSerializer.serialize(roleTemplate);
- }
-
- public boolean isPerformCreate() {
- return isBooleanAsInteger(performCreate);
- }
-
- public void setPerformCreate(final boolean performCreate) {
- this.performCreate = getBooleanAsInteger(performCreate);
- }
-
- public boolean isPerformUpdate() {
- return isBooleanAsInteger(performUpdate);
- }
-
- public void setPerformUpdate(final boolean performUpdate) {
- this.performUpdate = getBooleanAsInteger(performUpdate);
- }
-
- public boolean isPerformDelete() {
- return isBooleanAsInteger(performDelete);
- }
-
- public void setPerformDelete(boolean performDelete) {
- this.performDelete = getBooleanAsInteger(performDelete);
- }
-
- public boolean isSyncStatus() {
- return isBooleanAsInteger(syncStatus);
- }
-
- public void setSyncStatus(final boolean syncStatus) {
- this.syncStatus = getBooleanAsInteger(syncStatus);
- }
-
- public boolean isFullReconciliation() {
- return isBooleanAsInteger(fullReconciliation);
- }
-
- public void setFullReconciliation(final boolean fullReconciliation) {
- this.fullReconciliation = getBooleanAsInteger(fullReconciliation);
- }
-
- public String getActionsClassName() {
- return actionsClassName;
- }
-
- public void setActionsClassName(String actionsClassName) {
- this.actionsClassName = actionsClassName;
+ public PushTask() {
+ super("org.apache.syncope.core.sync.impl.PushJob");
}
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java Tue Jan 7 14:33:44 2014
@@ -21,25 +21,16 @@ package org.apache.syncope.core.persiste
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import org.apache.syncope.common.to.RoleTO;
import org.apache.syncope.common.to.UserTO;
-import org.apache.syncope.core.persistence.validation.entity.SyncTaskCheck;
import org.apache.syncope.core.util.XMLSerializer;
@Entity
-@SyncTaskCheck
-public class SyncTask extends SchedTask {
+public class SyncTask extends AbstractSyncTask {
- private static final long serialVersionUID = -4141057723006682562L;
-
- /**
- * ExternalResource to which the sync happens.
- */
- @ManyToOne
- private ExternalResource resource;
+ private static final long serialVersionUID = -4141057723006682563L;
@Lob
private String userTemplate;
@@ -50,50 +41,13 @@ public class SyncTask extends SchedTask
@Basic
@Min(0)
@Max(1)
- private Integer performCreate;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer performUpdate;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer performDelete;
-
- @Basic
- @Min(0)
- @Max(1)
- private Integer syncStatus;
-
- @Basic
- @Min(0)
- @Max(1)
private Integer fullReconciliation;
- private String actionsClassName;
-
/**
* Default constructor.
*/
public SyncTask() {
- super();
-
- super.setJobClassName("org.apache.syncope.core.sync.impl.SyncJob");
- }
-
- @Override
- public void setJobClassName(final String jobClassName) {
- // fixed to SyncJob, cannot be changed
- }
-
- public ExternalResource getResource() {
- return resource;
- }
-
- public void setResource(ExternalResource resource) {
- this.resource = resource;
+ super("org.apache.syncope.core.sync.impl.SyncJob");
}
public UserTO getUserTemplate() {
@@ -116,38 +70,6 @@ public class SyncTask extends SchedTask
this.roleTemplate = XMLSerializer.serialize(roleTemplate);
}
- public boolean isPerformCreate() {
- return isBooleanAsInteger(performCreate);
- }
-
- public void setPerformCreate(final boolean performCreate) {
- this.performCreate = getBooleanAsInteger(performCreate);
- }
-
- public boolean isPerformUpdate() {
- return isBooleanAsInteger(performUpdate);
- }
-
- public void setPerformUpdate(final boolean performUpdate) {
- this.performUpdate = getBooleanAsInteger(performUpdate);
- }
-
- public boolean isPerformDelete() {
- return isBooleanAsInteger(performDelete);
- }
-
- public void setPerformDelete(boolean performDelete) {
- this.performDelete = getBooleanAsInteger(performDelete);
- }
-
- public boolean isSyncStatus() {
- return isBooleanAsInteger(syncStatus);
- }
-
- public void setSyncStatus(final boolean syncStatus) {
- this.syncStatus = getBooleanAsInteger(syncStatus);
- }
-
public boolean isFullReconciliation() {
return isBooleanAsInteger(fullReconciliation);
}
@@ -155,12 +77,4 @@ public class SyncTask extends SchedTask
public void setFullReconciliation(final boolean fullReconciliation) {
this.fullReconciliation = getBooleanAsInteger(fullReconciliation);
}
-
- public String getActionsClassName() {
- return actionsClassName;
- }
-
- public void setActionsClassName(String actionsClassName) {
- this.actionsClassName = actionsClassName;
- }
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskDAOImpl.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskDAOImpl.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskDAOImpl.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskDAOImpl.java Tue Jan 7 14:33:44 2014
@@ -25,6 +25,7 @@ import javax.persistence.Query;
import javax.persistence.TypedQuery;
import org.apache.syncope.core.persistence.beans.ExternalResource;
import org.apache.syncope.core.persistence.beans.NotificationTask;
+import org.apache.syncope.core.persistence.beans.PushTask;
import org.apache.syncope.core.persistence.beans.SchedTask;
import org.apache.syncope.core.persistence.beans.SyncTask;
import org.apache.syncope.core.persistence.beans.Task;
@@ -47,7 +48,10 @@ public class TaskDAOImpl extends Abstrac
StringBuilder queryString = new StringBuilder("SELECT e FROM ").append(reference.getSimpleName()).append(" e ");
if (SchedTask.class.equals(reference)) {
queryString.append("WHERE e.id NOT IN (SELECT e.id FROM ").
- append(SyncTask.class.getSimpleName()).append(" e) ");
+ append(SyncTask.class.getSimpleName()).
+ append(" e) AND e.id NOT IN (SELECT e.id FROM ").
+ append(PushTask.class.getSimpleName()).
+ append(" e)");
}
return queryString;
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java Tue Jan 7 14:33:44 2014
@@ -22,10 +22,10 @@ import javax.validation.ConstraintValida
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.types.EntityViolationType;
-import org.apache.syncope.core.persistence.beans.SyncTask;
+import org.apache.syncope.core.persistence.beans.AbstractSyncTask;
import org.apache.syncope.core.sync.SyncActions;
-public class SyncTaskValidator extends AbstractValidator<SyncTaskCheck, SyncTask> {
+public class SyncTaskValidator extends AbstractValidator<SyncTaskCheck, AbstractSyncTask> {
private final SchedTaskValidator schedV;
@@ -36,7 +36,7 @@ public class SyncTaskValidator extends A
}
@Override
- public boolean isValid(final SyncTask object, final ConstraintValidatorContext context) {
+ public boolean isValid(final AbstractSyncTask object, final ConstraintValidatorContext context) {
boolean isValid = schedV.isValid(object, context);
if (isValid) {
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/AbstractPropagationTaskExecutor.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/AbstractPropagationTaskExecutor.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/AbstractPropagationTaskExecutor.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/AbstractPropagationTaskExecutor.java Tue Jan 7 14:33:44 2014
@@ -19,7 +19,6 @@
package org.apache.syncope.core.propagation.impl;
import java.util.ArrayList;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
@@ -138,15 +137,23 @@ public abstract class AbstractPropagatio
return result;
}
- protected void createOrUpdate(final PropagationTask task, final ConnectorObject beforeObj,
- final Connector connector, final Set<String> propagationAttempted) {
+ public static void createOrUpdate(
+ final ObjectClass oclass,
+ final String accountId,
+ final Set<Attribute> attrs,
+ final String resource,
+ final PropagationMode propagationMode,
+ final ConnectorObject beforeObj,
+ final Connector connector,
+ final Set<String> propagationAttempted,
+ final ConnObjectUtil connObjectUtil) {
// set of attributes to be propagated
- final Set<Attribute> attributes = new HashSet<Attribute>(task.getAttributes());
+ final Set<Attribute> attributes = new HashSet<Attribute>(attrs);
// check if there is any missing or null / empty mandatory attribute
List<Object> mandatoryAttrNames = new ArrayList<Object>();
- Attribute mandatoryMissing = AttributeUtil.find(MANDATORY_MISSING_ATTR_NAME, task.getAttributes());
+ Attribute mandatoryMissing = AttributeUtil.find(MANDATORY_MISSING_ATTR_NAME, attrs);
if (mandatoryMissing != null) {
attributes.remove(mandatoryMissing);
@@ -154,7 +161,7 @@ public abstract class AbstractPropagatio
mandatoryAttrNames.addAll(mandatoryMissing.getValue());
}
}
- Attribute mandatoryNullOrEmpty = AttributeUtil.find(MANDATORY_NULL_OR_EMPTY_ATTR_NAME, task.getAttributes());
+ Attribute mandatoryNullOrEmpty = AttributeUtil.find(MANDATORY_NULL_OR_EMPTY_ATTR_NAME, attrs);
if (mandatoryNullOrEmpty != null) {
attributes.remove(mandatoryNullOrEmpty);
@@ -166,30 +173,26 @@ public abstract class AbstractPropagatio
}
if (beforeObj == null) {
- // 1. get accountId
- final String accountId = task.getAccountId();
-
- // 2. get name
+ // 1. get name
final Name name = (Name) AttributeUtil.find(Name.NAME, attributes);
- // 3. check if:
+ // 2. check if:
// * accountId is not blank;
// * accountId is not equal to Name.
if (StringUtils.isNotBlank(accountId) && (name == null || !accountId.equals(name.getNameValue()))) {
- // 3.a retrieve uid
+ // 2.a retrieve uid
final Uid uid = (Uid) AttributeUtil.find(Uid.NAME, attributes);
- // 3.b add Uid if not provided
+ // 2.b add Uid if not provided
if (uid == null) {
attributes.add(AttributeBuilder.build(Uid.NAME, Collections.singleton(accountId)));
}
}
- // 4. provision entry
- LOG.debug("Create {} on {}", attributes, task.getResource().getName());
+ // 3. provision entry
+ LOG.debug("Create {} on {}", attributes, resource);
- connector.create(task.getPropagationMode(), new ObjectClass(task.getObjectClassName()),
- attributes, null, propagationAttempted);
+ connector.create(propagationMode, oclass, attributes, null, propagationAttempted);
} else {
// 1. check if rename is really required
final Name newName = (Name) AttributeUtil.find(Name.NAME, attributes);
@@ -230,14 +233,32 @@ public abstract class AbstractPropagatio
}
// 3. provision entry
- LOG.debug("Update {} on {}", strictlyModified, task.getResource().getName());
+ LOG.debug("Update {} on {}", strictlyModified, resource);
- connector.update(task.getPropagationMode(), beforeObj.getObjectClass(),
+ connector.update(propagationMode, beforeObj.getObjectClass(),
beforeObj.getUid(), strictlyModified, null, propagationAttempted);
}
}
}
+ protected void createOrUpdate(
+ final PropagationTask task,
+ final ConnectorObject beforeObj,
+ final Connector connector,
+ final Set<String> propagationAttempted) {
+
+ createOrUpdate(
+ new ObjectClass(task.getObjectClassName()),
+ task.getAccountId(),
+ task.getAttributes(),
+ task.getResource().getName(),
+ task.getResource().getPropagationMode(),
+ beforeObj,
+ connector,
+ propagationAttempted,
+ connObjectUtil);
+ }
+
protected AbstractAttributable getSubject(final PropagationTask task) {
AbstractAttributable subject = null;
@@ -510,7 +531,7 @@ public abstract class AbstractPropagatio
new ObjectClass(task.getObjectClassName()),
new Uid(accountId),
connector.getOperationOptions(AttributableUtil.getInstance(task.getSubjectType()).
- getMappingItems(task.getResource(), MappingPurpose.PROPAGATION)));
+ getMappingItems(task.getResource(), MappingPurpose.PROPAGATION)));
} catch (TimeoutException toe) {
LOG.debug("Request timeout", toe);
throw toe;
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java Tue Jan 7 14:33:44 2014
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.core.propagation.impl;
-import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -31,11 +30,9 @@ import org.apache.syncope.common.mod.Att
import org.apache.syncope.common.mod.UserMod;
import org.apache.syncope.common.to.AttributeTO;
import org.apache.syncope.common.types.AttributableType;
-import org.apache.syncope.common.types.IntMappingType;
import org.apache.syncope.common.types.MappingPurpose;
import org.apache.syncope.common.types.ResourceOperation;
import org.apache.syncope.core.connid.ConnObjectUtil;
-import org.apache.syncope.core.connid.PasswordGenerator;
import org.apache.syncope.core.persistence.beans.AbstractAttributable;
import org.apache.syncope.core.persistence.beans.AbstractMappingItem;
import org.apache.syncope.core.persistence.beans.AbstractVirAttr;
@@ -54,12 +51,10 @@ import org.apache.syncope.core.rest.data
import org.apache.syncope.core.util.AttributableUtil;
import org.apache.syncope.core.util.JexlUtil;
import org.apache.syncope.core.util.MappingUtil;
-import org.apache.syncope.core.util.VirAttrCache;
import org.apache.syncope.core.workflow.WorkflowResult;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeBuilder;
import org.identityconnectors.framework.common.objects.AttributeUtil;
-import org.identityconnectors.framework.common.objects.OperationalAttributes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -100,15 +95,6 @@ public class PropagationManager {
@Autowired
private ConnObjectUtil connObjectUtil;
- @Autowired
- private PasswordGenerator passwordGenerator;
-
- /**
- * Virtual attribute cache.
- */
- @Autowired
- private VirAttrCache virAttrCache;
-
/**
* Create the user on every associated resource.
*
@@ -496,7 +482,7 @@ public class PropagationManager {
SyncopeRole role = roleDataBinder.getRoleFromId(roleId);
return getDeleteTaskIds(role, role.getResourceNames(), noPropResourceNames);
}
-
+
/**
* Perform delete on each resource associated to the user. It is possible to ask for a mandatory provisioning for
* some resources specifying a set of resource names. Exceptions won't be ignored and the process will be stopped if
@@ -530,85 +516,6 @@ public class PropagationManager {
}
/**
- * Prepare attributes for sending to a connector instance.
- *
- * @param <T> user / role
- * @param attrUtil user / role
- * @param subject given user / role
- * @param password clear-text password
- * @param changePwd whether password should be included for propagation attributes or not
- * @param vAttrsToBeRemoved virtual attributes to be removed
- * @param vAttrsToBeUpdated virtual attributes to be added
- * @param enable whether user must be enabled or not
- * @param resource target resource
- * @return account link + prepared attributes
- */
- protected <T extends AbstractAttributable> Map.Entry<String, Set<Attribute>> prepareAttributes(
- final AttributableUtil attrUtil, final T subject, final String password, final boolean changePwd,
- final Set<String> vAttrsToBeRemoved, final Map<String, AttributeMod> vAttrsToBeUpdated,
- final Boolean enable, final ExternalResource resource) {
-
- LOG.debug("Preparing resource attributes for {} on resource {} with attributes {}",
- subject, resource, subject.getAttrs());
-
- Set<Attribute> attributes = new HashSet<Attribute>();
- String accountId = null;
-
- for (AbstractMappingItem mapping : attrUtil.getMappingItems(resource, MappingPurpose.PROPAGATION)) {
- LOG.debug("Processing schema {}", mapping.getIntAttrName());
-
- try {
- if ((attrUtil.getType() == AttributableType.USER
- && mapping.getIntMappingType() == IntMappingType.UserVirtualSchema)
- || (attrUtil.getType() == AttributableType.ROLE
- && mapping.getIntMappingType() == IntMappingType.RoleVirtualSchema)) {
-
- LOG.debug("Expire entry cache {}-{}", subject.getId(), mapping.getIntAttrName());
- virAttrCache.expire(attrUtil.getType(), subject.getId(), mapping.getIntAttrName());
- }
-
- Map.Entry<String, Attribute> preparedAttribute = MappingUtil.prepareAttribute(
- resource, mapping, subject, password, passwordGenerator, vAttrsToBeRemoved, vAttrsToBeUpdated);
-
- if (preparedAttribute != null && preparedAttribute.getKey() != null) {
- accountId = preparedAttribute.getKey();
- }
-
- if (preparedAttribute != null && preparedAttribute.getValue() != null) {
- Attribute alreadyAdded = AttributeUtil.find(preparedAttribute.getValue().getName(), attributes);
-
- if (alreadyAdded == null) {
- attributes.add(preparedAttribute.getValue());
- } else {
- attributes.remove(alreadyAdded);
-
- Set<Object> values = new HashSet<Object>(alreadyAdded.getValue());
- values.addAll(preparedAttribute.getValue().getValue());
-
- attributes.add(AttributeBuilder.build(preparedAttribute.getValue().getName(), values));
- }
- }
- } catch (Exception e) {
- LOG.debug("Attribute '{}' processing failed", mapping.getIntAttrName(), e);
- }
- }
-
- attributes.add(MappingUtil.evaluateNAME(subject, resource, accountId));
-
- if (enable != null) {
- attributes.add(AttributeBuilder.buildEnabled(enable));
- }
- if (!changePwd) {
- Attribute pwdAttr = AttributeUtil.find(OperationalAttributes.PASSWORD_NAME, attributes);
- if (pwdAttr != null) {
- attributes.remove(pwdAttr);
- }
- }
-
- return new SimpleEntry<String, Set<Attribute>>(accountId, attributes);
- }
-
- /**
* Create propagation tasks.
*
* @param <T> user / role
@@ -675,7 +582,7 @@ public class PropagationManager {
task.setPropagationMode(resource.getPropagationMode());
task.setOldAccountId(propByRes.getOldAccountId(resource.getName()));
- Map.Entry<String, Set<Attribute>> preparedAttrs = prepareAttributes(attrUtil, subject,
+ Map.Entry<String, Set<Attribute>> preparedAttrs = MappingUtil.prepareAttributes(attrUtil, subject,
password, changePwd, vAttrsToBeRemoved, vAttrsToBeUpdated, enable, resource);
task.setAccountId(preparedAttrs.getKey());
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/quartz/AbstractTaskJob.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/quartz/AbstractTaskJob.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/quartz/AbstractTaskJob.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/quartz/AbstractTaskJob.java Tue Jan 7 14:33:44 2014
@@ -137,7 +137,6 @@ public abstract class AbstractTaskJob im
if (hasToBeRegistered(execution)) {
taskExecDAO.saveAndAdd(taskId, execution);
}
-
task = taskDAO.save(task);
notificationManager.createTasks(
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java Tue Jan 7 14:33:44 2014
@@ -242,25 +242,31 @@ public class LoggerController extends Ab
events.add(new EventCategoryTO(EventCategoryType.PROPAGATION));
events.add(new EventCategoryTO(EventCategoryType.SYNCHRONIZATION));
+ events.add(new EventCategoryTO(EventCategoryType.PUSH));
for (AttributableType attributableType : AttributableType.values()) {
for (ExternalResource resource : resourceDAO.findAll()) {
final EventCategoryTO propEventCategoryTO = new EventCategoryTO(EventCategoryType.PROPAGATION);
final EventCategoryTO syncEventCategoryTO = new EventCategoryTO(EventCategoryType.SYNCHRONIZATION);
+ final EventCategoryTO pushEventCategoryTO = new EventCategoryTO(EventCategoryType.PUSH);
propEventCategoryTO.setCategory(attributableType.name().toLowerCase());
propEventCategoryTO.setSubcategory(resource.getName());
syncEventCategoryTO.setCategory(attributableType.name().toLowerCase());
+ pushEventCategoryTO.setCategory(attributableType.name().toLowerCase());
syncEventCategoryTO.setSubcategory(resource.getName());
+ pushEventCategoryTO.setSubcategory(resource.getName());
for (ResourceOperation resourceOperation : ResourceOperation.values()) {
propEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase());
syncEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase());
+ pushEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase());
}
events.add(propEventCategoryTO);
events.add(syncEventCategoryTO);
+ events.add(pushEventCategoryTO);
}
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/TaskController.java Tue Jan 7 14:33:44 2014
@@ -167,6 +167,11 @@ public class TaskController extends Abst
return classNamesLoader.getClassNames(ImplementationClassNamesLoader.Type.SYNC_ACTIONS);
}
+ @PreAuthorize("hasRole('TASK_LIST')")
+ public Set<String> getPushActionsClasses() {
+ return classNamesLoader.getClassNames(ImplementationClassNamesLoader.Type.PUSH_ACTIONS);
+ }
+
@PreAuthorize("hasRole('TASK_READ')")
public <T extends AbstractTaskTO> T read(final Long taskId) {
Task task = taskDAO.find(taskId);
@@ -207,6 +212,7 @@ public class TaskController extends Abst
case SCHEDULED:
case SYNCHRONIZATION:
+ case PUSH:
try {
jobInstanceLoader.registerJob(task,
((SchedTask) task).getJobClassName(),
@@ -291,7 +297,9 @@ public class TaskController extends Abst
T taskToDelete = binder.getTaskTO(task, taskUtil);
- if (TaskType.SCHEDULED == taskUtil.getType() || TaskType.SYNCHRONIZATION == taskUtil.getType()) {
+ if (TaskType.SCHEDULED == taskUtil.getType()
+ || TaskType.SYNCHRONIZATION == taskUtil.getType()
+ || TaskType.PUSH == taskUtil.getType()) {
jobInstanceLoader.unregisterJob(task);
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java Tue Jan 7 14:33:44 2014
@@ -33,7 +33,9 @@ import org.apache.syncope.common.types.C
import org.apache.syncope.common.types.TaskType;
import org.apache.syncope.common.util.BeanUtils;
import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.AbstractSyncTaskTO;
import org.apache.syncope.core.init.JobInstanceLoader;
+import org.apache.syncope.core.persistence.beans.AbstractSyncTask;
import org.apache.syncope.core.persistence.beans.ExternalResource;
import org.apache.syncope.core.persistence.beans.NotificationTask;
import org.apache.syncope.core.persistence.beans.PropagationTask;
@@ -64,9 +66,9 @@ public class TaskDataBinder {
*/
private static final Logger LOG = LoggerFactory.getLogger(TaskDataBinder.class);
- private static final String[] IGNORE_TASK_PROPERTIES = {"executions", "resource",};
+ private static final String[] IGNORE_TASK_PROPERTIES = { "executions", "resource", };
- private static final String[] IGNORE_TASK_EXECUTION_PROPERTIES = {"id", "task"};
+ private static final String[] IGNORE_TASK_EXECUTION_PROPERTIES = { "id", "task" };
@Autowired
private ResourceDAO resourceDAO;
@@ -91,54 +93,69 @@ public class TaskDataBinder {
}
}
- private void fill(final SyncTask task, final SyncTaskTO taskTO) {
+ private void fill(final AbstractSyncTask task, final AbstractSyncTaskTO taskTO) {
SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidSyncTask);
- // 1. validate JEXL expressions in user and role templates
- if (taskTO.getUserTemplate() != null) {
- UserTO template = taskTO.getUserTemplate();
+ if (task instanceof SyncTask && taskTO instanceof SyncTaskTO) {
+ final SyncTask syncTask = (SyncTask) task;
+ final SyncTaskTO syncTaskTO = (SyncTaskTO) taskTO;
+
+ // 1. validate JEXL expressions in user and role templates
+ if (syncTaskTO.getUserTemplate() != null) {
+ UserTO template = syncTaskTO.getUserTemplate();
+
+ if (StringUtils.isNotBlank(template.getUsername()) && !JexlUtil.
+ isExpressionValid(template.getUsername())) {
+ sce.getElements().add("Invalid JEXL: " + template.getUsername());
+ }
+ if (StringUtils.isNotBlank(template.getPassword()) && !JexlUtil.
+ isExpressionValid(template.getPassword())) {
+ sce.getElements().add("Invalid JEXL: " + template.getPassword());
+ }
- if (StringUtils.isNotBlank(template.getUsername()) && !JexlUtil.isExpressionValid(template.getUsername())) {
- sce.getElements().add("Invalid JEXL: " + template.getUsername());
- }
- if (StringUtils.isNotBlank(template.getPassword()) && !JexlUtil.isExpressionValid(template.getPassword())) {
- sce.getElements().add("Invalid JEXL: " + template.getPassword());
+ checkJexl(template, sce);
+
+ for (MembershipTO memb : template.getMemberships()) {
+ checkJexl(memb, sce);
+ }
}
+ if (syncTaskTO.getRoleTemplate() != null) {
+ RoleTO template = syncTaskTO.getRoleTemplate();
- checkJexl(template, sce);
+ if (StringUtils.isNotBlank(template.getName()) && !JexlUtil.isExpressionValid(template.getName())) {
+ sce.getElements().add("Invalid JEXL: " + template.getName());
+ }
- for (MembershipTO memb : template.getMemberships()) {
- checkJexl(memb, sce);
+ checkJexl(template, sce);
}
- }
- if (taskTO.getRoleTemplate() != null) {
- RoleTO template = taskTO.getRoleTemplate();
-
- if (StringUtils.isNotBlank(template.getName()) && !JexlUtil.isExpressionValid(template.getName())) {
- sce.getElements().add("Invalid JEXL: " + template.getName());
+ if (!sce.isEmpty()) {
+ throw sce;
}
- checkJexl(template, sce);
- }
- if (!sce.isEmpty()) {
- throw sce;
- }
+ // 2. all JEXL expressions are valid: accept user and role templates
+ syncTask.setUserTemplate(syncTaskTO.getUserTemplate());
+ syncTask.setRoleTemplate(syncTaskTO.getRoleTemplate());
- // 2. all JEXL expressions are valid: accept user and role templates
- task.setUserTemplate(taskTO.getUserTemplate());
- task.setRoleTemplate(taskTO.getRoleTemplate());
+ syncTask.setFullReconciliation(syncTaskTO.isFullReconciliation());
+ }
// 3. fill the remaining fields
task.setPerformCreate(taskTO.isPerformCreate());
task.setPerformUpdate(taskTO.isPerformUpdate());
task.setPerformDelete(taskTO.isPerformDelete());
task.setSyncStatus(taskTO.isSyncStatus());
- task.setFullReconciliation(taskTO.isFullReconciliation());
task.setActionsClassName(taskTO.getActionsClassName());
}
public SchedTask createSchedTask(final SchedTaskTO taskTO, final TaskUtil taskUtil) {
+ final Class<?> taskTOClass = taskUtil.taskTOClass();
+
+ if (taskTOClass == null || !taskTOClass.equals(taskTO.getClass())) {
+ throw new ClassCastException(
+ String.format("taskUtil is type %s but task is not: %s", taskTOClass, taskTO.getClass()));
+ }
+
SchedTask task = taskUtil.newTask();
task.setCronExpression(taskTO.getCronExpression());
task.setName(taskTO.getName());
@@ -146,13 +163,8 @@ public class TaskDataBinder {
if (taskUtil.getType() == TaskType.SCHEDULED) {
task.setJobClassName(taskTO.getJobClassName());
- }
- if (taskUtil.getType() == TaskType.SYNCHRONIZATION) {
- if (!(taskTO instanceof SyncTaskTO)) {
- throw new ClassCastException("taskUtil is type SyncTask but taskTO is not SyncTaskTO: " + taskTO.
- getClass().getName());
- }
- SyncTaskTO syncTaskTO = (SyncTaskTO) taskTO;
+ } else if (taskTO instanceof AbstractSyncTaskTO) {
+ final AbstractSyncTaskTO syncTaskTO = (AbstractSyncTaskTO) taskTO;
ExternalResource resource = resourceDAO.find(syncTaskTO.getResource());
if (resource == null) {
@@ -160,13 +172,26 @@ public class TaskDataBinder {
}
((SyncTask) task).setResource(resource);
- fill((SyncTask) task, syncTaskTO);
+ fill((AbstractSyncTask) task, syncTaskTO);
}
return task;
}
public void updateSchedTask(final SchedTask task, final SchedTaskTO taskTO, final TaskUtil taskUtil) {
+ Class<?> taskClass = taskUtil.taskClass();
+ Class<?> taskTOClass = taskUtil.taskTOClass();
+
+ if (taskClass == null || !taskClass.equals(task.getClass())) {
+ throw new ClassCastException(
+ String.format("taskUtil is type %s but task is not: %s", taskClass, task.getClass()));
+ }
+
+ if (taskTOClass == null || !taskTOClass.equals(taskTO.getClass())) {
+ throw new ClassCastException(
+ String.format("taskUtil is type %s but task is not: %s", taskTOClass, taskTO.getClass()));
+ }
+
task.setCronExpression(taskTO.getCronExpression());
if (StringUtils.isNotBlank(taskTO.getName())) {
task.setName(taskTO.getName());
@@ -175,17 +200,8 @@ public class TaskDataBinder {
task.setDescription(taskTO.getDescription());
}
- if (taskUtil.getType() == TaskType.SYNCHRONIZATION) {
- if (!(task instanceof SyncTask)) {
- throw new ClassCastException("taskUtil is type SyncTask but task is not SyncTask: " + task.getClass().
- getName());
- }
- if (!(taskTO instanceof SyncTaskTO)) {
- throw new ClassCastException("taskUtil is type SyncTask but taskTO is not SyncTaskTO: " + taskTO.
- getClass().getName());
- }
-
- fill((SyncTask) task, (SyncTaskTO) taskTO);
+ if (task instanceof AbstractSyncTask) {
+ fill((AbstractSyncTask) task, (AbstractSyncTaskTO) taskTO);
}
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/services/TaskServiceImpl.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/services/TaskServiceImpl.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/services/TaskServiceImpl.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/services/TaskServiceImpl.java Tue Jan 7 14:33:44 2014
@@ -37,6 +37,7 @@ import org.apache.syncope.common.types.R
import org.apache.syncope.common.types.PropagationTaskExecStatus;
import org.apache.syncope.common.types.TaskType;
import org.apache.syncope.common.util.CollectionWrapper;
+import org.apache.syncope.common.wrap.PushActionClass;
import org.apache.syncope.core.persistence.dao.search.OrderByClause;
import org.apache.syncope.core.rest.controller.TaskController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -89,6 +90,11 @@ public class TaskServiceImpl extends Abs
}
@Override
+ public List<PushActionClass> getPushActionsClasses() {
+ return CollectionWrapper.wrap(controller.getPushActionsClasses(), PushActionClass.class);
+ }
+
+ @Override
public <T extends AbstractTaskTO> PagedResult<T> list(final TaskType taskType) {
return list(taskType, DEFAULT_PARAM_PAGE_VALUE, DEFAULT_PARAM_SIZE_VALUE, null);
}
Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/AbstractSyncActions.java (from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/AbstractSyncActions.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/AbstractSyncActions.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java&r1=1554763&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/AbstractSyncActions.java Tue Jan 7 14:33:44 2014
@@ -19,17 +19,10 @@
package org.apache.syncope.core.sync;
import java.util.List;
-
-import org.apache.syncope.common.mod.AbstractAttributableMod;
-import org.apache.syncope.common.to.AbstractAttributableTO;
-import org.identityconnectors.framework.common.objects.SyncDelta;
-import org.identityconnectors.framework.common.objects.SyncResultsHandler;
+import org.apache.syncope.core.sync.impl.AbstractSyncopeResultHandler;
import org.quartz.JobExecutionException;
-/**
- * Interface for actions to be performed during SyncJob execution.
- */
-public interface SyncActions {
+public interface AbstractSyncActions<T extends AbstractSyncopeResultHandler> {
/**
* Action to be executed before to start the synchronization task execution.
@@ -37,57 +30,7 @@ public interface SyncActions {
* @param handler synchronization handler being executed.
* @throws JobExecutionException in case of generic failure.
*/
- void beforeAll(final SyncResultsHandler handler) throws JobExecutionException;
-
- /**
- * Action to be executed before to create a synchronized user locally.
- *
- * @param handler synchronization handler being executed.
- * @param delta retrieved synchronization information
- * @param subject user / role to be created
- * @return synchronization information used for user status evaluation and to be passed to the 'after' method.
- * @throws JobExecutionException in case of generic failure
- */
- <T extends AbstractAttributableTO> SyncDelta beforeCreate(final SyncResultsHandler handler,
- final SyncDelta delta, final T subject) throws JobExecutionException;
-
- /**
- * Action to be executed before to update a synchronized user locally.
- *
- * @param handler synchronization handler being executed.
- * @param delta retrieved synchronization information
- * @param subject local user / role information
- * @param subjectMod modification
- * @return synchronization information used for logging and to be passed to the 'after' method.
- * @throws JobExecutionException in case of generic failure.
- */
- <T extends AbstractAttributableTO, K extends AbstractAttributableMod> SyncDelta beforeUpdate(
- final SyncResultsHandler handler, final SyncDelta delta, final T subject, final K subjectMod)
- throws JobExecutionException;
-
- /**
- * Action to be executed before to delete a synchronized user locally.
- *
- * @param handler synchronization handler being executed.
- * @param delta retrieved synchronization information
- * @param subject lcao user / role to be deleted
- * @return synchronization information used for logging and to be passed to the 'after' method.
- * @throws JobExecutionException in case of generic failure
- */
- <T extends AbstractAttributableTO> SyncDelta beforeDelete(final SyncResultsHandler handler,
- final SyncDelta delta, final T subject) throws JobExecutionException;
-
- /**
- * Action to be executed after each local user synchronization.
- *
- * @param handler synchronization handler being executed.
- * @param delta retrieved synchronization information (may be modified by 'beforeCreate/beforeUpdate/beforeDelete')
- * @param subject synchronized local user / role
- * @param result global synchronization results at the current synchronization step
- * @throws JobExecutionException in case of generic failure
- */
- <T extends AbstractAttributableTO> void after(final SyncResultsHandler handler, final SyncDelta delta,
- final T subject, final SyncResult result) throws JobExecutionException;
+ void beforeAll(final T handler) throws JobExecutionException;
/**
* Action to be executed after the synchronization task completion.
@@ -96,5 +39,5 @@ public interface SyncActions {
* @param results synchronization result
* @throws JobExecutionException in case of generic failure
*/
- void afterAll(final SyncResultsHandler handler, final List<SyncResult> results) throws JobExecutionException;
+ void afterAll(final T handler, final List<SyncResult> results) throws JobExecutionException;
}
Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultPushActions.java (from r1554763, syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultPushActions.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultPushActions.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java&r1=1554763&r2=1556227&rev=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultPushActions.java Tue Jan 7 14:33:44 2014
@@ -19,51 +19,51 @@
package org.apache.syncope.core.sync;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
-import org.apache.syncope.common.mod.AbstractAttributableMod;
-import org.apache.syncope.common.to.AbstractAttributableTO;
-import org.identityconnectors.framework.common.objects.SyncDelta;
-import org.identityconnectors.framework.common.objects.SyncResultsHandler;
+import org.apache.syncope.core.persistence.beans.AbstractAttributable;
+import org.apache.syncope.core.sync.impl.AbstractSyncopeResultHandler;
+import org.identityconnectors.framework.common.objects.Attribute;
import org.quartz.JobExecutionException;
/**
- * Default (empty) implementation of SyncActions.
+ * Default (empty) implementation of PushActions.
*/
-public class DefaultSyncActions implements SyncActions {
+public class DefaultPushActions implements PushActions {
@Override
- public void beforeAll(final SyncResultsHandler handler) throws JobExecutionException {
+ public void beforeAll(final AbstractSyncopeResultHandler handler) throws JobExecutionException {
}
@Override
- public <T extends AbstractAttributableTO> SyncDelta beforeCreate(final SyncResultsHandler handler,
- final SyncDelta delta, final T subject) throws JobExecutionException {
-
- return delta;
- }
-
- @Override
- public <T extends AbstractAttributableTO, K extends AbstractAttributableMod> SyncDelta beforeUpdate(
- final SyncResultsHandler handler, final SyncDelta delta, final T subject, final K subjectMod)
- throws JobExecutionException {
-
+ public <T extends AbstractAttributable> Map.Entry<String, Set<Attribute>> beforeCreate(
+ final AbstractSyncopeResultHandler handler,
+ final T subject,
+ final Map.Entry<String, Set<Attribute>> delta) throws JobExecutionException {
return delta;
}
@Override
- public <T extends AbstractAttributableTO> SyncDelta beforeDelete(
- final SyncResultsHandler handler, final SyncDelta delta, final T subject) throws JobExecutionException {
+ public <T extends AbstractAttributable> Map.Entry<String, Set<Attribute>> beforeUpdate(
+ final AbstractSyncopeResultHandler handler,
+ final T subject,
+ final Map.Entry<String, Set<Attribute>> delta) throws JobExecutionException {
return delta;
}
@Override
- public <T extends AbstractAttributableTO> void after(final SyncResultsHandler handler,
- final SyncDelta delta, final T subject, final SyncResult result) throws JobExecutionException {
+ public <T extends AbstractAttributable> void after(
+ final AbstractSyncopeResultHandler handler,
+ final T subject,
+ final Map.Entry<String, Set<Attribute>> delta, SyncResult result) throws JobExecutionException {
}
@Override
- public void afterAll(final SyncResultsHandler handler, final List<SyncResult> results)
+ public void afterAll(
+ final AbstractSyncopeResultHandler handler,
+ final List<SyncResult> results)
throws JobExecutionException {
}
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java?rev=1556227&r1=1556226&r2=1556227&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java Tue Jan 7 14:33:44 2014
@@ -22,8 +22,8 @@ import java.util.List;
import org.apache.syncope.common.mod.AbstractAttributableMod;
import org.apache.syncope.common.to.AbstractAttributableTO;
+import org.apache.syncope.core.sync.impl.AbstractSyncopeSyncResultHandler;
import org.identityconnectors.framework.common.objects.SyncDelta;
-import org.identityconnectors.framework.common.objects.SyncResultsHandler;
import org.quartz.JobExecutionException;
/**
@@ -32,19 +32,24 @@ import org.quartz.JobExecutionException;
public class DefaultSyncActions implements SyncActions {
@Override
- public void beforeAll(final SyncResultsHandler handler) throws JobExecutionException {
+ public void beforeAll(final AbstractSyncopeSyncResultHandler handler) throws JobExecutionException {
}
@Override
- public <T extends AbstractAttributableTO> SyncDelta beforeCreate(final SyncResultsHandler handler,
- final SyncDelta delta, final T subject) throws JobExecutionException {
+ public <T extends AbstractAttributableTO> SyncDelta beforeCreate(
+ final AbstractSyncopeSyncResultHandler handler,
+ final SyncDelta delta,
+ final T subject) throws JobExecutionException {
return delta;
}
@Override
public <T extends AbstractAttributableTO, K extends AbstractAttributableMod> SyncDelta beforeUpdate(
- final SyncResultsHandler handler, final SyncDelta delta, final T subject, final K subjectMod)
+ final AbstractSyncopeSyncResultHandler handler,
+ final SyncDelta delta,
+ final T subject,
+ final K subjectMod)
throws JobExecutionException {
return delta;
@@ -52,18 +57,25 @@ public class DefaultSyncActions implemen
@Override
public <T extends AbstractAttributableTO> SyncDelta beforeDelete(
- final SyncResultsHandler handler, final SyncDelta delta, final T subject) throws JobExecutionException {
+ final AbstractSyncopeSyncResultHandler handler,
+ final SyncDelta delta,
+ final T subject) throws JobExecutionException {
return delta;
}
@Override
- public <T extends AbstractAttributableTO> void after(final SyncResultsHandler handler,
- final SyncDelta delta, final T subject, final SyncResult result) throws JobExecutionException {
+ public <T extends AbstractAttributableTO> void after(
+ final AbstractSyncopeSyncResultHandler handler,
+ final SyncDelta delta,
+ final T subject,
+ final SyncResult result) throws JobExecutionException {
}
@Override
- public void afterAll(final SyncResultsHandler handler, final List<SyncResult> results)
+ public void afterAll(
+ final AbstractSyncopeSyncResultHandler handler,
+ final List<SyncResult> results)
throws JobExecutionException {
}
}