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 2015/01/05 14:34:06 UTC

[01/53] [abbrv] syncope git commit: Initial running version, in order to fix #1

Repository: syncope
Updated Branches:
  refs/heads/2_0_X a76be555c -> f6d48fd9e
  refs/heads/master 1d58c5006 -> a90a48ad5


http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
new file mode 100644
index 0000000..c7ac19a
--- /dev/null
+++ b/core/src/main/resources/camelRoute.xml
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://camel.apache.org/schema/spring
+                           http://camel.apache.org/schema/spring/camel-spring.xsd">
+ 
+    <!--
+        The default routes define each task involved in user creation:
+        main operations consist in user workflow creation and its propagation.         
+    -->
+    <routeContext id="defaultRoutes" xmlns="http://camel.apache.org/schema/spring">    
+        
+        <!--
+            CREATE USER
+            This is the entry point of the route and is involved in accepting
+            the UserTO. When it arrives, the user workflow is created. If the
+            creation is successfull, the result is sent to propagation, otherwise
+            if an exception was raised, the exception has to be returned to the
+            caller. The property actual allows to store the received UserTO in
+            order to use it later.
+        -->
+        
+        <route id="createUser">
+          <from uri="direct:createUser"/>
+          <setProperty propertyName="actual">
+            <simple>${body}</simple>
+          </setProperty>
+          <doTry>
+            <bean ref="uwfAdapter" method="create(${body},${property.disablePwdPolicyCheck},
+                                 ${property.enabled},${property.storePassword})"/>
+            <process ref="defaultUserCreatePropagation" />
+            <to uri="direct:createPort"/>
+            <doCatch>        
+                <exception>java.lang.RuntimeException</exception>
+                <handled>
+                    <constant>false</constant>
+                </handled>
+                <to uri="direct:createPort"/>
+            </doCatch>
+          </doTry>
+        </route> 
+        
+        <!--
+            The propagation route deals with propagation of created user. In this
+            case we used a custom processor to perform this task: it means that
+            a custom java class contains the propagation strategy.
+        -->
+       
+        <!--
+            UPDATE USER
+        -->
+        <route id="updateUser">
+            <from uri="direct:updateUser"/>
+            <setProperty propertyName="actual">
+                <simple>${body}</simple>
+            </setProperty>
+            <doTry>
+              <bean ref="uwfAdapter" method="update(${body})"/>
+              <process ref="defaultUserUpdatePropagation" />
+              <to uri="direct:updatePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:updatePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+
+                
+        <!--
+            UPDATE SYNC USER
+        -->
+        <route id="updateSyncUser">
+            <from uri="direct:updateSyncUser"/>            
+            <doTry>
+              <bean ref="uwfAdapter" method="update(${body})"/>
+              <to uri="direct:syncUserStatus"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:updateSyncPort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+        <route id="syncUserStatus">
+            <from uri="direct:syncUserStatus"/>
+                <process ref="userStatusOnSync" />
+                <process ref="defaultUserUpdateSyncPropagation" />
+            <to uri="direct:updateSyncPort"/>
+        </route>
+        <!--
+            DELETE USER
+        -->
+        <route id="deleteUser">
+            <from uri="direct:deleteUser"/>
+            <doTry>
+              <process ref="defaultUserDeletePropagation" />
+              <bean ref="uwfAdapter" method="delete(${body})"/>
+              <setBody>
+                  <simple>${property.statuses}</simple>
+              </setBody>
+              <to uri="direct:deletePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:deletePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+        <!-- 
+            UNLINK USER
+        -->
+        <route id="unlinkUser">
+            <from uri="direct:unlinkUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult.getKey}</simple>
+                </setBody>
+                <to uri="direct:unlinkPort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:unlinkPort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!--
+            LINK USER
+        -->
+        
+        <route id="linkUser">
+            <from uri="direct:linkUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult.getKey}</simple>
+                </setBody>
+                <to uri="direct:linkPort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:linkPort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!-- 
+            ACTIVATE USER
+        -->
+        <route id="activateUser">
+            <from uri="direct:activateUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
+                <to uri="direct:statusUser"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:statusPort"/>
+                </doCatch>
+            </doTry>    
+        </route>
+        <!-- 
+            REACTIVATE USER
+        -->
+        <route id="reactivateUser">
+            <from uri="direct:reactivateUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="reactivate(${body})"/>
+                <to uri="direct:statusUser"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:statusPort"/>
+                </doCatch>
+            </doTry>    
+        </route>
+        <!-- 
+            SUSPEND USER
+        -->
+        <route id="suspendUser">
+            <from uri="direct:suspendUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="suspend(${body})"/>
+                <to uri="direct:statusUser"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:statusPort"/>
+                </doCatch>
+            </doTry>  
+        </route>
+        
+        <!-- 
+            STATUS PROPAGATION
+        -->
+        
+        <route id="statusUser">
+            <from uri="direct:statusUser"/>            
+              <process ref="defaultUserStatusPropagation" />
+            <to uri="direct:statusPort"/>              
+        </route>
+        
+        
+        <!--
+            DEPROVISION USER
+        -->
+        <route id="deprovisionUser">
+            <from uri="direct:deprovisionUser"/>            
+              <process ref="defaultUserDeprovisionPropagation" />
+              <to uri="direct:deprovisionPort"/>              
+        </route>
+        
+        <!--
+            CREATE ROLE
+        -->
+        
+        <route id="createRole">
+          <from uri="direct:createRole"/>
+          <setProperty propertyName="subject">
+            <simple>${body}</simple>
+          </setProperty>
+          <doTry>
+            <bean ref="rwfAdapter" method="create(${body})"/>
+            <process ref="defaultRoleCreatePropagation" />
+            <to uri="direct:createRolePort"/>
+            <doCatch>        
+                <exception>java.lang.RuntimeException</exception>
+                <handled>
+                    <constant>false</constant>
+                </handled>
+                <to uri="direct:createRolePort"/>
+            </doCatch>
+          </doTry>
+        </route> 
+               
+        <!--
+            CREATE ROLE SYNC
+        -->
+        <route id="createRoleSync">
+          <from uri="direct:createRoleSync"/>
+          <setProperty propertyName="subject">
+            <simple>${body}</simple>
+          </setProperty>
+          <doTry>
+            <bean ref="rwfAdapter" method="create(${body})"/>
+            <process ref="defaultRoleCreateSyncPropagation" />
+            <to uri="direct:createRoleSyncPort"/>
+            <doCatch>        
+                <exception>java.lang.RuntimeException</exception>
+                <handled>
+                    <constant>false</constant>
+                </handled>
+                <to uri="direct:createRoleSyncPort"/>
+            </doCatch>
+          </doTry>
+        </route> 
+        
+         
+        <!--
+            UPDATE ROLE
+        -->
+        <route id="updateRole">
+            <from uri="direct:updateRole"/>
+            <setProperty propertyName="subjectMod">
+                <simple>${body}</simple>
+            </setProperty>
+            <doTry>
+              <bean ref="rwfAdapter" method="update(${body})"/>
+              <process ref="defaultRoleUpdatePropagation" />
+              <to uri="direct:updateRolePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:updateRolePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+               
+        <!--
+            DELETE ROLE
+        -->
+        <route id="deleteRole">
+            <from uri="direct:deleteRole"/>
+            <doTry>
+              <process ref="defaultRoleDeletePropagation" />
+              <bean ref="rwfAdapter" method="delete(${body})"/>
+              <setBody>
+                  <simple>${property.statuses}</simple>
+              </setBody>
+              <to uri="direct:deleteRolePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:deleteRolePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+        <!-- 
+            UNLINK USER
+        -->
+        <route id="unlinkRole">
+            <from uri="direct:unlinkRole"/>
+            <doTry>
+                <bean ref="rwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult}</simple>
+                </setBody>
+                <to uri="direct:unlinkRolePort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:unlinkRolePort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!--
+            LINK USER
+        -->
+        
+        <route id="linkRole">
+            <from uri="direct:linkRole"/>
+            <doTry>
+                <bean ref="rwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult}</simple>
+                </setBody>
+                <to uri="direct:linkRolePort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:linkRolePort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!--
+            DEPROVISION ROLE
+        -->
+        <route id="deprovisionRole">
+            <from uri="direct:deprovisionRole"/>            
+              <process ref="defaultRoleDeprovisionPropagation" />
+              <to uri="direct:deprovisionRolePort"/>              
+        </route>
+        
+        <!--
+            SUSPEND USER AFTER POLICY VIOLATION
+        -->
+        
+        <route id="suspendUserWF">
+            <from uri="direct:suspendUserWF"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="suspend(${body})"/>
+                <process ref="defaultUserWFSuspendPropagation"/>
+                <to uri="direct:suspendWFPort"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:suspendWFPort"/>
+                </doCatch>
+            </doTry>  
+        </route>
+        
+    </routeContext>
+    <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
+    <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
+    <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
+    <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
+    <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
+    <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
+    <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
+    <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+    <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
+    <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
+    <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
+    <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
+    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>    
+</beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/resources/content.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/content.xml b/core/src/main/resources/content.xml
index 827e6c9..683ce46 100644
--- a/core/src/main/resources/content.xml
+++ b/core/src/main/resources/content.xml
@@ -179,5 +179,8 @@ under the License.
   <Entitlement name="SECURITY_QUESTION_CREATE"/>
   <Entitlement name="SECURITY_QUESTION_UPDATE"/>
   <Entitlement name="SECURITY_QUESTION_DELETE"/>
+  <Entitlement name="ROUTE_UPDATE"/>
+  <Entitlement name="ROUTE_LIST"/>
+  <Entitlement name="ROUTE_READ"/>
 
 </dataset>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index 9b12622..da55cfc 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -20,13 +20,16 @@ under the License.
 <beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:task="http://www.springframework.org/schema/task"
+       xmlns:camel="http://camel.apache.org/schema/spring"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context.xsd
                            http://www.springframework.org/schema/task
-                           http://www.springframework.org/schema/task/spring-task.xsd">
+                           http://www.springframework.org/schema/task/spring-task.xsd
+                           http://camel.apache.org/schema/spring
+                           http://camel.apache.org/schema/spring/camel-spring.xsd">
 
   <bean id="confDirectoryPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="order" value="1"/>
@@ -72,6 +75,9 @@ under the License.
   <context:component-scan base-package="org.apache.syncope.core.workflow">
     <context:exclude-filter type="regex" expression=".*\.activiti\..*"/>
   </context:component-scan>
+  
+  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager"/>
+  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager"/>
 
   <bean id="nonJPAdbInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
     <property name="dataSource" ref="dataSource"/>
@@ -145,4 +151,22 @@ under the License.
     <constructor-arg value="60"/>
     <constructor-arg value="5000"/>
   </bean>
+  <!-- Camel Context Definition -->
+  <bean id="syncopeCamelContextFactory" class="org.apache.syncope.core.provisioning.camel.SyncopeCamelContext"/>
+    
+    <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
+    <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
+    <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
+    <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
+    <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
+    <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
+    <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
+    <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+    <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
+    <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
+    <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
+    <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
+    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>    
+
+    <bean id="routeController" class="org.apache.syncope.core.rest.controller.RouteController"/>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/resources/roleRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/roleRoute.xml b/core/src/main/resources/roleRoute.xml
new file mode 100644
index 0000000..80ff595
--- /dev/null
+++ b/core/src/main/resources/roleRoute.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://camel.apache.org/schema/spring
+                           http://camel.apache.org/schema/spring/camel-spring.xsd">
+ 
+    <!--
+        The default routes define each task involved in user creation:
+        main operations consist in user workflow creation and its propagation.         
+    -->
+    <routeContext id="defaultRoleRoutes" xmlns="http://camel.apache.org/schema/spring"> 
+<!--
+            CREATE ROLE
+        -->
+        
+        <route id="createRole">
+          <from uri="direct:createRole"/>
+          <setProperty propertyName="subject">
+            <simple>${body}</simple>
+          </setProperty>
+          <doTry>
+            <bean ref="rwfAdapter" method="create(${body})"/>
+            <process ref="defaultRoleCreatePropagation" />
+            <to uri="direct:createRolePort"/>
+            <doCatch>        
+                <exception>java.lang.RuntimeException</exception>
+                <handled>
+                    <constant>false</constant>
+                </handled>
+                <to uri="direct:createRolePort"/>
+            </doCatch>
+          </doTry>
+        </route> 
+               
+        <!--
+            CREATE ROLE SYNC
+        -->
+        <route id="createRoleSync">
+          <from uri="direct:createRoleSync"/>
+          <setProperty propertyName="subject">
+            <simple>${body}</simple>
+          </setProperty>
+          <doTry>
+            <bean ref="rwfAdapter" method="create(${body})"/>
+            <process ref="defaultRoleCreateSyncPropagation" />
+            <to uri="direct:createRoleSyncPort"/>
+            <doCatch>        
+                <exception>java.lang.RuntimeException</exception>
+                <handled>
+                    <constant>false</constant>
+                </handled>
+                <to uri="direct:createRoleSyncPort"/>
+            </doCatch>
+          </doTry>
+        </route> 
+        
+         
+        <!--
+            UPDATE ROLE
+        -->
+        <route id="updateRole">
+            <from uri="direct:updateRole"/>
+            <setProperty propertyName="subjectMod">
+                <simple>${body}</simple>
+            </setProperty>
+            <doTry>
+              <bean ref="rwfAdapter" method="update(${body})"/>
+              <process ref="defaultRoleUpdatePropagation" />
+              <to uri="direct:updateRolePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:updateRolePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+               
+        <!--
+            DELETE ROLE
+        -->
+        <route id="deleteRole">
+            <from uri="direct:deleteRole"/>
+            <doTry>
+              <process ref="defaultRoleDeletePropagation" />
+              <bean ref="rwfAdapter" method="delete(${body})"/>
+              <setBody>
+                  <simple>${property.statuses}</simple>
+              </setBody>
+              <to uri="direct:deleteRolePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:deleteRolePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+        <!-- 
+            UNLINK USER
+        -->
+        <route id="unlinkRole">
+            <from uri="direct:unlinkRole"/>
+            <doTry>
+                <bean ref="rwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult}</simple>
+                </setBody>
+                <to uri="direct:unlinkRolePort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:unlinkRolePort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!--
+            LINK USER
+        -->
+        
+        <route id="linkRole">
+            <from uri="direct:linkRole"/>
+            <doTry>
+                <bean ref="rwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult}</simple>
+                </setBody>
+                <to uri="direct:linkRolePort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:linkRolePort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!--
+            DEPROVISION ROLE
+        -->
+        <route id="deprovisionRole">
+            <from uri="direct:deprovisionRole"/>            
+              <process ref="defaultRoleDeprovisionPropagation" />
+              <to uri="direct:deprovisionRolePort"/>              
+        </route>
+</routeContext>
+</beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/resources/userRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/userRoute.xml b/core/src/main/resources/userRoute.xml
new file mode 100644
index 0000000..e65ef2f
--- /dev/null
+++ b/core/src/main/resources/userRoute.xml
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://camel.apache.org/schema/spring
+                           http://camel.apache.org/schema/spring/camel-spring.xsd">
+ 
+    <!--
+        The default routes define each task involved in user creation:
+        main operations consist in user workflow creation and its propagation.         
+    -->
+    <routeContext id="defaultUserRoutes" xmlns="http://camel.apache.org/schema/spring">  	
+	<route id="createUser">
+          <from uri="direct:createUser"/>
+          <setProperty propertyName="actual">
+            <simple>${body}</simple>
+          </setProperty>
+          <doTry>
+            <bean ref="uwfAdapter" 
+                  method="create(${body},${property.disablePwdPolicyCheck},
+                                 ${property.enabled},${property.storePassword})"/>
+            <process ref="defaultUserCreatePropagation" />
+            <to uri="direct:createPort"/>
+            <doCatch>        
+                <exception>java.lang.RuntimeException</exception>
+                <handled>
+                    <constant>false</constant>
+                </handled>
+                <to uri="direct:createPort"/>
+            </doCatch>
+          </doTry>
+        </route> 
+        
+        <!--
+            The propagation route deals with propagation of created user. In this
+            case we used a custom processor to perform this task: it means that
+            a custom java class contains the propagation strategy.
+        -->
+       
+        <!--
+            UPDATE USER
+        -->
+        <route id="updateUser">
+            <from uri="direct:updateUser"/>
+            <setProperty propertyName="actual">
+                <simple>${body}</simple>
+            </setProperty>
+            <doTry>
+              <bean ref="uwfAdapter" method="update(${body})"/>
+              <process ref="defaultUserUpdatePropagation" />
+              <to uri="direct:updatePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:updatePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+
+                
+        <!--
+            UPDATE SYNC USER
+        -->
+        <route id="updateSyncUser">
+            <from uri="direct:updateSyncUser"/>            
+            <doTry>
+              <bean ref="uwfAdapter" method="update(${body})"/>
+              <to uri="direct:syncUserStatus"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:updateSyncPort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+        <route id="syncUserStatus">
+            <from uri="direct:syncUserStatus"/>
+                <process ref="userStatusOnSync" />
+                <process ref="defaultUserUpdateSyncPropagation" />
+            <to uri="direct:updateSyncPort"/>
+        </route>
+        <!--
+            DELETE USER
+        -->
+        <route id="deleteUser">
+            <from uri="direct:deleteUser"/>
+            <doTry>
+              <process ref="defaultUserDeletePropagation" />
+              <bean ref="uwfAdapter" method="delete(${body})"/>
+              <setBody>
+                  <simple>${property.statuses}</simple>
+              </setBody>
+              <to uri="direct:deletePort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:deletePort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
+        <!-- 
+            UNLINK USER
+        -->
+        <route id="unlinkUser">
+            <from uri="direct:unlinkUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult.getKey}</simple>
+                </setBody>
+                <to uri="direct:unlinkPort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:unlinkPort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!--
+            LINK USER
+        -->
+        
+        <route id="linkUser">
+            <from uri="direct:linkUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="update(${body})"/>
+                <setBody>
+                   <simple>${body.getResult.getKey}</simple>
+                </setBody>
+                <to uri="direct:linkPort"/>
+                <doCatch>        
+                    <exception>java.lang.RuntimeException</exception>
+                    <handled>
+                        <constant>false</constant>
+                    </handled>
+                    <to uri="direct:linkPort"/>
+                </doCatch>
+            </doTry>            
+        </route>
+        
+        <!-- 
+            ACTIVATE USER
+        -->
+        <route id="activateUser">
+            <from uri="direct:activateUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
+                <to uri="direct:statusUser"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:statusPort"/>
+                </doCatch>
+            </doTry>    
+        </route>
+        <!-- 
+            REACTIVATE USER
+        -->
+        <route id="reactivateUser">
+            <from uri="direct:reactivateUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="reactivate(${body})"/>
+                <to uri="direct:statusUser"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:statusPort"/>
+                </doCatch>
+            </doTry>    
+        </route>
+        <!-- 
+            SUSPEND USER
+        -->
+        <route id="suspendUser">
+            <from uri="direct:suspendUser"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="suspend(${body})"/>
+                <to uri="direct:statusUser"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:statusPort"/>
+                </doCatch>
+            </doTry>  
+        </route>
+        
+        <!-- 
+            STATUS PROPAGATION
+        -->
+        
+        <route id="statusUser">
+            <from uri="direct:statusUser"/>            
+              <process ref="defaultUserStatusPropagation" />
+            <to uri="direct:statusPort"/>              
+        </route>
+        
+        
+        <!--
+            DEPROVISION USER
+        -->
+        <route id="deprovisionUser">
+            <from uri="direct:deprovisionUser"/>            
+              <process ref="defaultUserDeprovisionPropagation" />
+              <to uri="direct:deprovisionPort"/>              
+        </route>
+
+
+
+        <route id="suspendUserWF">
+            <from uri="direct:suspendUserWF"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="suspend(${body})"/>
+                <process ref="defaultUserWFSuspendPropagation"/>
+                <to uri="direct:suspendWFPort"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:suspendWFPort"/>
+                </doCatch>
+            </doTry>  
+        </route>
+
+</routeContext>
+</beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java
index e55960a..ca8b638 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java
@@ -41,7 +41,7 @@ public class EntitlementTest extends AbstractDAOTest {
     @Test
     public void findAll() {
         List<Entitlement> list = entitlementDAO.findAll();
-        assertEquals("did not get expected number of entitlements ", 86, list.size());
+        assertEquals("did not get expected number of entitlements ", 89, list.size());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/test/resources/content.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/content.xml b/core/src/test/resources/content.xml
index d5c4c99..987a42d 100644
--- a/core/src/test/resources/content.xml
+++ b/core/src/test/resources/content.xml
@@ -1118,6 +1118,9 @@ under the License.
   <Entitlement name="ROLE_12"/>
   <Entitlement name="ROLE_13"/>
   <Entitlement name="ROLE_14"/>
+  <Entitlement name="ROUTE_UPDATE"/>
+  <Entitlement name="ROUTE_LIST"/>
+  <Entitlement name="ROUTE_READ"/>
 
   <SyncopeRole_Entitlement entitlement_name="base" role_id="1"/>
   <SyncopeRole_Entitlement entitlement_name="advanced" role_id="1"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 737a36f..69a62d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,8 +21,7 @@ under the License.
 
   <modelVersion>4.0.0</modelVersion>
 
-  <name>Apache Syncope</name>
-  <description>Apache Syncope parent POM</description>
+  <name>PoC for integrating Apache Camel in Apache Syncope</name>
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>
@@ -325,7 +324,8 @@ under the License.
 
     <aspectj.version>1.8.4</aspectj.version>
 
-    <cxf.version>3.0.3</cxf.version>	
+    <cxf.version>3.0.3</cxf.version>
+    <camel.version>2.12.5</camel.version>	
     <spring.version>4.0.8.RELEASE</spring.version>
     <spring-security.version>3.2.5.RELEASE</spring-security.version>
     <jackson.version>2.4.4</jackson.version>
@@ -705,6 +705,19 @@ under the License.
         <version>${cxf.version}</version>
       </dependency>      
       <!-- /CXF -->
+      
+      <!-- Camel -->
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-core</artifactId>
+        <version>${camel.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+       <artifactId>camel-spring</artifactId>
+       <version>${camel.version}</version>
+      </dependency>
+      <!-- /Camel -->
 
       <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>


[06/53] [abbrv] syncope git commit: Password managed now included in the provisionig manager

Posted by il...@apache.org.
Password managed now included in the provisionig manager


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

Branch: refs/heads/master
Commit: 0da02810041a4bbd5c0892a02924cf726a9e016e
Parents: 5b3b124
Author: giacomolm <gi...@hotmail.it>
Authored: Thu Dec 18 10:42:56 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Thu Dec 18 10:42:56 2014 +0100

----------------------------------------------------------------------
 .../DefaultUserProvisioningManager.java         | 20 ++++++
 .../core/provisioning/ProvisioningManager.java  | 42 +++++++++++
 .../provisioning/UserProvisioningManager.java   |  4 ++
 .../camel/CamelUserProvisioningManager.java     | 48 +++++++++----
 .../DefaultUserConfirmPwdResetPropagation.java  | 60 ++++++++++++++++
 .../provisioning/ProvisioningManager.java       | 42 -----------
 .../core/rest/controller/UserController.java    | 73 +-------------------
 core/src/main/resources/camelRoute.xml          | 40 ++++++++++-
 core/src/main/resources/coreContext.xml         |  1 +
 9 files changed, 201 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
index 86f6ebe..54f677c 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -344,4 +344,24 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             }            
     }
 
+    @Override
+    public void requestPasswordReset(Long id) {
+        uwfAdapter.requestPasswordReset(id);
+    }
+
+    @Override
+    public void confirmPasswordReset(SyncopeUser user, String token, String password) {
+            
+        uwfAdapter.confirmPasswordReset(user.getId(), token, password);
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
+        PropagationReporter propReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propReporter.onPrimaryResourceFailure(tasks);
+        }    
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
new file mode 100644
index 0000000..adc1cb0
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import org.apache.syncope.common.mod.AbstractAttributableMod;
+import org.apache.syncope.common.to.AbstractAttributableTO;
+import org.apache.syncope.common.to.PropagationStatus;
+
+public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
+
+    public Map.Entry<Long, List<PropagationStatus>> create(T subject);
+
+    public Map.Entry<Long, List<PropagationStatus>> update(M subjectMod);
+
+    public List<PropagationStatus> delete(Long subjectId);
+
+    public Long unlink(M subjectMod);
+
+    public Long link(M subjectMod);
+
+    public List<PropagationStatus> deprovision(Long user, Collection<String> resources);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
index da29a42..32a4d18 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
@@ -47,4 +47,8 @@ public interface UserProvisioningManager extends ProvisioningManager<UserTO, Use
     
     public void innerSuspend(SyncopeUser user, boolean suspend);
     
+    public void requestPasswordReset(final Long id);
+    
+    public void confirmPasswordReset(SyncopeUser user,final String token,final String password);
+    
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index dc0c552..92b3cfb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -18,11 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.camel;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.net.URLDecoder;
 import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -33,11 +31,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -46,10 +39,7 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
-import org.apache.camel.model.Constants;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
@@ -60,15 +50,11 @@ import org.apache.syncope.core.persistence.dao.RouteDAO;
 import org.apache.syncope.core.propagation.PropagationByResource;
 import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.sync.SyncResult;
-import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+
 
 public class CamelUserProvisioningManager implements UserProvisioningManager {
 
@@ -453,4 +439,36 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     }
 
+    @Override
+    public void requestPasswordReset(Long id) {
+        String uri = "direct:requestPwdResetPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:requestPwdReset", id);
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+    }
+
+    @Override
+    public void confirmPasswordReset(SyncopeUser user, final String token, final String password) {
+        String uri = "direct:confirmPwdResetPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("user", user);
+        props.put("userId", user.getId());
+        props.put("token", token);
+        props.put("password", password);
+
+        sendMessage("direct:confirmPwdReset", user, props);
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
new file mode 100644
index 0000000..2447689
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
@@ -0,0 +1,60 @@
+/*
+ * 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.camel.processors;
+
+import java.util.List;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class DefaultUserConfirmPwdResetPropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserConfirmPwdResetPropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange){
+        SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
+        PropagationReporter propReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propReporter.onPrimaryResourceFailure(tasks);
+        }                
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
deleted file mode 100644
index adc1cb0..0000000
--- a/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
+++ /dev/null
@@ -1,42 +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;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import org.apache.syncope.common.mod.AbstractAttributableMod;
-import org.apache.syncope.common.to.AbstractAttributableTO;
-import org.apache.syncope.common.to.PropagationStatus;
-
-public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
-
-    public Map.Entry<Long, List<PropagationStatus>> create(T subject);
-
-    public Map.Entry<Long, List<PropagationStatus>> update(M subjectMod);
-
-    public List<PropagationStatus> delete(Long subjectId);
-
-    public Long unlink(M subjectMod);
-
-    public Long link(M subjectMod);
-
-    public List<PropagationStatus> deprovision(Long user, Collection<String> resources);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index d8fa5f8..606d46b 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -26,7 +26,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -43,11 +42,8 @@ import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.common.types.ClientExceptionType;
 import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.common.mod.AttributeMod;
-import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.types.SubjectType;
 import org.apache.syncope.common.to.PropagationStatus;
-import org.apache.syncope.core.persistence.beans.CamelRoute;
-import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
@@ -57,18 +53,11 @@ 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.persistence.dao.search.OrderByClause;
-import org.apache.syncope.core.propagation.PropagationByResource;
-import org.apache.syncope.core.propagation.PropagationException;
-import org.apache.syncope.core.propagation.PropagationReporter;
 import org.apache.syncope.core.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.propagation.impl.PropagationManager;
-import org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager;
 import org.apache.syncope.core.rest.data.AttributableTransformer;
 import org.apache.syncope.core.rest.data.UserDataBinder;
-import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.apache.syncope.core.util.EntitlementUtil;
-import org.apache.syncope.core.workflow.WorkflowResult;
-import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
@@ -108,9 +97,6 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Autowired
     protected AttributableTransformer attrTransformer;
     
-    @Autowired
-    protected UserWorkflowAdapter uwfAdapter;
-    
     @Resource(name = "defaultUserProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
@@ -269,50 +255,6 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
             }
         }
         
-        //Actual operations: workflow, propagation, notification
-        /*WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(actual);
-
-        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
-        if (tasks.isEmpty()) {
-            // SYNCOPE-459: take care of user virtual attributes ...
-            final PropagationByResource propByResVirAttr = binder.fillVirtual(
-                    updated.getResult().getKey().getId(),
-                    actual.getVirAttrsToRemove(),
-                    actual.getVirAttrsToUpdate());
-            // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
-            // not required, take care also of membership virtual attributes
-            boolean addOrUpdateMemberships = false;
-            for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
-                if (!binder.fillMembershipVirtual(
-                        updated.getResult().getKey().getId(),
-                        membershipMod.getRole(),
-                        null,
-                        membershipMod.getVirAttrsToRemove(),
-                        membershipMod.getVirAttrsToUpdate(),
-                        false).isEmpty()) {
-
-                    addOrUpdateMemberships = true;
-                }
-            }
-            tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
-                    ? propagationManager.getUserUpdateTaskIds(updated, false, null)
-                    : Collections.<PropagationTask>emptyList());
-        }
-
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                getBean(PropagationReporter.class);
-
-        if (!tasks.isEmpty()) {
-            try {
-                taskExecutor.execute(tasks, propagationReporter);
-            } catch (PropagationException e) {
-                LOG.error("Error propagation primary resource", e);
-                propagationReporter.onPrimaryResourceFailure(tasks);
-            }
-        }
-
-        final UserTO updatedTO = binder.getUserTO(updated.getResult().getKey().getId());
-        updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());*/
         Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual,removeMemberships);
 
         final UserTO updatedTO = binder.getUserTO(updated.getKey());
@@ -372,7 +314,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
             throw SyncopeClientException.build(ClientExceptionType.InvalidSecurityAnswer);
         }
 
-        uwfAdapter.requestPasswordReset(user.getId());
+        provisioningManager.requestPasswordReset(user.getId());
     }
 
     @PreAuthorize("isAnonymous() or hasRole(T(org.apache.syncope.common.SyncopeConstants).ANONYMOUS_ENTITLEMENT)")
@@ -382,18 +324,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         if (user == null) {
             throw new NotFoundException("User with token " + token);
         }
-
-        uwfAdapter.confirmPasswordReset(user.getId(), token, password);
-
-        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
-        PropagationReporter propReporter =
-                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propReporter.onPrimaryResourceFailure(tasks);
-        }
+        provisioningManager.confirmPasswordReset(user, token, password);
     }
 
     @PreAuthorize("isAuthenticated() "

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
index c7ac19a..e1ad071 100644
--- a/core/src/main/resources/camelRoute.xml
+++ b/core/src/main/resources/camelRoute.xml
@@ -413,6 +413,43 @@ under the License.
             </doTry>  
         </route>
         
+        <!--
+            REQUEST PASSWORD RESET ROUTE
+        -->
+        
+        <route id="requestPwdReset">
+            <from uri="direct:requestPwdReset"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="requestPasswordReset(${body})"/>
+                <to uri="direct:requestPwdResetPort"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:requestPwdResetPort"/>
+                </doCatch>
+            </doTry>  
+        </route>
+        <!--
+            CONFIRM PASSWORD RESET
+        -->
+        <route id="confirmPwdReset">
+            <from uri="direct:confirmPwdReset"/>
+            <doTry>
+              <bean ref="uwfAdapter" method="confirmPasswordReset(${property.userId},${property.token},${property.password})"/>
+              <process ref="defaultUserConfirmPwdResetPropagation" />
+              <to uri="direct:confirmPwdResetPort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:confirmPwdResetPort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
     </routeContext>
     <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
     <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
@@ -422,9 +459,10 @@ under the License.
     <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
     <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
     <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
     <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
     <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
     <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
     <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
-    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>    
+    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>            
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index da55cfc..3950689 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -162,6 +162,7 @@ under the License.
     <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
     <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
     <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
     <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
     <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
     <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>


[33/53] [abbrv] syncope git commit: Fixes #4 - Route functionalities are displayed only with Camel PM

Posted by il...@apache.org.
Fixes #4 - Route functionalities are displayed only with Camel PM


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

Branch: refs/heads/2_0_X
Commit: b19ff8512f082d7d74ff40b0a53f6380d0905771
Parents: d8ec8da
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 30 16:47:31 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 30 16:47:31 2014 +0100

----------------------------------------------------------------------
 .../apache/syncope/client/SyncopeClient.java    | 26 +++++++
 .../syncope/common/services/RouteService.java   | 44 ++++++++---
 .../syncope/common/types/RESTHeaders.java       | 11 +++
 .../apache/syncope/console/SyncopeSession.java  |  7 ++
 .../syncope/console/pages/Configuration.java    | 15 +++-
 .../syncope/console/rest/RouteRestClient.java   | 22 +++++-
 .../syncope/console/pages/Configuration.html    |  2 +-
 .../core/provisioning/camel/CamelDetector.java  | 77 ++++++++++++++++++++
 .../syncope/core/services/RouteServiceImpl.java | 31 +++++++-
 core/src/main/resources/provisioning.properties |  4 +-
 10 files changed, 218 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/syncope/client/SyncopeClient.java b/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
index a471d54..f955951 100644
--- a/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
+++ b/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
@@ -26,6 +26,7 @@ import org.apache.syncope.client.rest.RestClientFactoryBean;
 import org.apache.syncope.common.search.OrderByClauseBuilder;
 import org.apache.syncope.common.search.RoleFiqlSearchConditionBuilder;
 import org.apache.syncope.common.search.UserFiqlSearchConditionBuilder;
+import org.apache.syncope.common.services.RouteService;
 import org.apache.syncope.common.services.UserSelfService;
 import org.apache.syncope.common.services.WorkflowService;
 import org.apache.syncope.common.types.Preference;
@@ -265,6 +266,31 @@ public class SyncopeClient {
 
         return result;
     }
+    
+    /**
+     * Checks whether Camel is enabled for users / roles, by calling <tt>RouteService</tt>'s options.
+     *
+     * @param subjectType user / role
+     * @return whether Camel Provisioning is enabled for given attributable type
+     * @see RouteService#getOptions(org.apache.syncope.common.types.SubjectType)
+     */
+    public boolean isCamelEnabledFor(final SubjectType subjectType) {
+        Response options = getService(RouteService.class).getOptions(subjectType);
+
+        boolean result;
+        switch (subjectType) {
+            case ROLE:
+                result = Boolean.valueOf(options.getHeaderString(RESTHeaders.CAMEL_ROLE_PROVISIONING_MANAGER));
+                break;
+
+            case USER:
+            default:
+                result = Boolean.valueOf(options.getHeaderString(RESTHeaders.CAMEL_USER_PROVISIONING_MANAGER));
+                break;
+        }
+
+        return result;
+    }
 
     /**
      * Fetches <tt>ETag</tt> header value from latest service run (if available).

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/common/src/main/java/org/apache/syncope/common/services/RouteService.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/services/RouteService.java b/common/src/main/java/org/apache/syncope/common/services/RouteService.java
index feb7db7..6e3090f 100644
--- a/common/src/main/java/org/apache/syncope/common/services/RouteService.java
+++ b/common/src/main/java/org/apache/syncope/common/services/RouteService.java
@@ -16,34 +16,56 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.common.services;
 
 import java.util.List;
+import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
+import javax.ws.rs.OPTIONS;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.apache.cxf.jaxrs.model.wadl.Description;
+import org.apache.cxf.jaxrs.model.wadl.Descriptions;
+import org.apache.cxf.jaxrs.model.wadl.DocTarget;
 import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.types.SubjectType;
+
+@Path("routes/{kind}")
+public interface RouteService extends JAXRSService {
+
+    /**
+     * Checks whether Camel is choosed as default provisioning engine.
+     *
+     * @param kind user or role
+     * @return <tt>Response</tt> contains special syncope HTTP header indicating if Camel is enabled for
+     * users / roles provisioning
+     * @see org.apache.syncope.common.types.RESTHeaders#CAMEL_USER_PROVISIONING_MANAGER
+     * @see org.apache.syncope.common.types.RESTHeaders#CAMEL_ROLE_PROVISIONING_MANAGER
+     *
+     * @Descriptions({
+     * @Description(target = DocTarget.RESPONSE,
+     * value = "Contains special syncope HTTP header indicating if Camel is the default provisioning manager")
+     * }) */
+    @OPTIONS
+    Response getOptions(@NotNull @PathParam("kind") SubjectType kind);
 
-@Path("routes")
-public interface RouteService extends JAXRSService{
-    
     @GET
     @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<RouteTO> getRoutes();
-    
+    List<RouteTO> getRoutes(@NotNull @PathParam("kind") SubjectType kind);
+
     @GET
     @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
     @Path("{id}")
-    public RouteTO getRoute(@PathParam("id") Long Id);
-    
+    public RouteTO getRoute(@NotNull @PathParam("kind") SubjectType kind, @PathParam("id") Long Id);
+
     @PUT
     @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
     @Path("{id}")
-    void importRoute(@PathParam("id") Long id, RouteTO route);
-    
-}
\ No newline at end of file
+    void importRoute(@NotNull @PathParam("kind") SubjectType kind,@PathParam("id") Long id, RouteTO route);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java b/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
index ddbfca2..3e7cdc3 100644
--- a/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
+++ b/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
@@ -57,6 +57,17 @@ public final class RESTHeaders {
      * Option key stating if Activiti workflow adapter is in use for roles.
      */
     public static final String ACTIVITI_ROLE_ENABLED = "Syncope.Activiti.Role.Enabled";
+    
+     /**
+     * Option key stating if Camel is the current provisioning manager engine.
+     */
+    public static final String CAMEL_USER_PROVISIONING_MANAGER ="Syncope.Provisioning.Camel.User.Enabled";
+    
+    /**
+     * Option key stating if Camel is the current provisioning manager engine.
+     */
+    public static final String CAMEL_ROLE_PROVISIONING_MANAGER ="Syncope.Provisioning.Camel.Role.Enabled";
+
 
     /**
      * HTTP header key for object ID assigned to an object after its creation.

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/SyncopeSession.java b/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
index ae81852..53b03c0 100644
--- a/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
+++ b/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
@@ -114,6 +114,13 @@ public class SyncopeSession extends WebSession {
                 : clients.values().iterator().next();
         return client.isActivitiEnabledFor(type);
     }
+    
+    public boolean isCamelEnabledFor(final SubjectType type) {
+        SyncopeClient client = clients.isEmpty()
+                ? clientFactory.createAnonymous()
+                : clients.values().iterator().next();
+        return client.isCamelEnabledFor(type);
+    }
 
     public <T> T getService(final Class<T> service) {
         return getService(service, this.username, this.password);

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java b/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
index 10dcfc7..05316dd 100644
--- a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
+++ b/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
@@ -52,6 +52,7 @@ import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.ta
 import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
 import org.apache.syncope.console.wicket.markup.html.link.VeilPopupSettings;
+import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
@@ -278,7 +279,8 @@ public class Configuration extends BasePage {
         add(new LayoutsPanel("selfMembershipLayoutPanel", AttrLayoutType.SELF_MEMBERSHIP, feedbackPanel));
         
         //Route Management
-        add(editRouteWin = new ModalWindow("editRouteWin"));
+        editRouteWin = new ModalWindow("editRouteWin");
+        add(editRouteWin);
         setupRoutes();
     }
 
@@ -828,7 +830,18 @@ public class Configuration extends BasePage {
         WebMarkupContainer routeContainer = new WebMarkupContainer("routesContainer");
         routeContainer.add(routeTable);
         routeContainer.setOutputMarkupId(true);
+        
+        ListItem<Object> li = new ListItem<Object>("routeTab", 0);
+        if (routeRestClient.isCamelEnabledForUsers() == false) {
+            li.setVisible(false);
+            routeContainer.setVisible(false);   
+        }
+        else{
+            li.setVisible(true);
+            routeContainer.setVisible(true); 
+        }
 
+        add(li);
         add(routeContainer);
 
         editRouteWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java b/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
index 673652a..dcfb8c3 100644
--- a/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
+++ b/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
@@ -19,8 +19,11 @@
 package org.apache.syncope.console.rest;
 
 import java.util.List;
+import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.common.services.RouteService;
 import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.types.SubjectType;
+import org.apache.syncope.console.SyncopeSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -31,17 +34,30 @@ public class RouteRestClient extends BaseRestClient{
     protected static final Logger LOG = LoggerFactory.getLogger(RouteRestClient.class);
     
     public List<RouteTO> readRoutes(){
-        return getService(RouteService.class).getRoutes();
+        return getService(RouteService.class).getRoutes(SubjectType.USER);
     }
     
     public RouteTO readRoute(Long id){
-        return getService(RouteService.class).getRoute(id);
+        return getService(RouteService.class).getRoute(SubjectType.USER, id);
     }
     
     public void updateRoute(Long id, String definition){
         RouteTO routeTO = readRoute(id);        
         routeTO.setRouteContent(definition);     
-        getService(RouteService.class).importRoute(routeTO.getId(), routeTO);
+        getService(RouteService.class).importRoute(SubjectType.USER, routeTO.getId(), routeTO);
+    }
+    
+    public boolean isCamelEnabledForUsers() {
+        Boolean result = null;
+        try {
+            result = SyncopeSession.get().isCamelEnabledFor(SubjectType.USER);
+        } catch (SyncopeClientException e) {
+            LOG.error("While seeking if Camel is enabled for users", e);
+        }
+
+        return result == null
+                ? false
+                : result.booleanValue();
     }
     
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
index 62f97a8..130c89a 100644
--- a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
+++ b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
@@ -38,7 +38,7 @@ under the License.
                 <li><a href="#notifications"><span><wicket:message key="notifications"/></span></a></li>
                 <li><a href="#securityQuestions"><span><wicket:message key="securityQuestions"/></span></a></li>
                 <li><a href="#workflow"><span><wicket:message key="workflow"/></span></a></li>
-                <li><a href="#routes"><span><wicket:message key="routes"/></span></a></li>
+                <li wicket:id="routeTab"><a href="#routes"><span><wicket:message key="routes"/></span></a></li>
                 <li><a href="#logs"><span><wicket:message key="logs"/></span></a></li>
             </ul>
             <div id="layouts">

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java
new file mode 100644
index 0000000..646c350
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java
@@ -0,0 +1,77 @@
+/*
+ * 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.camel;
+
+import java.io.InputStream;
+import java.util.Properties;
+import org.apache.commons.io.IOUtils;
+import org.apache.syncope.core.persistence.dao.impl.ContentLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author giacomolm
+ */
+public class CamelDetector {
+    
+    private static final Logger LOG = LoggerFactory.getLogger(CamelDetector.class);
+
+    private static final String PROVISIONING_PROPERTIES = "/provisioning.properties";
+     
+    private static String userPMClassName;
+
+    private static String rolePMClassName;
+    
+     /**
+     * Read classpath:/provisioning.properties in order to determine the configured provisioning adapter class name.
+     */
+    static {
+        Properties props = new Properties();
+        InputStream propStream = null;
+        try {
+            propStream = ContentLoader.class.getResourceAsStream(PROVISIONING_PROPERTIES);
+            props.load(propStream);
+            userPMClassName = props.getProperty("userProvisioningManager");
+            rolePMClassName = props.getProperty("roleProvisioningManager");
+        } catch (Exception e) {
+            LOG.error("Could not load workflow.properties", e);
+        } finally {
+            IOUtils.closeQuietly(propStream);
+        }
+    }
+    
+    /**
+     * Check if the configured user provisioning manager is Camel's.
+     *
+     * @return whether Activiti is configured for user workflow or not
+     */
+    public static boolean isCamelEnabledForUsers() {
+        return userPMClassName != null && userPMClassName.equals(CamelUserProvisioningManager.class.getName());
+    }
+
+    /**
+     * Check if the configured role provisioning manager is Camel's.
+     *
+     * @return whether Activiti is configured for role workflow or not
+     */
+    public static boolean isCamelEnabledForRoles() {
+        return rolePMClassName != null && rolePMClassName.equals(CamelRoleProvisioningManager.class.getName());
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
index ecc323e..29359f8 100644
--- a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
@@ -18,33 +18,58 @@
  */
 package org.apache.syncope.core.services;
 
+import static org.apache.syncope.core.services.AbstractServiceImpl.OPTIONS_ALLOW;
+
 import java.util.List;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
 import org.apache.syncope.common.services.RouteService;
 import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.types.RESTHeaders;
+import org.apache.syncope.common.types.SubjectType;
+import org.apache.syncope.core.provisioning.camel.CamelDetector;
 import org.apache.syncope.core.rest.controller.RouteController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class RouteServiceImpl extends AbstractServiceImpl implements RouteService {
+    
+    @Override
+    public Response getOptions(final SubjectType kind) {
+        String key;
+        String value;
+        if (kind == SubjectType.USER) {
+            key = RESTHeaders.CAMEL_USER_PROVISIONING_MANAGER;
+            value = Boolean.toString(CamelDetector.isCamelEnabledForUsers());
+        } else {
+            key = RESTHeaders.CAMEL_ROLE_PROVISIONING_MANAGER;
+            value = Boolean.toString(CamelDetector.isCamelEnabledForRoles());
+        }
+        Response.ResponseBuilder builder = Response.ok().header(HttpHeaders.ALLOW, OPTIONS_ALLOW);
+        if (key != null && value != null) {
+            builder.header(key, value);
+        }
+        return builder.build();
+    }
 
     @Autowired
     private RouteController controller;
 
     @Override
-    public List<RouteTO> getRoutes() {
+    public List<RouteTO> getRoutes(SubjectType kind) {
 
         return controller.listRoutes();
     }
 
     @Override
-    public RouteTO getRoute(Long id) {
+    public RouteTO getRoute(SubjectType kind, Long id) {
 
         return controller.readRoute(id);
     }
 
     @Override
-    public void importRoute(Long id, RouteTO route) {
+    public void importRoute(SubjectType kind,Long id, RouteTO route) {
         controller.updateRoute(route);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
index a8e49bf..de6c3cd 100644
--- a/core/src/main/resources/provisioning.properties
+++ b/core/src/main/resources/provisioning.properties
@@ -15,5 +15,5 @@
 # specific language governing permissions and limitations
 # under the License.
 
-userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
-roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file
+userProvisioningManager=org.apache.syncope.core.provisioning.DefaultUserProvisioningManager
+roleProvisioningManager=org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager
\ No newline at end of file


[40/53] [abbrv] syncope git commit: Manual merge

Posted by il...@apache.org.
Manual merge


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

Branch: refs/heads/2_0_X
Commit: 35966426c1083591d068003e768e4f65dc429fd3
Parents: a76be55
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 10:57:48 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 10:57:48 2015 +0100

----------------------------------------------------------------------
 syncope620/pom.xml | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/35966426/syncope620/pom.xml
----------------------------------------------------------------------
diff --git a/syncope620/pom.xml b/syncope620/pom.xml
index f93f639..82e910d 100644
--- a/syncope620/pom.xml
+++ b/syncope620/pom.xml
@@ -270,6 +270,17 @@ under the License.
       <url>http://people.apache.org/~andreapatricelli/</url>
       <email>andreapatricelli@apache.org</email>
     </developer>
+    <developer>
+      <id>giacomolm</id>
+      <name>Giacomo Lamonaco</name>
+      <organization>Tirasa</organization>
+      <organizationUrl>http://www.tirasa.net/</organizationUrl>
+      <roles>
+        <role>committer</role>
+      </roles>
+      <url>http://people.apache.org/~giacomolm/</url>
+      <email>giacomolm@apache.org</email>
+    </developer>
   </developers>
 
   <contributors>


[45/53] [abbrv] syncope git commit: Partially fixed #7

Posted by il...@apache.org.
Partially fixed #7


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

Branch: refs/heads/2_0_X
Commit: ec34515da73044960f445aa472306dbf87ca2c8e
Parents: b1d2ac6
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Jan 5 11:53:23 2015 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Jan 5 11:53:23 2015 +0100

----------------------------------------------------------------------
 .../camel/CamelRoleProvisioningManager.java     | 28 +++++---------------
 .../camel/CamelUserProvisioningManager.java     | 20 +++++++++-----
 .../provisioning/camel/SyncopeCamelContext.java |  9 +++----
 .../DefaultRoleCreatePropagation.java           |  2 ++
 .../DefaultRoleCreateSyncPropagation.java       |  1 +
 .../DefaultRoleDeprovisionPropagation.java      |  1 +
 .../DefaultRoleUpdatePropagation.java           |  2 ++
 .../DefaultUserCreatePropagation.java           |  2 ++
 .../DefaultUserDeletePropagation.java           |  1 +
 .../DefaultUserDeprovisionPropagation.java      |  1 +
 .../DefaultUserStatusPropagation.java           |  1 +
 .../DefaultUserUpdateInSyncPropagation.java     |  2 ++
 .../DefaultUserUpdatePropagation.java           |  1 +
 .../DefaultUserWFSuspendPropagation.java        |  1 +
 .../camel/processors/UserStatusOnSync.java      |  1 +
 15 files changed, 40 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
index 9b121a4..96f5227 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -18,10 +18,7 @@
  */
 package org.apache.syncope.core.provisioning.camel;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
 import java.io.InputStream;
-import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -30,39 +27,23 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.ProducerTemplate;
-import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
-import org.apache.camel.model.Constants;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.common.mod.RoleMod;
 import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.common.to.RoleTO;
-import org.apache.syncope.core.persistence.beans.CamelRoute;
 import org.apache.syncope.core.persistence.dao.RouteDAO;
 import org.apache.syncope.core.propagation.PropagationException;
 import org.apache.syncope.core.provisioning.RoleProvisioningManager;
-import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
@@ -84,7 +65,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
     public CamelRoleProvisioningManager() throws Exception {
         knownUri = new ArrayList<String>();
-        consumerMap = new HashMap();
+        consumerMap = new HashMap<String, PollingConsumer>();
     }
 
     public void startContext() throws Exception {
@@ -165,6 +146,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO roleTO, Set<String> excludedResources) {
 
         String uri = "direct:createRolePort";
@@ -185,6 +167,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,
             Set<String> excludedResources) throws PropagationException {
 
@@ -213,6 +196,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
 
         String uri = "direct:updateRolePort";
@@ -233,6 +217,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> delete(Long subjectId) {
 
         String uri = "direct:deleteRolePort";
@@ -284,13 +269,14 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> deprovision(final Long roleId, Collection<String> resources) {
 
         String uri = "direct:deprovisionRolePort";
 
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("resources", resources);
 
         sendMessage("direct:deprovisionRole", roleId, props);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index 01b057a..c65f8eb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -31,12 +31,10 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.ProducerTemplate;
-import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.camel.model.RoutesDefinition;
@@ -76,7 +74,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     public CamelUserProvisioningManager() throws Exception {
         knownUri = new ArrayList<String>();
-        consumerMap = new HashMap();
+        consumerMap = new HashMap<String, PollingConsumer>();
     }
 
     public String readerToString(Reader reader, int size) throws IOException {
@@ -177,6 +175,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword,
             boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
         String uri = "direct:createPort";
@@ -211,6 +210,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
         String uri = "direct:updatePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
@@ -236,6 +236,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> delete(final Long userId, Set<String> excludedResources) {
         String uri = "direct:deletePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
@@ -272,11 +273,12 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod) {
         String uri = "direct:statusPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("token", statusMod.getToken());
         props.put("user", user);
         props.put("statusMod", statusMod);
@@ -299,11 +301,12 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod) {
         String uri = "direct:statusPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("user", user);
         props.put("statusMod", statusMod);
 
@@ -325,12 +328,13 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod) {
 
         String uri = "direct:statusPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("user", user);
         props.put("statusMod", statusMod);
 
@@ -370,12 +374,13 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> deprovision(Long user, Collection<String> resources) {
         String uri = "direct:deprovisionPort";
 
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("resources", resources);
 
         sendMessage("direct:deprovisionUser", user, props);
@@ -390,6 +395,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result,
             Boolean enabled, Set<String> excludedResources) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index 6d3e77d..2873735 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -33,6 +33,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.Constants;
 import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.core.persistence.beans.CamelRoute;
 import org.apache.syncope.core.persistence.dao.RouteDAO;
@@ -80,16 +81,14 @@ public class SyncopeCamelContext {
             DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             JAXBContext jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES);
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-            List rds = new ArrayList();
-
-            for (int s = 0; s < crl.size(); s++) {
-
+            List<RouteDefinition> rds = new ArrayList<RouteDefinition>();
+            for(int s = 0; s < crl.size(); s++){
                 InputStream is = new ByteArrayInputStream(URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").
                         getBytes());
                 Document doc = dBuilder.parse(is);
                 doc.getDocumentElement().normalize();
                 Node routeEl = doc.getElementsByTagName("route").item(0);
-                JAXBElement obj = unmarshaller.unmarshal(routeEl, RouteDefinition.class);
+                JAXBElement<RouteDefinition> obj = unmarshaller.unmarshal(routeEl, RouteDefinition.class);
                 //adding route definition to list                        
                 rds.add(obj.getValue());
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
index 2af3d37..43daf10 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -53,8 +53,10 @@ public class DefaultRoleCreatePropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
         RoleTO subject = exchange.getProperty("subject", RoleTO.class);
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         EntitlementUtil.extendAuthContext(created.getResult());

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
index d796d6d..296d99e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -51,6 +51,7 @@ public class DefaultRoleCreateSyncPropagation implements Processor {
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreateSyncPropagation.class);
 
     @Override
+    @SuppressWarnings("unchecked")
     public void process(Exchange exchange) {
 
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
index a7c35fb..e196187 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -54,6 +54,7 @@ public class DefaultRoleDeprovisionPropagation implements Processor {
     public void process(Exchange exchange) {
 
         Long roleId = exchange.getIn().getBody(Long.class);
+        @SuppressWarnings("unchecked")
         List<String> resources = exchange.getProperty("resources", List.class);
 
         final SyncopeRole role = binder.getRoleFromId(roleId);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
index 90d37dd..6722a15 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -55,8 +55,10 @@ public class DefaultRoleUpdatePropagation implements Processor {
 
     @Override
     public void process(Exchange exchange) {
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
         RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
index 82ba0ab..ed5b990 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -54,8 +54,10 @@ public class DefaultUserCreatePropagation implements Processor {
 
         if ((exchange.getIn().getBody() instanceof WorkflowResult)) {
 
+            @SuppressWarnings("unchecked")
             WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();
             UserTO actual = exchange.getProperty("actual", UserTO.class);
+            @SuppressWarnings("unchecked")
             Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
             List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
index 3f80459..c3028ab 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -50,6 +50,7 @@ public class DefaultUserDeletePropagation implements Processor {
         Long userId = (Long) exchange.getIn().getBody();
         LOG.info("UserId {} ", userId);
 
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         // Note here that we can only notify about "delete", not any other

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
index a529dea..caa9d90 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -54,6 +54,7 @@ public class DefaultUserDeprovisionPropagation implements Processor {
     public void process(Exchange exchange) {
 
         Long userId = exchange.getIn().getBody(Long.class);
+        @SuppressWarnings("unchecked")
         List<String> resources = exchange.getProperty("resources", List.class);
 
         final SyncopeUser user = binder.getUserFromId(userId);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
index cc167d7..89e9dca 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -54,6 +54,7 @@ public class DefaultUserStatusPropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
 
         SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
index a931a5b..1a9ecd3 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -60,8 +60,10 @@ public class DefaultUserUpdateInSyncPropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
 
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index c9b498e..c34a0bf 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -56,6 +56,7 @@ public class DefaultUserUpdatePropagation implements Processor {
     protected UserDataBinder binder;
 
     @Override
+    @SuppressWarnings("unchecked")
     public void process(Exchange exchange) {
 
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
index 88cd160..dcc8af8 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -47,6 +47,7 @@ public class DefaultUserWFSuspendPropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
         Boolean suspend = exchange.getProperty("suspend", Boolean.class);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
index 7cb7dfa..182913b 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -45,6 +45,7 @@ public class UserStatusOnSync implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
 
         Boolean enabled = exchange.getProperty("enabled", Boolean.class);


[31/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/2_0_X
Commit: d8ec8da83e0f807e89e830540e756470aa231e51
Parents: dff89c0 08893dc
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 30 16:44:05 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 30 16:44:05 2014 +0100

----------------------------------------------------------------------
 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/d8ec8da8/pom.xml
----------------------------------------------------------------------


[42/53] [abbrv] syncope git commit: Merge branch '1_2_X'

Posted by il...@apache.org.
Merge branch '1_2_X'


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

Branch: refs/heads/2_0_X
Commit: 286d5cbbef4ad373461465deac28cd34d0343df9
Parents: b907a4e 069b56f
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Mon Jan 5 11:08:29 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Mon Jan 5 11:08:29 2015 +0100

----------------------------------------------------------------------
 .../syncope/installer/utilities/FileSystemUtils.java      | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
----------------------------------------------------------------------



[20/53] [abbrv] syncope git commit: Code formatting with netbeans

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java b/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
index 65f43cc..2304fa4 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
@@ -66,7 +66,7 @@ public class LDAPPasswordSyncActions extends DefaultSyncActions {
 
         return delta;
     }
-    
+
     @Transactional(readOnly = true)
     @Override
     public <T extends AbstractAttributableTO, K extends AbstractAttributableMod> SyncDelta beforeUpdate(
@@ -74,15 +74,15 @@ public class LDAPPasswordSyncActions extends DefaultSyncActions {
             final SyncDelta delta,
             final T subject,
             final K subjectMod) throws JobExecutionException {
-        
+
         if (subjectMod instanceof UserMod) {
-            String modPassword = ((UserMod)subjectMod).getPassword();
+            String modPassword = ((UserMod) subjectMod).getPassword();
             parseEncodedPassword(modPassword);
         }
-        
+
         return delta;
     }
-    
+
     private void parseEncodedPassword(String password) {
         if (password != null && password.startsWith("{")) {
             int closingBracketIndex = password.indexOf('}');

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
index e544687..4e83e66 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
@@ -86,8 +86,8 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         RoleTO roleTO = RoleTO.class.cast(subjectTO);
 
-        Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.createInSync
-                           (roleTO, roleOwnerMap, Collections.singleton(profile.getSyncTask().getResource().getName()));
+        Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.createInSync(roleTO, roleOwnerMap,
+                Collections.singleton(profile.getSyncTask().getResource().getName()));
 
         roleTO = roleDataBinder.getRoleTO(created.getKey());
 
@@ -127,7 +127,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         RoleMod roleMod = RoleMod.class.cast(subjectMod);
 
         Map.Entry<Long, List<PropagationStatus>> updated = roleProvisioningManager.update(roleMod);
-                
+
         //moved after role provisioning manager
         String roleOwner = null;
         for (AttributeMod attrMod : roleMod.getAttrsToUpdate()) {
@@ -140,7 +140,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         }
 
         final RoleTO after = roleDataBinder.getRoleTO(updated.getKey());
-        
+
         result.setName(getName(after));
 
         return after;
@@ -170,6 +170,6 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
             LOG.error("Could not propagate user " + id, e);
         }
 
-        roleProvisioningManager.delete(id); 
+        roleProvisioningManager.delete(id);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
index e5bdc06..6802726 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
@@ -82,8 +82,8 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
         //Delegate User Workflow Creation and its Propagation to provisioning manager
-        Map.Entry<Long, List<PropagationStatus>>
-            created = userProvisioningManager.create(userTO, true, true, enabled,Collections.singleton(profile.getSyncTask().getResource().getName()));                             
+        Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled,
+                Collections.singleton(profile.getSyncTask().getResource().getName()));
 
         userTO = userDataBinder.getUserTO(created.getKey());
 
@@ -121,51 +121,51 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         final UserMod userMod = UserMod.class.cast(subjectMod);
 
-        /*WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
-        try {
-            updated = uwfAdapter.update(userMod);
-        } catch (Exception e) {
-            LOG.error("Update of user {} failed, trying to sync its status anyway (if configured)", before.getId(), e);
-
-            result.setStatus(SyncResult.Status.FAILURE);
-            result.setMessage("Update failed, trying to sync status anyway (if configured)\n"
-                    + ExceptionUtils.getRootCauseMessage(e));
-
-            updated = new WorkflowResult<Map.Entry<UserMod, Boolean>>(
-                    new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false),
-                    new PropagationByResource(),
-                    new HashSet<String>());
-        }*/
-
+        /* WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
+         * try {
+         * updated = uwfAdapter.update(userMod);
+         * } catch (Exception e) {
+         * LOG.error("Update of user {} failed, trying to sync its status anyway (if configured)", before.getId(), e);
+         *
+         * result.setStatus(SyncResult.Status.FAILURE);
+         * result.setMessage("Update failed, trying to sync status anyway (if configured)\n"
+         * + ExceptionUtils.getRootCauseMessage(e));
+         *
+         * updated = new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+         * new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false),
+         * new PropagationByResource(),
+         * new HashSet<String>());
+         * } */
         final Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        /*if (enabled != null) {
-            SyncopeUser user = userDAO.find(before.getId());
-
-            WorkflowResult<Long> enableUpdate = null;
-            if (user.isSuspended() == null) {
-                enableUpdate = uwfAdapter.activate(before.getId(), null);
-            } else if (enabled && user.isSuspended()) {
-                enableUpdate = uwfAdapter.reactivate(before.getId());
-            } else if (!enabled && !user.isSuspended()) {
-                enableUpdate = uwfAdapter.suspend(before.getId());
-            }
-
-            if (enableUpdate != null) {
-                if (enableUpdate.getPropByRes() != null) {
-                    updated.getPropByRes().merge(enableUpdate.getPropByRes());
-                    updated.getPropByRes().purge();
-                }
-                updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
-            }
-        }
-
-        final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
-                updated, updated.getResult().getKey().getPassword() != null,
-                Collections.singleton(profile.getSyncTask().getResource().getName()));
-
-        taskExecutor.execute(tasks);*/
-                 
-        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.updateInSync(userMod, before.getId(), result,enabled, Collections.singleton(profile.getSyncTask().getResource().getName()));        
+        /* if (enabled != null) {
+         * SyncopeUser user = userDAO.find(before.getId());
+         *
+         * WorkflowResult<Long> enableUpdate = null;
+         * if (user.isSuspended() == null) {
+         * enableUpdate = uwfAdapter.activate(before.getId(), null);
+         * } else if (enabled && user.isSuspended()) {
+         * enableUpdate = uwfAdapter.reactivate(before.getId());
+         * } else if (!enabled && !user.isSuspended()) {
+         * enableUpdate = uwfAdapter.suspend(before.getId());
+         * }
+         *
+         * if (enableUpdate != null) {
+         * if (enableUpdate.getPropByRes() != null) {
+         * updated.getPropByRes().merge(enableUpdate.getPropByRes());
+         * updated.getPropByRes().purge();
+         * }
+         * updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
+         * }
+         * }
+         *
+         * final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+         * updated, updated.getResult().getKey().getPassword() != null,
+         * Collections.singleton(profile.getSyncTask().getResource().getName()));
+         *
+         * taskExecutor.execute(tasks); */
+
+        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.updateInSync(userMod, before.getId(),
+                result, enabled, Collections.singleton(profile.getSyncTask().getResource().getName()));
 
         return userDataBinder.getUserTO(updated.getKey());
     }
@@ -189,7 +189,7 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
     protected void delete(final Long id) {
         try {
             userProvisioningManager.
-                    delete(id,Collections.<String>singleton(profile.getSyncTask().getResource().getName()));
+                    delete(id, Collections.<String>singleton(profile.getSyncTask().getResource().getName()));
         } catch (Exception e) {
             // A propagation failure doesn't imply a synchronization failure.
             // The propagation exception status will be reported into the propagation task execution.

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java b/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
index 138b0fe..0c148b1 100644
--- a/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
+++ b/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
@@ -77,8 +77,8 @@ class AttributeDeserializer extends JsonDeserializer<Attribute> {
         return Uid.NAME.equals(name)
                 ? new Uid(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
                 : Name.NAME.equals(name)
-                ? new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
-                : AttributeBuilder.build(name, values);
+                        ? new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
+                        : AttributeBuilder.build(name, values);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java b/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
index ea54a90..ccf2e86 100644
--- a/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
@@ -57,16 +57,16 @@ public class ContentLoaderHandler extends DefaultHandler {
         Map<String, Integer> colTypes = jdbcTemplate.query("SELECT * FROM " + tableName,
                 new ResultSetExtractor<Map<String, Integer>>() {
 
-            @Override
-            public Map<String, Integer> extractData(final ResultSet rs) throws SQLException, DataAccessException {
-                Map<String, Integer> colTypes = new HashMap<String, Integer>();
-                for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
-                    colTypes.put(rs.getMetaData().getColumnName(i).toUpperCase(),
-                            rs.getMetaData().getColumnType(i));
-                }
-                return colTypes;
-            }
-        });
+                    @Override
+                    public Map<String, Integer> extractData(final ResultSet rs) throws SQLException, DataAccessException {
+                        Map<String, Integer> colTypes = new HashMap<String, Integer>();
+                        for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
+                            colTypes.put(rs.getMetaData().getColumnName(i).toUpperCase(),
+                                    rs.getMetaData().getColumnType(i));
+                        }
+                        return colTypes;
+                    }
+                });
 
         Object[] parameters = new Object[attrs.getLength()];
         for (int i = 0; i < attrs.getLength(); i++) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/RouteManager.java b/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
index 67ebd82..397d7b0 100644
--- a/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
+++ b/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
@@ -16,24 +16,27 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.util;
 
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.core.persistence.beans.CamelRoute;
 
-
 public class RouteManager {
+
     private static List<CamelRoute> routelist;
-    
-    public static void addElement(CamelRoute route){
-        if(routelist == null) routelist= new ArrayList<CamelRoute>();
+
+    public static void addElement(CamelRoute route) {
+        if (routelist == null) {
+            routelist = new ArrayList<CamelRoute>();
+        }
         routelist.add(route);
     }
-    
-    public static List<CamelRoute> getRoutes(){
-        if(routelist == null) routelist= new ArrayList<CamelRoute>();
+
+    public static List<CamelRoute> getRoutes() {
+        if (routelist == null) {
+            routelist = new ArrayList<CamelRoute>();
+        }
         return routelist;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java b/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
index 860a153..b11d0a5 100644
--- a/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
+++ b/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
@@ -23,21 +23,21 @@ import java.security.SecureRandom;
 import org.apache.commons.lang3.RandomStringUtils;
 
 public class SecureRandomUtil {
-    
+
     private static final SecureRandom RANDOM = new SecureRandom();
 
     public static String generateRandomPassword(final int tokenLength) {
         return RandomStringUtils.random(tokenLength, 0, 0, true, false, null, RANDOM);
     }
-    
+
     public static String generateRandomLetter() {
         return RandomStringUtils.random(1, 0, 0, true, false, null, RANDOM);
     }
-    
+
     public static String generateRandomNumber() {
         return RandomStringUtils.random(1, 0, 0, false, true, null, RANDOM);
     }
-    
+
     public static String generateRandomSpecialCharacter(char[] characters) {
         return RandomStringUtils.random(1, 0, 0, false, false, characters, RANDOM);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java b/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
index 4e82401..30a0324 100644
--- a/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
+++ b/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
@@ -42,19 +42,19 @@ class SyncTokenDeserializer extends JsonDeserializer<SyncToken> {
             value = node.isNull()
                     ? null
                     : node.isBoolean()
-                    ? node.asBoolean()
-                    : node.isDouble()
-                    ? node.asDouble()
-                    : node.isLong()
-                    ? node.asLong()
-                    : node.isInt()
-                    ? node.asInt()
-                    : node.asText();
-            
+                            ? node.asBoolean()
+                            : node.isDouble()
+                                    ? node.asDouble()
+                                    : node.isLong()
+                                            ? node.asLong()
+                                            : node.isInt()
+                                                    ? node.asInt()
+                                                    : node.asText();
+
             if (value instanceof String) {
-                byte[] bytes = ((String)value).getBytes();
+                byte[] bytes = ((String) value).getBytes();
                 if (Base64.isBase64(bytes)) {
-                   value = Base64.decode(bytes);
+                    value = Base64.decode(bytes);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java b/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
index 0e67f5e..2f033f2 100644
--- a/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
+++ b/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
@@ -134,8 +134,8 @@ public final class JexlUtil {
                         context.set(fieldName, fieldValue == null
                                 ? ""
                                 : (type.equals(Date.class)
-                                ? DataFormat.format((Date) fieldValue, false)
-                                : fieldValue));
+                                        ? DataFormat.format((Date) fieldValue, false)
+                                        : fieldValue));
 
                         LOG.debug("Add field {} with value {}", fieldName, fieldValue);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/package-info.java b/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
index 2821d3a..b459536 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.workflow;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
index cd40429..b222100 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
@@ -30,7 +30,7 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-@Transactional(rollbackFor = {Throwable.class})
+@Transactional(rollbackFor = { Throwable.class })
 public abstract class AbstractRoleWorkflowAdapter implements RoleWorkflowAdapter {
 
     @Autowired

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
index f059a9a..8fbc25c 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
@@ -117,7 +117,7 @@ public abstract class AbstractUserWorkflowAdapter implements UserWorkflowAdapter
         doRequestPasswordReset(dataBinder.getUserFromId(userId));
     }
 
-    protected abstract void doConfirmPasswordReset(SyncopeUser user, String token, String password) 
+    protected abstract void doConfirmPasswordReset(SyncopeUser user, String token, String password)
             throws WorkflowException;
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
index 8713261..2157301 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
@@ -230,7 +230,8 @@ public class NoOpUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     }
 
     @Override
-    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws UnauthorizedRoleException, WorkflowException {
+    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws
+            UnauthorizedRoleException, WorkflowException {
         return create(userTO, false, true);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
index c2844db..0d48227 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
@@ -152,7 +152,7 @@ public interface UserWorkflowAdapter extends WorkflowAdapter {
      * @throws UnauthorizedRoleException authorization exception
      * @throws WorkflowException workflow exception
      */
-    void confirmPasswordReset(Long userId, String token, String password) 
+    void confirmPasswordReset(Long userId, String token, String password)
             throws UnauthorizedRoleException, WorkflowException;
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
index 460b73b..adeb9f8 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
@@ -885,7 +885,8 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     }
 
     @Override
-    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws UnauthorizedRoleException, WorkflowException {
+    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws
+            UnauthorizedRoleException, WorkflowException {
         return create(userTO, false, storePassword);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
index c91e7e0..f670258 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
@@ -106,7 +106,7 @@ public class SyncopeGroupManager implements GroupIdentityManager, SyncopeSession
     public void updateGroup(final Group updatedGroup) {
         throw new UnsupportedOperationException();
     }
-    
+
     @Override
     public boolean isNewGroup(final Group group) {
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
index 42ea38c..9285ed9 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
@@ -121,7 +121,7 @@ public class SyncopeUserManager implements UserIdentityManager, SyncopeSession {
     public void updateUser(final User updatedUser) {
         throw new UnsupportedOperationException();
     }
-    
+
     @Override
     public Picture getUserPicture(final String string) {
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/persistenceContextEMFactory.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/persistenceContextEMFactory.xml b/core/src/main/resources/persistenceContextEMFactory.xml
index 3337dd3..8fe4864 100644
--- a/core/src/main/resources/persistenceContextEMFactory.xml
+++ b/core/src/main/resources/persistenceContextEMFactory.xml
@@ -37,8 +37,8 @@ under the License.
     <property name="jpaPropertyMap">
       <map>
         <!--<entry key="openjpa.Log" value="SQL=TRACE"/>
-        <entry key="openjpa.ConnectionFactoryProperties" 
-               value="PrintParameters=true, PrettyPrint=true, PrettyPrintLineLength=80"/>-->
+ <entry key="openjpa.ConnectionFactoryProperties" 
+        value="PrintParameters=true, PrettyPrint=true, PrettyPrintLineLength=80"/>-->
                 
         <entry key="openjpa.NontransactionalWrite" value="false"/>
         <entry key="openjpa.AutoDetach" value="close, commit, nontx-read, rollback"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/report/staticReportlet2fo.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/report/staticReportlet2fo.xsl b/core/src/main/resources/report/staticReportlet2fo.xsl
index 2b9a971..c123d51 100644
--- a/core/src/main/resources/report/staticReportlet2fo.xsl
+++ b/core/src/main/resources/report/staticReportlet2fo.xsl
@@ -23,62 +23,62 @@ under the License.
                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
                 version="1.0">
 
-    <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
+  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
 
-        <fo:block font-size="14pt" font-weight="bold" space-after="0.5cm">Reportlet: 
-            <xsl:value-of select="@name"/>
-        </fo:block>
+    <fo:block font-size="14pt" font-weight="bold" space-after="0.5cm">Reportlet: 
+      <xsl:value-of select="@name"/>
+    </fo:block>
 
-        <xsl:if test="string-length(string/text()) &gt; 0">
-            <fo:block font-size="11pt">String value: 
-                <xsl:value-of select="string/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(string/text()) &gt; 0">
+      <fo:block font-size="11pt">String value: 
+        <xsl:value-of select="string/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(long/text()) &gt; 0">
-            <fo:block font-size="11pt">Long value: 
-                <xsl:value-of select="long/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(long/text()) &gt; 0">
+      <fo:block font-size="11pt">Long value: 
+        <xsl:value-of select="long/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(double/text()) &gt; 0">
-            <fo:block font-size="11pt">Double value: 
-                <xsl:value-of select="double/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(double/text()) &gt; 0">
+      <fo:block font-size="11pt">Double value: 
+        <xsl:value-of select="double/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(date/text()) &gt; 0">
-            <fo:block font-size="11pt">Date value: 
-                <xsl:value-of select="date/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(date/text()) &gt; 0">
+      <fo:block font-size="11pt">Date value: 
+        <xsl:value-of select="date/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(enum/text()) &gt; 0">
-            <fo:block font-size="11pt">Enum value: 
-                <xsl:value-of select="enum/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(enum/text()) &gt; 0">
+      <fo:block font-size="11pt">Enum value: 
+        <xsl:value-of select="enum/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(list) &gt; 0">
-            <fo:block font-size="11pt">List values:</fo:block>
+    <xsl:if test="string-length(list) &gt; 0">
+      <fo:block font-size="11pt">List values:</fo:block>
             
-            <fo:list-block provisional-label-separation="4mm" provisional-distance-between-starts="2mm">
-                <xsl:for-each select="list/string">
-                    <xsl:if test="string-length(string/text()) &gt; 0">
-                        <fo:list-item>
-                            <fo:list-item-label end-indent="label-end()">
-                                <fo:block>&#x2022;</fo:block>
-                            </fo:list-item-label>
-                            <fo:list-item-body start-indent="body-start()">
-                                <fo:block>
-                                    <xsl:value-of select="text()"/>
-                                </fo:block>
-                            </fo:list-item-body>
-                        </fo:list-item>
-                    </xsl:if>
-                </xsl:for-each>
-            </fo:list-block>
-        </xsl:if>
+      <fo:list-block provisional-label-separation="4mm" provisional-distance-between-starts="2mm">
+        <xsl:for-each select="list/string">
+          <xsl:if test="string-length(string/text()) &gt; 0">
+            <fo:list-item>
+              <fo:list-item-label end-indent="label-end()">
+                <fo:block>&#x2022;</fo:block>
+              </fo:list-item-label>
+              <fo:list-item-body start-indent="body-start()">
+                <fo:block>
+                  <xsl:value-of select="text()"/>
+                </fo:block>
+              </fo:list-item-body>
+            </fo:list-item>
+          </xsl:if>
+        </xsl:for-each>
+      </fo:list-block>
+    </xsl:if>
         
-    </xsl:template>
+  </xsl:template>
 </xsl:stylesheet>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/report/staticReportlet2html.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/report/staticReportlet2html.xsl b/core/src/main/resources/report/staticReportlet2html.xsl
index 0fb7b28..da0ba85 100644
--- a/core/src/main/resources/report/staticReportlet2html.xsl
+++ b/core/src/main/resources/report/staticReportlet2html.xsl
@@ -22,53 +22,53 @@ under the License.
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 version="1.0">
 
-    <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
-        <h2>Reportlet: 
-            <xsl:value-of select="@name"/>
-        </h2>
+  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
+    <h2>Reportlet: 
+      <xsl:value-of select="@name"/>
+    </h2>
         
-        <xsl:if test="string-length(string/text()) &gt; 0">
-            <p>String value:                 
-                <xsl:value-of select="string/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(string/text()) &gt; 0">
+      <p>String value:                 
+        <xsl:value-of select="string/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(long/text()) &gt; 0">
-            <p>Long value: 
-                <xsl:value-of select="long/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(long/text()) &gt; 0">
+      <p>Long value: 
+        <xsl:value-of select="long/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(double/text()) &gt; 0">
-            <p>Double value: 
-                <xsl:value-of select="double/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(double/text()) &gt; 0">
+      <p>Double value: 
+        <xsl:value-of select="double/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(date/text()) &gt; 0">
-            <p>Date value: 
-                <xsl:value-of select="date/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(date/text()) &gt; 0">
+      <p>Date value: 
+        <xsl:value-of select="date/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(enum/text()) &gt; 0">
-            <p>Enum value: 
-                <xsl:value-of select="enum/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(enum/text()) &gt; 0">
+      <p>Enum value: 
+        <xsl:value-of select="enum/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(list) &gt; 0">
-            <p>List values:</p>
+    <xsl:if test="string-length(list) &gt; 0">
+      <p>List values:</p>
             
-            <ul>
-                <xsl:for-each select="list/string">
-                    <xsl:if test="string-length(string/text()) &gt; 0">
-                        <li>
-                            <xsl:value-of select="text()"/>
-                        </li>
-                    </xsl:if>
-                </xsl:for-each>
-            </ul>
-        </xsl:if>
-    </xsl:template>
+      <ul>
+        <xsl:for-each select="list/string">
+          <xsl:if test="string-length(string/text()) &gt; 0">
+            <li>
+              <xsl:value-of select="text()"/>
+            </li>
+          </xsl:if>
+        </xsl:for-each>
+      </ul>
+    </xsl:if>
+  </xsl:template>
 </xsl:stylesheet>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/report/userReportlet2html.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/report/userReportlet2html.xsl b/core/src/main/resources/report/userReportlet2html.xsl
index 3367169..751cb4c 100644
--- a/core/src/main/resources/report/userReportlet2html.xsl
+++ b/core/src/main/resources/report/userReportlet2html.xsl
@@ -157,9 +157,9 @@ under the License.
         </xsl:otherwise>
       </xsl:choose>
       <xsl:if test="string-length(resources) &gt; 0">
-          <xsl:call-template name="resources">
-              <xsl:with-param name="node" select="resources/resource"/>
-          </xsl:call-template>
+        <xsl:call-template name="resources">
+          <xsl:with-param name="node" select="resources/resource"/>
+        </xsl:call-template>
       </xsl:if>
       <hr/>
     </xsl:for-each>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/roleRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/roleRoute.xml b/core/src/main/resources/roleRoute.xml
index 80ff595..44cdfa4 100644
--- a/core/src/main/resources/roleRoute.xml
+++ b/core/src/main/resources/roleRoute.xml
@@ -24,151 +24,151 @@ under the License.
                            http://camel.apache.org/schema/spring
                            http://camel.apache.org/schema/spring/camel-spring.xsd">
  
+  <!--
+      The default routes define each task involved in user creation:
+      main operations consist in user workflow creation and its propagation.         
+  -->
+  <routeContext id="defaultRoleRoutes" xmlns="http://camel.apache.org/schema/spring"> 
     <!--
-        The default routes define each task involved in user creation:
-        main operations consist in user workflow creation and its propagation.         
+        CREATE ROLE
     -->
-    <routeContext id="defaultRoleRoutes" xmlns="http://camel.apache.org/schema/spring"> 
-<!--
-            CREATE ROLE
-        -->
         
-        <route id="createRole">
-          <from uri="direct:createRole"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreatePropagation" />
-            <to uri="direct:createRolePort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRolePort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <route id="createRole">
+      <from uri="direct:createRole"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreatePropagation" />
+        <to uri="direct:createRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRolePort"/>
+        </doCatch>
+      </doTry>
+    </route> 
                
-        <!--
-            CREATE ROLE SYNC
-        -->
-        <route id="createRoleSync">
-          <from uri="direct:createRoleSync"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreateSyncPropagation" />
-            <to uri="direct:createRoleSyncPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRoleSyncPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <!--
+        CREATE ROLE SYNC
+    -->
+    <route id="createRoleSync">
+      <from uri="direct:createRoleSync"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreateSyncPropagation" />
+        <to uri="direct:createRoleSyncPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRoleSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
          
-        <!--
-            UPDATE ROLE
-        -->
-        <route id="updateRole">
-            <from uri="direct:updateRole"/>
-            <setProperty propertyName="subjectMod">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="rwfAdapter" method="update(${body})"/>
-              <process ref="defaultRoleUpdatePropagation" />
-              <to uri="direct:updateRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE ROLE
+    -->
+    <route id="updateRole">
+      <from uri="direct:updateRole"/>
+      <setProperty propertyName="subjectMod">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <process ref="defaultRoleUpdatePropagation" />
+        <to uri="direct:updateRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
                
-        <!--
-            DELETE ROLE
-        -->
-        <route id="deleteRole">
-            <from uri="direct:deleteRole"/>
-            <doTry>
-              <process ref="defaultRoleDeletePropagation" />
-              <bean ref="rwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deleteRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deleteRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        DELETE ROLE
+    -->
+    <route id="deleteRole">
+      <from uri="direct:deleteRole"/>
+      <doTry>
+        <process ref="defaultRoleDeletePropagation" />
+        <bean ref="rwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deleteRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deleteRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkRole">
-            <from uri="direct:unlinkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:unlinkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkRole">
+      <from uri="direct:unlinkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:unlinkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkRole">
-            <from uri="direct:linkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:linkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkRole">
+      <from uri="direct:linkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:linkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            DEPROVISION ROLE
-        -->
-        <route id="deprovisionRole">
-            <from uri="direct:deprovisionRole"/>            
-              <process ref="defaultRoleDeprovisionPropagation" />
-              <to uri="direct:deprovisionRolePort"/>              
-        </route>
-</routeContext>
+    <!--
+        DEPROVISION ROLE
+    -->
+    <route id="deprovisionRole">
+      <from uri="direct:deprovisionRole"/>            
+      <process ref="defaultRoleDeprovisionPropagation" />
+      <to uri="direct:deprovisionRolePort"/>              
+    </route>
+  </routeContext>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/userRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/userRoute.xml b/core/src/main/resources/userRoute.xml
index e65ef2f..763996d 100644
--- a/core/src/main/resources/userRoute.xml
+++ b/core/src/main/resources/userRoute.xml
@@ -24,240 +24,240 @@ under the License.
                            http://camel.apache.org/schema/spring
                            http://camel.apache.org/schema/spring/camel-spring.xsd">
  
-    <!--
-        The default routes define each task involved in user creation:
-        main operations consist in user workflow creation and its propagation.         
-    -->
-    <routeContext id="defaultUserRoutes" xmlns="http://camel.apache.org/schema/spring">  	
-	<route id="createUser">
-          <from uri="direct:createUser"/>
-          <setProperty propertyName="actual">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="uwfAdapter" 
-                  method="create(${body},${property.disablePwdPolicyCheck},
+  <!--
+      The default routes define each task involved in user creation:
+      main operations consist in user workflow creation and its propagation.         
+  -->
+  <routeContext id="defaultUserRoutes" xmlns="http://camel.apache.org/schema/spring">  	
+    <route id="createUser">
+      <from uri="direct:createUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" 
+              method="create(${body},${property.disablePwdPolicyCheck},
                                  ${property.enabled},${property.storePassword})"/>
-            <process ref="defaultUserCreatePropagation" />
-            <to uri="direct:createPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+        <process ref="defaultUserCreatePropagation" />
+        <to uri="direct:createPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
-        <!--
-            The propagation route deals with propagation of created user. In this
-            case we used a custom processor to perform this task: it means that
-            a custom java class contains the propagation strategy.
-        -->
+    <!--
+        The propagation route deals with propagation of created user. In this
+        case we used a custom processor to perform this task: it means that
+        a custom java class contains the propagation strategy.
+    -->
        
-        <!--
-            UPDATE USER
-        -->
-        <route id="updateUser">
-            <from uri="direct:updateUser"/>
-            <setProperty propertyName="actual">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <process ref="defaultUserUpdatePropagation" />
-              <to uri="direct:updatePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updatePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE USER
+    -->
+    <route id="updateUser">
+      <from uri="direct:updateUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <process ref="defaultUserUpdatePropagation" />
+        <to uri="direct:updatePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updatePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
 
                 
-        <!--
-            UPDATE SYNC USER
-        -->
-        <route id="updateSyncUser">
-            <from uri="direct:updateSyncUser"/>            
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <to uri="direct:syncUserStatus"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateSyncPort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE SYNC USER
+    -->
+    <route id="updateSyncUser">
+      <from uri="direct:updateSyncUser"/>            
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <to uri="direct:syncUserStatus"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <route id="syncUserStatus">
-            <from uri="direct:syncUserStatus"/>
-                <process ref="userStatusOnSync" />
-                <process ref="defaultUserUpdateSyncPropagation" />
-            <to uri="direct:updateSyncPort"/>
-        </route>
-        <!--
-            DELETE USER
-        -->
-        <route id="deleteUser">
-            <from uri="direct:deleteUser"/>
-            <doTry>
-              <process ref="defaultUserDeletePropagation" />
-              <bean ref="uwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deletePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deletePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <route id="syncUserStatus">
+      <from uri="direct:syncUserStatus"/>
+      <process ref="userStatusOnSync" />
+      <process ref="defaultUserUpdateSyncPropagation" />
+      <to uri="direct:updateSyncPort"/>
+    </route>
+    <!--
+        DELETE USER
+    -->
+    <route id="deleteUser">
+      <from uri="direct:deleteUser"/>
+      <doTry>
+        <process ref="defaultUserDeletePropagation" />
+        <bean ref="uwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deletePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deletePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkUser">
-            <from uri="direct:unlinkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:unlinkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkUser">
+      <from uri="direct:unlinkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:unlinkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkUser">
-            <from uri="direct:linkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:linkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkUser">
+      <from uri="direct:linkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:linkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!-- 
-            ACTIVATE USER
-        -->
-        <route id="activateUser">
-            <from uri="direct:activateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            REACTIVATE USER
-        -->
-        <route id="reactivateUser">
-            <from uri="direct:reactivateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="reactivate(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            SUSPEND USER
-        -->
-        <route id="suspendUser">
-            <from uri="direct:suspendUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <!-- 
+        ACTIVATE USER
+    -->
+    <route id="activateUser">
+      <from uri="direct:activateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        REACTIVATE USER
+    -->
+    <route id="reactivateUser">
+      <from uri="direct:reactivateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="reactivate(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        SUSPEND USER
+    -->
+    <route id="suspendUser">
+      <from uri="direct:suspendUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
         
-        <!-- 
-            STATUS PROPAGATION
-        -->
+    <!-- 
+        STATUS PROPAGATION
+    -->
         
-        <route id="statusUser">
-            <from uri="direct:statusUser"/>            
-              <process ref="defaultUserStatusPropagation" />
-            <to uri="direct:statusPort"/>              
-        </route>
+    <route id="statusUser">
+      <from uri="direct:statusUser"/>            
+      <process ref="defaultUserStatusPropagation" />
+      <to uri="direct:statusPort"/>              
+    </route>
         
         
-        <!--
-            DEPROVISION USER
-        -->
-        <route id="deprovisionUser">
-            <from uri="direct:deprovisionUser"/>            
-              <process ref="defaultUserDeprovisionPropagation" />
-              <to uri="direct:deprovisionPort"/>              
-        </route>
+    <!--
+        DEPROVISION USER
+    -->
+    <route id="deprovisionUser">
+      <from uri="direct:deprovisionUser"/>            
+      <process ref="defaultUserDeprovisionPropagation" />
+      <to uri="direct:deprovisionPort"/>              
+    </route>
 
 
 
-        <route id="suspendUserWF">
-            <from uri="direct:suspendUserWF"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <process ref="defaultUserWFSuspendPropagation"/>
-                <to uri="direct:suspendWFPort"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:suspendWFPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <route id="suspendUserWF">
+      <from uri="direct:suspendUserWF"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <process ref="defaultUserWFSuspendPropagation"/>
+        <to uri="direct:suspendWFPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:suspendWFPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
 
-</routeContext>
+  </routeContext>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/wadl2html/index.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/wadl2html/index.xsl b/core/src/main/resources/wadl2html/index.xsl
index d7b4e98..e238b99 100644
--- a/core/src/main/resources/wadl2html/index.xsl
+++ b/core/src/main/resources/wadl2html/index.xsl
@@ -48,50 +48,50 @@
 
         <link rel="stylesheet" href="{$contextPath}/webjars/jquery-ui/${jquery-ui.version}/themes/base/minified/jquery-ui.min.css"/>
         <style>
-body {
-  font-family: "Verdana,Arial,sans-serif";
-  font-size: 0.9em;
-}
+          body {
+          font-family: "Verdana,Arial,sans-serif";
+          font-size: 0.9em;
+          }
 
-table {
-  font-family: "Verdana,Arial,sans-serif";
-  font-size: 0.9em;
-  border-width: 1px;
-  border-color: #666666;
-  border-collapse: collapse;
-}
-table th {
-  border-width: 1px;
-  padding: 8px;
-  border-style: solid;
-  border-color: #666666;
-  background-color: #dedede;
-}
-td {
-  border-width: 1px;
-  padding: 8px;
-  border-style: solid;
-  border-color: #666666;
-  background-color: #ffffff;
-  vertical-align: top;
-}
+          table {
+          font-family: "Verdana,Arial,sans-serif";
+          font-size: 0.9em;
+          border-width: 1px;
+          border-color: #666666;
+          border-collapse: collapse;
+          }
+          table th {
+          border-width: 1px;
+          padding: 8px;
+          border-style: solid;
+          border-color: #666666;
+          background-color: #dedede;
+          }
+          td {
+          border-width: 1px;
+          padding: 8px;
+          border-style: solid;
+          border-color: #666666;
+          background-color: #ffffff;
+          vertical-align: top;
+          }
 
-.methods {
-  padding: 5px;
-}
+          .methods {
+          padding: 5px;
+          }
 
-.representation-label {
-  font-weight: bold;
-  width: 80px;
-}
+          .representation-label {
+          font-weight: bold;
+          width: 80px;
+          }
 
-.ui-widget { font-size: 0.9em; }
-.ui-tabs-vertical { width: 60em; }
-.ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 15em; }
-.ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }
-.ui-tabs-vertical .ui-tabs-nav li a { display:block; }
-.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }
-.ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}
+          .ui-widget { font-size: 0.9em; }
+          .ui-tabs-vertical { width: 60em; }
+          .ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 15em; }
+          .ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }
+          .ui-tabs-vertical .ui-tabs-nav li a { display:block; }
+          .ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }
+          .ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}
         </style>
         
         <script src="{$contextPath}/webjars/jquery/${jquery.version}/jquery.min.js">

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
index fcc9dc8..ff0c099 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
@@ -79,7 +79,6 @@ public class DerSchemaTest extends AbstractDAOTest {
         assertNull("delete did not work", actual);
 
         // ------------- //
-
         RDerSchema rderiveddata = derSchemaDAO.find("rderiveddata", RDerSchema.class);
         assertNotNull(rderiveddata);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
index 87bf75b..86e725c 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
@@ -52,7 +52,7 @@ public class SecurityQuestionTest extends AbstractDAOTest {
     public void save() {
         SecurityQuestion securityQuestion = new SecurityQuestion();
         securityQuestion.setContent("What is your favorite pet's name?");
-        
+
         SecurityQuestion actual = securityQuestionDAO.save(securityQuestion);
         assertNotNull(actual);
         assertNotNull(actual.getId());

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
index ef0c4a8..efae722 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
@@ -77,7 +77,6 @@ public class VirSchemaTest extends AbstractDAOTest {
         assertNull("delete did not work", actual);
 
         // ------------- //
-
         RVirSchema rvirtualdata = virSchemaDAO.find("rvirtualdata", RVirSchema.class);
         assertNotNull(rvirtualdata);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
index d1063f5..4dbf804 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
@@ -709,13 +709,13 @@ public class ConnectorTestITCase extends AbstractTest {
 
     @Test
     public void issueSYNCOPE605() {
-        
+
         ConnInstanceTO connectorInstanceTO = connectorService.read(103L);
         assertTrue(connectorInstanceTO.getCapabilities().isEmpty());
-        
+
         connectorInstanceTO.getCapabilities().add(ConnectorCapability.SEARCH);
         connectorService.update(connectorInstanceTO.getId(), connectorInstanceTO);
-        
+
         ConnInstanceTO updatedCapabilities = connectorService.read(connectorInstanceTO.getId());
         assertNotNull(updatedCapabilities.getCapabilities());
         assertTrue(updatedCapabilities.getCapabilities().size() == 1);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
index 7d7a433..3008350 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
@@ -44,7 +44,7 @@ public class NotificationTestITCase extends AbstractTest {
         NotificationTO notificationTO = new NotificationTO();
         notificationTO.setTraceLevel(TraceLevel.SUMMARY);
         notificationTO.getEvents().add("create");
-        
+
         notificationTO.setUserAbout(SyncopeClient.getUserSearchConditionBuilder().
                 is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
index 18b1e3f..0100538 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
@@ -227,12 +227,12 @@ public class PolicyTestITCase extends AbstractTest {
     public void issueSYNCOPE553() {
         AccountPolicyTO policy = new AccountPolicyTO(false);
         policy.setDescription("SYNCOPE553");
-        
+
         final AccountPolicySpec accountPolicySpec = new AccountPolicySpec();
         accountPolicySpec.setMinLength(3);
         accountPolicySpec.setMaxLength(8);
         policy.setSpecification(accountPolicySpec);
-        
+
         policy = createPolicy(policy);
         assertNotNull(policy);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
index 77f4c66..e4b915f 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
@@ -507,7 +507,7 @@ public class ResourceTestITCase extends AbstractTest {
         item.setExtAttrName("cn");
         item.setPurpose(MappingPurpose.BOTH);
         mapping.setAccountIdItem(item);
-            
+
         item = new MappingItemTO();
         item.setIntMappingType(IntMappingType.RoleOwnerSchema);
         item.setExtAttrName("owner");


[24/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/master
Commit: fe8eeb247f622b775e2a53472a34b5831b8a2422
Parents: 7aa0db3 51c543d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Dec 23 08:46:13 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Dec 23 08:46:13 2014 +0100

----------------------------------------------------------------------
 installer/pom.xml                               |  20 +++
 .../installer/containers/jboss/JBoss.java       |  12 +-
 .../org/apache/syncope/installer/enums/DBs.java |   3 +
 .../installer/files/ConsoleProperties.java      |  31 ++++
 .../syncope/installer/files/CoreWebXml.java     |  76 ++------
 .../installer/files/GlassfishCoreWebXml.java    |  38 +---
 .../files/JBossDeploymentStructureXml.java      |  40 +----
 .../syncope/installer/files/ParentPom.java      | 176 +------------------
 .../files/PersistenceContextEMFactoryXml.java   |  47 +----
 .../installer/files/PersistenceProperties.java  |  27 +--
 .../installer/processes/ArchetypeProcess.java   |  41 +++--
 .../installer/processes/BaseProcess.java        |  54 ++++++
 .../installer/processes/ContainerProcess.java   | 171 ++++++++++++++----
 .../installer/processes/PersistenceProcess.java |  25 ++-
 .../installer/utilities/FileSystemUtils.java    |  45 +++++
 .../syncope/installer/utilities/MavenUtils.java |  31 +---
 .../src/main/resources/configuration.properties |  31 ++++
 .../main/resources/izpack/ProcessPanel.Spec.xml |  40 +++--
 installer/src/main/resources/izpack/install.xml |   6 +-
 .../main/resources/izpack/userInputLang.xml_eng |   4 +
 .../main/resources/izpack/userInputLang.xml_ita |   4 +
 .../src/main/resources/izpack/userInputSpec.xml |  20 ++-
 installer/src/main/resources/modelerPom.xml     | 116 ++++++++++++
 23 files changed, 589 insertions(+), 469 deletions(-)
----------------------------------------------------------------------



[43/53] [abbrv] syncope git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/syncope

Posted by il...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/syncope


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

Branch: refs/heads/2_0_X
Commit: 1d58c50063c4fe0be08db994815671dcc89ff096
Parents: 286d5cb 44b21af
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Mon Jan 5 11:09:30 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Mon Jan 5 11:09:30 2015 +0100

----------------------------------------------------------------------
 pom.xml           | 11 +++++++++++
 src/site/site.xml |  3 ---
 2 files changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



[41/53] [abbrv] syncope git commit: [SYNCOPE-625] Replaced java.nio for Java 6

Posted by il...@apache.org.
[SYNCOPE-625] Replaced java.nio for Java 6


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

Branch: refs/heads/2_0_X
Commit: 069b56f92aee2cfc79c326993ac8bf894bb07b04
Parents: fde8f4d
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Mon Jan 5 11:07:36 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Mon Jan 5 11:07:36 2015 +0100

----------------------------------------------------------------------
 .../syncope/installer/utilities/FileSystemUtils.java      | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/069b56f9/installer/src/main/java/org/apache/syncope/installer/utilities/FileSystemUtils.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/utilities/FileSystemUtils.java b/installer/src/main/java/org/apache/syncope/installer/utilities/FileSystemUtils.java
index 4381c1e..7e9f7b8 100644
--- a/installer/src/main/java/org/apache/syncope/installer/utilities/FileSystemUtils.java
+++ b/installer/src/main/java/org/apache/syncope/installer/utilities/FileSystemUtils.java
@@ -30,10 +30,6 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.net.URL;
-import java.nio.file.CopyOption;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
@@ -61,11 +57,7 @@ public class FileSystemUtils {
 
     public void copyFile(final String sourceFilePath, final String targetFilePath) {
         try {
-            final CopyOption[] options = new CopyOption[] {
-                StandardCopyOption.REPLACE_EXISTING,
-                StandardCopyOption.COPY_ATTRIBUTES
-            };
-            Files.copy(Paths.get(sourceFilePath), Paths.get(targetFilePath), options);
+            FileUtils.copyFile(new File(sourceFilePath), new File(targetFilePath));
         } catch (final IOException ex) {
             final String errorMessage =
                     "Error copy file " + sourceFilePath + " to " + targetFilePath;


[49/53] [abbrv] syncope git commit: restoring original POM name / desc

Posted by il...@apache.org.
restoring original POM name / desc


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

Branch: refs/heads/2_0_X
Commit: 01ac2bd7dd4cb2116b7ee5e6b7502f066527c08b
Parents: d388f24
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 14:14:01 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 14:14:01 2015 +0100

----------------------------------------------------------------------
 pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/01ac2bd7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1fe0129..30673a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,8 @@ under the License.
 
   <modelVersion>4.0.0</modelVersion>
 
-  <name>PoC for integrating Apache Camel in Apache Syncope</name>
+  <name>Apache Syncope</name>
+  <description>Apache Syncope parent POM</description>
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>


[04/53] [abbrv] syncope git commit: Initial running version, in order to fix #1

Posted by il...@apache.org.
Initial running version, in order to fix #1


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

Branch: refs/heads/master
Commit: 5b3b124a0c4254e39f0caf5b0daabb5b7d571a56
Parents: bac25e1
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 15 16:37:58 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 15 16:37:58 2014 +0100

----------------------------------------------------------------------
 .../syncope/common/services/RouteService.java   |  49 ++
 .../common/services/WorkflowService.java        |   9 +
 .../org/apache/syncope/common/to/RouteTO.java   |  60 +++
 .../syncope/console/pages/Configuration.java    | 120 +++++
 .../syncope/console/pages/RouteModalPage.java   |  90 ++++
 .../syncope/console/rest/RouteRestClient.java   |  47 ++
 console/src/main/resources/authorizations.xml   |  13 +
 .../syncope/console/pages/Configuration.html    | 403 ++++++++--------
 .../console/pages/Configuration.properties      |   1 +
 .../syncope/console/pages/RouteModalPage.html   |  49 ++
 .../console/pages/RouteModalPage.properties     |  18 +
 .../console/pages/RouteModalPage_it.properties  |  18 +
 .../pages/RouteModalPage_pt_BR.properties       |  18 +
 core/pom.xml                                    |  19 +
 .../syncope/core/init/CamelRouteLoader.java     | 106 +++++
 .../core/init/SpringContextInitializer.java     |   5 +
 .../core/persistence/beans/CamelRoute.java      |  63 +++
 .../syncope/core/persistence/dao/RouteDAO.java  |  34 ++
 .../core/persistence/dao/impl/RouteDAOImpl.java |  58 +++
 .../DefaultRoleProvisioningManager.java         | 231 ++++++++++
 .../DefaultUserProvisioningManager.java         | 347 ++++++++++++++
 .../provisioning/RoleProvisioningManager.java   |  35 ++
 .../provisioning/UserProvisioningManager.java   |  50 ++
 .../camel/CamelRoleProvisioningManager.java     | 307 +++++++++++++
 .../camel/CamelUserProvisioningManager.java     | 456 +++++++++++++++++++
 .../provisioning/camel/SyncopeCamelContext.java | 137 ++++++
 .../DefaultRoleCreatePropagation.java           |  76 ++++
 .../DefaultRoleCreateSyncPropagation.java       |  79 ++++
 .../DefaultRoleDeletePropagation.java           | 100 ++++
 .../DefaultRoleDeprovisionPropagation.java      |  74 +++
 .../DefaultRoleUpdatePropagation.java           |  75 +++
 .../DefaultUserCreatePropagation.java           |  76 ++++
 .../DefaultUserDeletePropagation.java           |  72 +++
 .../DefaultUserDeprovisionPropagation.java      |  74 +++
 .../DefaultUserStatusPropagation.java           |  76 ++++
 .../DefaultUserUpdateInSyncPropagation.java     |  78 ++++
 .../DefaultUserUpdatePropagation.java           | 120 +++++
 .../DefaultUserWFSuspendPropagation.java        |  64 +++
 .../camel/processors/UserStatusOnSync.java      |  72 +++
 .../provisioning/ProvisioningManager.java       |  42 ++
 .../core/rest/controller/RoleController.java    | 113 +----
 .../core/rest/controller/RouteController.java   |  92 ++++
 .../core/rest/controller/UserController.java    | 146 +++---
 .../syncope/core/rest/data/RouteDataBinder.java |  40 ++
 .../syncope/core/services/RouteServiceImpl.java |  52 +++
 .../core/services/WorkflowServiceImpl.java      |  10 +
 .../sync/impl/AbstractSyncopeResultHandler.java |   9 +
 .../core/sync/impl/RoleSyncResultHandler.java   |  37 +-
 .../core/sync/impl/UserSyncResultHandler.java   |  33 +-
 .../apache/syncope/core/util/RouteManager.java  |  39 ++
 .../core/workflow/WorkflowUserSuspender.java    |  29 +-
 .../user/AbstractUserWorkflowAdapter.java       |   9 -
 .../workflow/user/NoOpUserWorkflowAdapter.java  |   5 +
 .../activiti/ActivitiUserWorkflowAdapter.java   |   5 +
 core/src/main/resources/camelRoute.xml          | 430 +++++++++++++++++
 core/src/main/resources/content.xml             |   3 +
 core/src/main/resources/coreContext.xml         |  26 +-
 core/src/main/resources/roleRoute.xml           | 174 +++++++
 core/src/main/resources/userRoute.xml           | 263 +++++++++++
 .../core/persistence/dao/EntitlementTest.java   |   2 +-
 core/src/test/resources/content.xml             |   3 +
 pom.xml                                         |  19 +-
 62 files changed, 4906 insertions(+), 454 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/common/src/main/java/org/apache/syncope/common/services/RouteService.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/services/RouteService.java b/common/src/main/java/org/apache/syncope/common/services/RouteService.java
new file mode 100644
index 0000000..feb7db7
--- /dev/null
+++ b/common/src/main/java/org/apache/syncope/common/services/RouteService.java
@@ -0,0 +1,49 @@
+/*
+ * 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.common.services;
+
+import java.util.List;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import org.apache.syncope.common.to.RouteTO;
+
+@Path("routes")
+public interface RouteService extends JAXRSService{
+    
+    @GET
+    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+    List<RouteTO> getRoutes();
+    
+    @GET
+    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+    @Path("{id}")
+    public RouteTO getRoute(@PathParam("id") Long Id);
+    
+    @PUT
+    @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+    @Path("{id}")
+    void importRoute(@PathParam("id") Long id, RouteTO route);
+    
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/common/src/main/java/org/apache/syncope/common/services/WorkflowService.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/services/WorkflowService.java b/common/src/main/java/org/apache/syncope/common/services/WorkflowService.java
index 2a291e0..da70043 100644
--- a/common/src/main/java/org/apache/syncope/common/services/WorkflowService.java
+++ b/common/src/main/java/org/apache/syncope/common/services/WorkflowService.java
@@ -86,4 +86,13 @@ public interface WorkflowService extends JAXRSService {
     @PUT
     @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
     void importDefinition(@NotNull @PathParam("kind") SubjectType kind, @NotNull String definition);
+    
+    @GET
+    @Path("{id}")
+    @Produces({ MediaType.APPLICATION_XML })
+    Response getRoute(@PathParam("id") Long id);
+    
+    @GET
+    @Produces({ MediaType.APPLICATION_XML })
+    Response getRoutes();
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/common/src/main/java/org/apache/syncope/common/to/RouteTO.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/to/RouteTO.java b/common/src/main/java/org/apache/syncope/common/to/RouteTO.java
new file mode 100644
index 0000000..d9fe833
--- /dev/null
+++ b/common/src/main/java/org/apache/syncope/common/to/RouteTO.java
@@ -0,0 +1,60 @@
+/*
+ * 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.common.to;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.syncope.common.AbstractBaseBean;
+
+@XmlRootElement(name = "route")
+@XmlType
+public class RouteTO extends AbstractBaseBean{
+    
+    private Long id;
+
+    private String name;
+
+    private String routeContent;
+    
+    public void setId(Long id){
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getRouteContent() {
+        return routeContent;
+    }
+
+    public void setRouteContent(String routeContent) {
+        this.routeContent = routeContent;
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java b/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
index b2e5c07..10dcfc7 100644
--- a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
+++ b/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
@@ -32,6 +32,7 @@ import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.common.SyncopeConstants;
 import org.apache.syncope.common.to.LoggerTO;
 import org.apache.syncope.common.to.NotificationTO;
+import org.apache.syncope.common.to.RouteTO;
 import org.apache.syncope.common.to.SecurityQuestionTO;
 import org.apache.syncope.console.commons.AttrLayoutType;
 import org.apache.syncope.common.types.LoggerLevel;
@@ -44,6 +45,7 @@ import org.apache.syncope.console.pages.panels.LayoutsPanel;
 import org.apache.syncope.console.pages.panels.PoliciesPanel;
 import org.apache.syncope.console.rest.LoggerRestClient;
 import org.apache.syncope.console.rest.NotificationRestClient;
+import org.apache.syncope.console.rest.RouteRestClient;
 import org.apache.syncope.console.rest.SecurityQuestionRestClient;
 import org.apache.syncope.console.rest.WorkflowRestClient;
 import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.CollectionPropertyColumn;
@@ -117,6 +119,9 @@ public class Configuration extends BasePage {
 
     @SpringBean
     private WorkflowRestClient wfRestClient;
+    
+    @SpringBean
+    private RouteRestClient routeRestClient;
 
     @SpringBean
     private PreferenceManager prefMan;
@@ -130,12 +135,16 @@ public class Configuration extends BasePage {
     private final ModalWindow createSecurityQuestionWin;
 
     private final ModalWindow editSecurityQuestionWin;
+    
+    private final ModalWindow editRouteWin;
 
     private WebMarkupContainer notificationContainer;
 
     private WebMarkupContainer securityQuestionContainer;
 
     private int notificationPaginatorRows;
+    
+    private int routePaginatorRows;
 
     public Configuration() {
         super();
@@ -267,6 +276,10 @@ public class Configuration extends BasePage {
         add(new LayoutsPanel("selfRoleLayoutPanel", AttrLayoutType.SELF_ROLE, feedbackPanel));
         add(new LayoutsPanel("adminMembershipLayoutPanel", AttrLayoutType.ADMIN_MEMBERSHIP, feedbackPanel));
         add(new LayoutsPanel("selfMembershipLayoutPanel", AttrLayoutType.SELF_MEMBERSHIP, feedbackPanel));
+        
+        //Route Management
+        add(editRouteWin = new ModalWindow("editRouteWin"));
+        setupRoutes();
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
@@ -754,4 +767,111 @@ public class Configuration extends BasePage {
             ctx.updateLoggers();
         }
     }
+    
+    private void setupRoutes() {
+
+        routePaginatorRows = prefMan.getPaginatorRows(getRequest(), "route.paginator.rows");
+
+        final List<IColumn<RouteTO, String>> routeCols = new ArrayList<IColumn<RouteTO, String>>();
+        routeCols.add(new PropertyColumn<RouteTO, String>(
+                new ResourceModel("id"), "id", "id"));
+
+        routeCols.add(new PropertyColumn<RouteTO, String>(
+                new ResourceModel("name"), "name", "name"));
+
+        routeCols.add(new AbstractColumn<RouteTO, String>(new ResourceModel("actions", "")) {
+
+            private static final long serialVersionUID = 2054811145491901166L;
+
+            @Override
+            public String getCssClass() {
+                return "action";
+            }
+
+            @Override
+            public void populateItem(final Item<ICellPopulator<RouteTO>> cellItem, final String componentId,
+                    final IModel<RouteTO> model) {
+
+                final ActionLinksPanel panel = new ActionLinksPanel(componentId, model, getPageReference());
+
+                panel.add(new ActionLink() {
+
+                    private static final long serialVersionUID = -3722207913631435501L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target) {
+
+                        editRouteWin.setPageCreator(new ModalWindow.PageCreator() {
+
+                            private static final long serialVersionUID = -7834632442532690940L;
+
+                            @Override
+                            public Page createPage() {
+                                return new RouteModalPage(Configuration.this.getPageReference(), editRouteWin, routeRestClient.readRoute(model.getObject().getId()), false);
+                                //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+                            }
+
+                        });
+
+                        editRouteWin.show(target);
+                    }
+                }, ActionLink.ActionType.EDIT, "Routes");
+
+                cellItem.add(panel);
+            }
+        });
+
+        final AjaxFallbackDefaultDataTable<RouteTO, String> routeTable
+                = new AjaxFallbackDefaultDataTable<RouteTO, String>(
+                        "routeTable", routeCols, new RouteProvider(), routePaginatorRows);
+
+        WebMarkupContainer routeContainer = new WebMarkupContainer("routesContainer");
+        routeContainer.add(routeTable);
+        routeContainer.setOutputMarkupId(true);
+
+        add(routeContainer);
+
+        editRouteWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
+        editRouteWin.setInitialHeight(NOTIFICATION_WIN_HEIGHT);
+        editRouteWin.setInitialWidth(NOTIFICATION_WIN_WIDTH);
+    }
+    
+    private class RouteProvider extends SortableDataProvider<RouteTO, String> {
+
+        private SortableDataProviderComparator<RouteTO> comparator;
+       
+        public RouteProvider() {
+            setSort("id", SortOrder.ASCENDING);
+            comparator = new SortableDataProviderComparator<RouteTO>(this);   
+        }
+
+        @Override
+        public Iterator<? extends RouteTO> iterator(long first, long count) {
+            List<RouteTO> list =  routeRestClient.readRoutes();
+
+            Collections.sort(list, comparator);
+
+            return list.subList((int) first, (int) first + (int) count).iterator();
+        }
+
+        @Override
+        public long size() {
+            return routeRestClient.readRoutes().size();
+        }
+
+        @Override
+        public IModel<RouteTO> model(final RouteTO route) {
+            return new AbstractReadOnlyModel<RouteTO>() {
+
+                private static final long serialVersionUID = 774694801558497248L;
+
+                @Override
+                public RouteTO getObject() {
+                    return route;
+                }
+            };
+        }
+       
+   }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/java/org/apache/syncope/console/pages/RouteModalPage.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/pages/RouteModalPage.java b/console/src/main/java/org/apache/syncope/console/pages/RouteModalPage.java
new file mode 100644
index 0000000..bba8aa4
--- /dev/null
+++ b/console/src/main/java/org/apache/syncope/console/pages/RouteModalPage.java
@@ -0,0 +1,90 @@
+/*
+ * 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.console.pages;
+
+import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.rest.RouteRestClient;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+
+public class RouteModalPage extends BaseModalPage{
+    
+    @SpringBean
+    private RouteRestClient restClient;
+    
+     public RouteModalPage(final PageReference pageRef, final ModalWindow window,
+            final RouteTO routeTO, final boolean createFlag){
+         
+        Form routeForm = new Form("routeDefForm");            
+        
+        final TextArea<String> routeDefArea = new TextArea<String>("routeContent", new PropertyModel<String>(routeTO, "routeContent"));       
+        //routeDefArea.setOutputMarkupId(true);      
+        
+        routeForm.add(routeDefArea);
+        routeForm.setModel(new CompoundPropertyModel<RouteTO>(routeTO));
+        
+        //routeDefArea.setMarkupId("routeContent");
+
+        AjaxButton submit =
+                new IndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT)), routeForm) {
+
+                    private static final long serialVersionUID = -958724007591692537L;
+
+                    @Override
+                    protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                        try {
+                            restClient.updateRoute(routeTO.getId(), ((RouteTO)form.getModelObject()).getRouteContent());
+                            info(getString(Constants.OPERATION_SUCCEEDED));
+                            
+                            Configuration callerPage = (Configuration) pageRef.getPage();
+                            callerPage.setModalResult(true);                            
+                            window.close(target);
+                        } catch (SyncopeClientException scee) {
+                            error(getString(Constants.ERROR) + ": " + scee.getMessage());
+                        }
+                        target.add(feedbackPanel);
+                    }
+
+                    @Override
+                    protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+                        target.add(feedbackPanel);
+                    }
+
+                };
+
+        MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE,
+                xmlRolesReader.getEntitlement("Routes", "update"));
+        routeForm.add(submit);
+
+        this.add(routeForm);
+     }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java b/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
new file mode 100644
index 0000000..673652a
--- /dev/null
+++ b/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
@@ -0,0 +1,47 @@
+/*
+ * 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.console.rest;
+
+import java.util.List;
+import org.apache.syncope.common.services.RouteService;
+import org.apache.syncope.common.to.RouteTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RouteRestClient extends BaseRestClient{
+    
+    protected static final Logger LOG = LoggerFactory.getLogger(RouteRestClient.class);
+    
+    public List<RouteTO> readRoutes(){
+        return getService(RouteService.class).getRoutes();
+    }
+    
+    public RouteTO readRoute(Long id){
+        return getService(RouteService.class).getRoute(id);
+    }
+    
+    public void updateRoute(Long id, String definition){
+        RouteTO routeTO = readRoute(id);        
+        routeTO.setRouteContent(definition);     
+        getService(RouteService.class).importRoute(routeTO.getId(), routeTO);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/authorizations.xml
----------------------------------------------------------------------
diff --git a/console/src/main/resources/authorizations.xml b/console/src/main/resources/authorizations.xml
index 69e9b0c..d5914f8 100644
--- a/console/src/main/resources/authorizations.xml
+++ b/console/src/main/resources/authorizations.xml
@@ -317,4 +317,17 @@ under the License.
       <entitlement>POLICY_UPDATE</entitlement>
     </action>
   </page>
+  <page id="Routes">
+    <action id="list">
+      <entitlement>ROUTE_LIST</entitlement>
+    </action>
+
+    <action id="read">
+      <entitlement>ROUTE_READ</entitlement>
+    </action>
+
+    <action id="update">
+      <entitlement>ROUTE_UPDATE</entitlement>
+    </action>
+  </page>
 </auth>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
index f3699b8..62f97a8 100644
--- a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
+++ b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
@@ -17,211 +17,220 @@ specific language governing permissions and limitations
 under the License.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-  <wicket:head>
-    <script type="text/javascript">
-      $(document).ready(function () {
-        $("#policies").tabs();
-        $("#logs").tabs();
-        $("#layouts").tabs();
-      });
-    </script>
-  </wicket:head>
+    <wicket:head>
+        <script type="text/javascript">
+            $(document).ready(function () {
+                $("#policies").tabs();
+                $("#logs").tabs();
+                $("#layouts").tabs();
+            });
+        </script>
+    </wicket:head>
 
-  <wicket:extend>
+    <wicket:extend>
 
-    <div id="tabs">
-      <ul>
-        <li class="tabs-selected">
-          <a href="#layouts"><span><wicket:message key="layouts"/></span></a>
-        </li>
-        <li><a href="#policies"><span><wicket:message key="policies"/></span></a></li>
-        <li><a href="#notifications"><span><wicket:message key="notifications"/></span></a></li>
-        <li><a href="#securityQuestions"><span><wicket:message key="securityQuestions"/></span></a></li>
-        <li><a href="#workflow"><span><wicket:message key="workflow"/></span></a></li>
-        <li><a href="#logs"><span><wicket:message key="logs"/></span></a></li>
-      </ul>
-      <div id="layouts">
-        <ul>
-          <li class="tabs-selected">
-            <a href="#adminUser"><span><wicket:message key="adminUser"/></span></a>
-          </li>
-          <li><a href="#selfUser"><span><wicket:message key="selfUser"/></span></a></li>
-          <li><a href="#adminRole"><span><wicket:message key="adminRole"/></span></a></li>
-          <li><a href="#selfRole"><span><wicket:message key="selfRole"/></span></a></li>
-          <li><a href="#adminMembership"><span><wicket:message key="adminMembership"/></span></a></li>
-          <li><a href="#selfMembership"><span><wicket:message key="selfMembership"/></span></a></li>
-        </ul>
-        <div id="adminUser" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="adminUserLayoutPanel">[admin user layout panel]</span>
-        </div>
-        <div id="selfUser" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="selfUserLayoutPanel">[self user layout panel]</span>
-        </div>
-        <div id="adminRole" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="adminRoleLayoutPanel">[admin role layout panel]</span>
-        </div>
-        <div id="selfRole" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="selfRoleLayoutPanel">[self role layout panel]</span>
-        </div>
-        <div id="adminMembership" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="adminMembershipLayoutPanel">[admin membership layout panel]</span>
-        </div>
-        <div id="selfMembership" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="selfMembershipLayoutPanel">[self membership layout panel]</span>
-        </div>
-      </div>      
-      <div id="policies">
-        <ul>
-          <li class="tabs-selected">
-            <a href="#account"><span><wicket:message key="account"/></span></a>
-          </li>
-          <li><a href="#password"><span><wicket:message key="password"/></span></a></li>
-          <li><a href="#sync"><span><wicket:message key="sync"/></span></a></li>
-        </ul>
-        <div id="account" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="accountPoliciesPanel">[account policies]</span>
-        </div>
-        <div id="password" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="passwordPoliciesPanel">[password policies]</span>
-        </div>
-        <div id="sync" style="border-width: 1px;border-top-width: 0px;">
-          <span wicket:id="syncPoliciesPanel">[sync policies]</span>
-        </div>
-      </div>
-      <div id="notifications">
-        <div id="users-contain" class="ui-widget" style="width:inherit">
-          <span wicket:id="notificationContainer">
-            <table class="ui-widget ui-widget-content table-hover"
-                   wicket:id="notificationTable"/>
-          </span>
+        <div id="tabs">
+            <ul>
+                <li class="tabs-selected">
+                    <a href="#layouts"><span><wicket:message key="layouts"/></span></a>
+                </li>
+                <li><a href="#policies"><span><wicket:message key="policies"/></span></a></li>
+                <li><a href="#notifications"><span><wicket:message key="notifications"/></span></a></li>
+                <li><a href="#securityQuestions"><span><wicket:message key="securityQuestions"/></span></a></li>
+                <li><a href="#workflow"><span><wicket:message key="workflow"/></span></a></li>
+                <li><a href="#routes"><span><wicket:message key="routes"/></span></a></li>
+                <li><a href="#logs"><span><wicket:message key="logs"/></span></a></li>
+            </ul>
+            <div id="layouts">
+                <ul>
+                    <li class="tabs-selected">
+                        <a href="#adminUser"><span><wicket:message key="adminUser"/></span></a>
+                    </li>
+                    <li><a href="#selfUser"><span><wicket:message key="selfUser"/></span></a></li>
+                    <li><a href="#adminRole"><span><wicket:message key="adminRole"/></span></a></li>
+                    <li><a href="#selfRole"><span><wicket:message key="selfRole"/></span></a></li>
+                    <li><a href="#adminMembership"><span><wicket:message key="adminMembership"/></span></a></li>
+                    <li><a href="#selfMembership"><span><wicket:message key="selfMembership"/></span></a></li>
+                </ul>
+                <div id="adminUser" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="adminUserLayoutPanel">[admin user layout panel]</span>
+                </div>
+                <div id="selfUser" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="selfUserLayoutPanel">[self user layout panel]</span>
+                </div>
+                <div id="adminRole" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="adminRoleLayoutPanel">[admin role layout panel]</span>
+                </div>
+                <div id="selfRole" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="selfRoleLayoutPanel">[self role layout panel]</span>
+                </div>
+                <div id="adminMembership" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="adminMembershipLayoutPanel">[admin membership layout panel]</span>
+                </div>
+                <div id="selfMembership" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="selfMembershipLayoutPanel">[self membership layout panel]</span>
+                </div>
+            </div>      
+            <div id="policies">
+                <ul>
+                    <li class="tabs-selected">
+                        <a href="#account"><span><wicket:message key="account"/></span></a>
+                    </li>
+                    <li><a href="#password"><span><wicket:message key="password"/></span></a></li>
+                    <li><a href="#sync"><span><wicket:message key="sync"/></span></a></li>
+                </ul>
+                <div id="account" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="accountPoliciesPanel">[account policies]</span>
+                </div>
+                <div id="password" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="passwordPoliciesPanel">[password policies]</span>
+                </div>
+                <div id="sync" style="border-width: 1px;border-top-width: 0px;">
+                    <span wicket:id="syncPoliciesPanel">[sync policies]</span>
+                </div>
+            </div>
+            <div id="notifications">
+                <div id="users-contain" class="ui-widget" style="width:inherit">
+                    <span wicket:id="notificationContainer">
+                        <table class="ui-widget ui-widget-content table-hover"
+                               wicket:id="notificationTable"/>
+                    </span>
 
-          <span style="float:right">
-            <form wicket:id="notificationPaginatorForm" style="display:inline">
-              <label><wicket:message key="displayRows"/></label>
-              <select class="text ui-widget-content ui-corner-all"
-                      wicket:id="rowsChooser"/>
-            </form>
-          </span>
-        </div>
+                    <span style="float:right">
+                        <form wicket:id="notificationPaginatorForm" style="display:inline">
+                            <label><wicket:message key="displayRows"/></label>
+                            <select class="text ui-widget-content ui-corner-all"
+                                    wicket:id="rowsChooser"/>
+                        </form>
+                    </span>
+                </div>
 
-        <div wicket:id="createNotificationWin">[Show modal window for creating notification]</div>
-        <div wicket:id="editNotificationWin">[Show modal window for editing notification]</div>
+                <div wicket:id="createNotificationWin">[Show modal window for creating notification]</div>
+                <div wicket:id="editNotificationWin">[Show modal window for editing notification]</div>
 
-        <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-           wicket:id="createNotificationLink">
-          <wicket:message key="create"/>
-        </a>
-      </div>
-      <div id="securityQuestions">
-        <div id="users-contain" class="ui-widget" style="width:inherit">
-          <span wicket:id="securityQuestionContainer">
-            <table class="ui-widget ui-widget-content table-hover"
-                   wicket:id="securityQuestionTable"/>
-          </span>
-        </div>
+                <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                   wicket:id="createNotificationLink">
+                    <wicket:message key="create"/>
+                </a>
+            </div>
+            <div id="securityQuestions">
+                <div id="users-contain" class="ui-widget" style="width:inherit">
+                    <span wicket:id="securityQuestionContainer">
+                        <table class="ui-widget ui-widget-content table-hover"
+                               wicket:id="securityQuestionTable"/>
+                    </span>
+                </div>
 
-        <div wicket:id="createSecurityQuestionWin">[Show modal window for creating security questions]</div>
-        <div wicket:id="editSecurityQuestionWin">[Show modal window for editing security questions]</div>
+                <div wicket:id="createSecurityQuestionWin">[Show modal window for creating security questions]</div>
+                <div wicket:id="editSecurityQuestionWin">[Show modal window for editing security questions]</div>
 
-        <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-           wicket:id="createSecurityQuestionLink">
-          <wicket:message key="create"/>
-        </a>
-      </div>
-      <div id="workflow">
-        <div id="users-contain" class="ui-widget" style="width:inherit">
-          <span wicket:id="noActivitiEnabledForUsers"><i><wicket:message key="noActivitiEnabledForUsers"/></i></span>
-          <span wicket:id="workflowDefContainer">
-            <div style="float: left;">
-              <button wicket:id="activitiModeler" style="width: 122px">
-                <div style="display: table-row;">
-                  <div style="display: table-cell">
-                    <img src="img/modeler.png" alt="Activiti Modeler" title="Activiti Modeler"/>
-                  </div>
-                  <div style="display: table-cell;vertical-align:middle;font-size:62.5%;">
-                    Activiti Modeler
-                  </div>
-                </div>
-              </button>
+                <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                   wicket:id="createSecurityQuestionLink">
+                    <wicket:message key="create"/>
+                </a>
             </div>
-            <div>
-              <button wicket:id="xmlEditor" style="width: 122px">
-                <div style="display: table-row;">
-                  <div style="display: table-cell">
-                    <img src="img/xml.png" alt="XML editor" title="XML editor"/>
-                  </div>
-                  <div style="display: table-cell;vertical-align:middle;font-size:62.5%;">                  
-                    XML editor
-                  </div>
-                </div>
-              </button>
+            <div id="workflow">
+                <div id="users-contain" class="ui-widget" style="width:inherit">
+                    <span wicket:id="noActivitiEnabledForUsers"><i><wicket:message key="noActivitiEnabledForUsers"/></i></span>
+                    <span wicket:id="workflowDefContainer">
+                        <div style="float: left;">
+                            <button wicket:id="activitiModeler" style="width: 122px">
+                                <div style="display: table-row;">
+                                    <div style="display: table-cell">
+                                        <img src="img/modeler.png" alt="Activiti Modeler" title="Activiti Modeler"/>
+                                    </div>
+                                    <div style="display: table-cell;vertical-align:middle;font-size:62.5%;">
+                                        Activiti Modeler
+                                    </div>
+                                </div>
+                            </button>
+                        </div>
+                        <div>
+                            <button wicket:id="xmlEditor" style="width: 122px">
+                                <div style="display: table-row;">
+                                    <div style="display: table-cell">
+                                        <img src="img/xml.png" alt="XML editor" title="XML editor"/>
+                                    </div>
+                                    <div style="display: table-cell;vertical-align:middle;font-size:62.5%;">                  
+                                        XML editor
+                                    </div>
+                                </div>
+                            </button>
+                        </div>
+                        <img wicket:id="workflowDefDiagram" style="width: 100%;"/>
+                    </span>
+                </div>
             </div>
-            <img wicket:id="workflowDefDiagram" style="width: 100%;"/>
-          </span>
-        </div>
-      </div>
-      <div id="logs">
-        <ul>
-          <li class="tabs-selected">
-            <a href="#core"><span>Core</span></a>
-          </li>
-          <li><a href="#console"><span>Console</span></a></li>
-        </ul>
-        <div id="core" style="border-width: 1px;border-top-width: 0px;">
-          <div id="users-contain" class="ui-widget" style="width:inherit">
-            <span wicket:id="coreLoggerContainer">
-              <table class="ui-widget ui-widget-content table-hover">
-                <thead class="ui-widget-header">
-                  <tr class="heaaders">
-                    <th><wicket:message key="logger"/></th>
-                    <th><wicket:message key="level"/></th>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr wicket:id="corelogger">
-                    <td><span wicket:id="name"/></td>
-                    <td id="level"><select wicket:id="level"/></td>
-                  </tr>
-                </tbody>
-              </table>
-            </span>
-          </div>
-        </div>
-        <div id="console" style="border-width: 1px;border-top-width: 0px;">
-          <div id="users-contain" class="ui-widget" style="width:inherit">
-            <span wicket:id="consoleLoggerContainer">
-              <table class="ui-widget ui-widget-content table-hover">
-                <thead class="ui-widget-header">
-                  <tr class="heaaders">
-                    <th><wicket:message key="logger"/></th>
-                    <th><wicket:message key="level"/></th>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr wicket:id="consolelogger">
-                    <td><span wicket:id="name"/></td>
-                    <td id="level"><select wicket:id="level"/></td>
-                  </tr>
-                </tbody>
-              </table>
-            </span>
-          </div>
-        </div>
-      </div>
-      <div>
-        <div wicket:id="parameters">
-          <a style="position: absolute; top: 2px; right:50px;" wicket:id="confLink">
-            <img src="img/actions/settings-icon.png" width="30" height="30"
-                 alt="Parameters" title="title" wicket:message="title:parameters"/>
-          </a>
-        </div>
-        <div wicket:id="syncopeConfWin">[Show modal window for conf parameters]</div>        
+            <div id="routes">
+                <div id="users-contain" class="ui-widget" style="width:inherit">
+                    <span wicket:id="routesContainer">
+                        <table class="ui-widget ui-widget-content table-hover" wicket:id="routeTable"/>
+                    </span>
+                </div>
+                <div wicket:id="editRouteWin">[Show modal window for editing route]</div>
+            </div>
+            <div id="logs">
+                <ul>
+                    <li class="tabs-selected">
+                        <a href="#core"><span>Core</span></a>
+                    </li>
+                    <li><a href="#console"><span>Console</span></a></li>
+                </ul>
+                <div id="core" style="border-width: 1px;border-top-width: 0px;">
+                    <div id="users-contain" class="ui-widget" style="width:inherit">
+                        <span wicket:id="coreLoggerContainer">
+                            <table class="ui-widget ui-widget-content table-hover">
+                                <thead class="ui-widget-header">
+                                    <tr class="heaaders">
+                                        <th><wicket:message key="logger"/></th>
+                                        <th><wicket:message key="level"/></th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr wicket:id="corelogger">
+                                        <td><span wicket:id="name"/></td>
+                                        <td id="level"><select wicket:id="level"/></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </span>
+                    </div>
+                </div>
+                <div id="console" style="border-width: 1px;border-top-width: 0px;">
+                    <div id="users-contain" class="ui-widget" style="width:inherit">
+                        <span wicket:id="consoleLoggerContainer">
+                            <table class="ui-widget ui-widget-content table-hover">
+                                <thead class="ui-widget-header">
+                                    <tr class="heaaders">
+                                        <th><wicket:message key="logger"/></th>
+                                        <th><wicket:message key="level"/></th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr wicket:id="consolelogger">
+                                        <td><span wicket:id="name"/></td>
+                                        <td id="level"><select wicket:id="level"/></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </span>
+                    </div>
+                </div>
+            </div>
+            <div>
+                <div wicket:id="parameters">
+                    <a style="position: absolute; top: 2px; right:50px;" wicket:id="confLink">
+                        <img src="img/actions/settings-icon.png" width="30" height="30"
+                             alt="Parameters" title="title" wicket:message="title:parameters"/>
+                    </a>
+                </div>
+                <div wicket:id="syncopeConfWin">[Show modal window for conf parameters]</div>        
 
-        <a style="position: absolute; top: 2px; right:20px;" wicket:id="dbExportLink">
-          <img src="img/db_export.png" width="30" height="30"
-               alt="DB export" title="title" wicket:message="title:db_export"/>
-        </a>
-      </div>    
-    </div>
-  </wicket:extend>
+                <a style="position: absolute; top: 2px; right:20px;" wicket:id="dbExportLink">
+                    <img src="img/db_export.png" width="30" height="30"
+                         alt="DB export" title="title" wicket:message="title:db_export"/>
+                </a>
+            </div>    
+        </div>
+    </wicket:extend>
 </html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties
index 1b6bcc7..f59b50f 100644
--- a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties
+++ b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.properties
@@ -45,3 +45,4 @@ adminRole=Administrator Role Form
 selfRole=Self Role Form
 adminMembership=Administrator Membership Form
 selfMembership=Self Membership Form
+routes=Routes
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.html
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.html b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.html
new file mode 100644
index 0000000..a237c27
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.html
@@ -0,0 +1,49 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:head>
+    <link rel="stylesheet" type="text/css" href="webjars/codemirror/${codemirror.version}/lib/codemirror.css"/>
+
+    <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/lib/codemirror.js"></script>
+    <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/mode/xml/xml.js"></script>
+    <script type="text/javascript">
+      function updateTextArea(editor) {         
+        document.getElementById("routeDefForm").elements["routeContent"].value = editor.getValue();
+      }
+    </script>
+  </wicket:head>
+  <wicket:extend>
+    <form wicket:id="routeDefForm" id="routeDefForm">
+      <textarea wicket:id="routeContent" id="routeContent" name="routeContent" style="width: 100%; height: 350px;">
+      </textarea>
+      <div style="margin: 10px;">
+        <input type="submit"
+               class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+               wicket:id="apply"
+               onclick=""/>
+      </div>
+    </form>
+    <script>
+      window.onload = function(){
+              var editor = CodeMirror.fromTextArea(document.getElementById("routeContent"),{lineNumbers: true});
+              editor.on("change", updateTextArea);
+      }    
+    </script>
+  </wicket:extend>
+</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.properties b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.properties
new file mode 100644
index 0000000..8ac2655
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage.properties
@@ -0,0 +1,18 @@
+# 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.
+title=Edit route
+id=id

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_it.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_it.properties b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_it.properties
new file mode 100644
index 0000000..44663f7
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_it.properties
@@ -0,0 +1,18 @@
+# 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.
+title=Modifica le rotte
+id=id

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_pt_BR.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_pt_BR.properties b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_pt_BR.properties
new file mode 100644
index 0000000..a6395a0
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/RouteModalPage_pt_BR.properties
@@ -0,0 +1,18 @@
+# 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.
+title=Editar rotas
+id=id

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index d9ab5a6..66b5a22 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -117,6 +117,25 @@ under the License.
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-client</artifactId>
     </dependency>  
+       
+     <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-spring</artifactId>
+    </dependency>
+    <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.2.7</version>
+    </dependency>
+    <dependency>
+       <groupId>com.sun.xml.bind</groupId>
+       <artifactId>jaxb-impl</artifactId>
+       <version>2.2.7</version>
+    </dependency>
 
     <dependency>
       <groupId>org.springframework</groupId>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java b/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
new file mode 100644
index 0000000..aa6da28
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
@@ -0,0 +1,106 @@
+/*
+ * 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.init;
+
+import java.io.File;
+import java.io.StringWriter;
+import java.net.URL;
+import javax.sql.DataSource;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.apache.syncope.core.persistence.dao.RouteDAO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+@Component
+public class CamelRouteLoader {
+    
+    private static final Logger LOG = LoggerFactory.getLogger(CamelRouteLoader.class);
+    
+    @Autowired
+    private RouteDAO routeDAO;
+    
+    @Autowired
+    private DataSource dataSource;
+    
+    @Transactional
+    public void load(){
+        
+        //if(routeDAO.findAll().isEmpty()){
+            URL url = getClass().getResource("/camelRoute.xml");                                   
+
+            File file = new File(url.getPath());
+            String query= "INSERT INTO CamelRoute(ID, NAME, ROUTECONTENT) VALUES (?, ?, ?)";
+            try{
+                
+                DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+                Document doc = dBuilder.parse(file);
+                doc.getDocumentElement().normalize();
+
+                JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+
+                NodeList listOfRoutes = doc.getElementsByTagName("route");
+                for(int s=0; s<listOfRoutes.getLength(); s++){
+                    //getting the route node element
+                    Node routeEl = listOfRoutes.item(s);
+                    //crate an instance of CamelRoute Entity
+                    CamelRoute route = new CamelRoute();                                 
+                    route.setName(((Element)routeEl).getAttribute("id"));        
+                    route.setRouteContent(nodeToString(listOfRoutes.item(s)));
+                    
+                    jdbcTemplate.update(query, new Object[]{s+1,((Element)routeEl).getAttribute("id"),  nodeToString(listOfRoutes.item(s))});
+                    LOG.info("Route Registration Successed");
+                }
+            } catch (DataAccessException e) {
+                LOG.error("While trying to perform {}", query, e);
+            } catch (Exception e) {
+                LOG.error("Route Registration failed {}",e.getMessage());
+            }
+        //}
+    }
+    
+  private String nodeToString(Node node) {
+        StringWriter sw = new StringWriter();
+        try{
+            Transformer t = TransformerFactory.newInstance().newTransformer();
+            t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+            t.transform(new DOMSource(node), new StreamResult(sw));
+        }catch (TransformerException te) {
+            System.out.println("nodeToString Transformer Exception");
+        }
+        return sw.toString();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java b/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
index 403fe96..115587d 100644
--- a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
+++ b/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
@@ -49,6 +49,9 @@ public class SpringContextInitializer implements InitializingBean {
 
     @Autowired
     private WorkflowAdapterLoader workflowAdapterLoader;
+    
+    @Autowired
+    private CamelRouteLoader routeLoader;
 
     @Override
     public void afterPropertiesSet() throws Exception {
@@ -59,6 +62,8 @@ public class SpringContextInitializer implements InitializingBean {
         loggerLoader.load();
         classNamesLoader.load();
 
+        routeLoader.load();
+        
         workflowAdapterLoader.init();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
new file mode 100644
index 0000000..ad05f27
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
@@ -0,0 +1,63 @@
+/*
+ * 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.persistence.beans;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.GenerationType;
+import javax.persistence.Column;
+
+
+@Entity
+public class CamelRoute {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name="id")
+    private Long id;
+
+    private String name;
+
+    @Lob
+    private String routeContent;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getRouteContent() {
+        return routeContent;
+    }
+
+    public void setRouteContent(String routeContent) {
+        this.routeContent = routeContent;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/persistence/dao/RouteDAO.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/dao/RouteDAO.java b/core/src/main/java/org/apache/syncope/core/persistence/dao/RouteDAO.java
new file mode 100644
index 0000000..aa7f4f6
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/persistence/dao/RouteDAO.java
@@ -0,0 +1,34 @@
+/*
+ * 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.persistence.dao;
+
+import java.util.List;
+import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+
+public interface RouteDAO {
+
+    CamelRoute find(Long id);
+
+    List<CamelRoute> findAll();
+
+    CamelRoute save(CamelRoute route) throws InvalidEntityException;
+
+    void delete(Long id);
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java b/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
new file mode 100644
index 0000000..aaa0026
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
@@ -0,0 +1,58 @@
+/*
+ * 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.persistence.dao.impl;
+
+import java.util.List;
+import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.apache.syncope.core.persistence.dao.RouteDAO;
+import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+public class RouteDAOImpl extends AbstractDAOImpl implements RouteDAO {
+
+    @Override
+    public CamelRoute find(final Long id) {
+        return entityManager.find(CamelRoute.class, id);
+    }
+
+    @Transactional(readOnly = true)
+    @Override
+    public List<CamelRoute> findAll() {
+        TypedQuery<CamelRoute> query = entityManager.createQuery("SELECT e FROM " + CamelRoute.class.getSimpleName() + " e", CamelRoute.class);
+        return query.getResultList();
+    }
+
+    @Override
+    public CamelRoute save(final CamelRoute route) throws InvalidEntityException {
+        return entityManager.merge(route);
+    }
+
+    @Override
+    public void delete(Long id) {
+        CamelRoute route = find(id);
+        if (route != null) {
+            entityManager.remove(route);
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
new file mode 100644
index 0000000..de9e1fc
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
@@ -0,0 +1,231 @@
+/*
+ * 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;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.syncope.common.mod.RoleMod;
+import org.apache.syncope.common.to.AttributeTO;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.RoleTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
+import org.apache.syncope.core.persistence.dao.RoleDAO;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.RoleDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.util.EntitlementUtil;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.apache.syncope.core.workflow.role.RoleWorkflowAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.lang3.StringUtils;
+
+public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleProvisioningManager.class);
+    @Autowired
+    protected RoleWorkflowAdapter rwfAdapter;
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;    
+    @Autowired
+    protected RoleDAO roleDAO;
+    @Autowired
+    protected RoleDataBinder binder;
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject) {
+        return create(subject, Collections.<String>emptySet());
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject, Set<String> excludedResources) {
+        
+        WorkflowResult<Long> created;
+        try{
+            created = rwfAdapter.create(subject);
+        }
+        catch(RuntimeException e){
+            throw e;
+        }
+
+        EntitlementUtil.extendAuthContext(created.getResult());
+
+        List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created, subject.getVirAttrs());
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                created.getResult(), propagationReporter.getStatuses());
+        return result;
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,Set<String> excludedResources) throws PropagationException{
+        
+        WorkflowResult<Long> created = rwfAdapter.create((RoleTO) roleTO);
+        AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
+        if (roleOwner != null) {
+            roleOwnerMap.put(created.getResult(), roleOwner.getValues().iterator().next());
+        }
+
+        EntitlementUtil.extendAuthContext(created.getResult());
+
+        List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created,
+                roleTO.getVirAttrs(), excludedResources);
+
+        taskExecutor.execute(tasks);
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                created.getResult(), null);
+        return result;
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod) {
+        
+        return update(subjectMod, Collections.<String>emptySet());
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
+                
+        WorkflowResult<Long> updated;
+        
+        try{
+            updated = rwfAdapter.update(subjectMod);
+        }
+        catch(RuntimeException e){
+            throw e;
+        }
+
+        List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
+                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(),excludedResources);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult(), propagationReporter.getStatuses());
+        return result;
+    }
+
+    @Override
+    public List<PropagationStatus> delete(Long subjectId) {
+
+        final List<SyncopeRole> toBeDeprovisioned = new ArrayList<SyncopeRole>();
+
+        final SyncopeRole syncopeRole = roleDAO.find(subjectId);
+
+        if (syncopeRole != null) {
+            toBeDeprovisioned.add(syncopeRole);
+
+            final List<SyncopeRole> descendants = roleDAO.findDescendants(toBeDeprovisioned.get(0));
+            if (descendants != null) {
+                toBeDeprovisioned.addAll(descendants);
+            }
+        }
+
+        final List<PropagationTask> tasks = new ArrayList<PropagationTask>();
+
+        for (SyncopeRole role : toBeDeprovisioned) {
+            // Generate propagation tasks for deleting users from role resources, if they are on those resources only
+            // because of the reason being deleted (see SYNCOPE-357)
+            for (WorkflowResult<Long> wfResult : binder.getUsersOnResourcesOnlyBecauseOfRole(role.getId())) {
+                tasks.addAll(propagationManager.getUserDeleteTaskIds(wfResult));
+            }
+
+            // Generate propagation tasks for deleting this role from resources
+            tasks.addAll(propagationManager.getRoleDeleteTaskIds(role.getId()));
+        }
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        try{
+            rwfAdapter.delete(subjectId);
+        }
+        catch(RuntimeException e){
+            throw  e;
+        }
+        
+        return propagationReporter.getStatuses();
+    }
+
+    @Override
+    public Long unlink(RoleMod subjectMod) {
+        WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
+        return updated.getResult();
+    }
+    
+    @Override
+    public List<PropagationStatus> deprovision(final Long roleId, final Collection<String> resources){
+        final SyncopeRole role = binder.getRoleFromId(roleId);
+        
+        final Set<String> noPropResourceName = role.getResourceNames();
+        noPropResourceName.removeAll(resources);
+        
+        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        return propagationReporter.getStatuses();
+    }
+
+    @Override
+    public Long link(RoleMod subjectMod) {
+        return rwfAdapter.update(subjectMod).getResult();
+    }
+    
+}


[30/53] [abbrv] syncope git commit: Fixes #5 - Tests pass with latest version of camel

Posted by il...@apache.org.
Fixes #5 - Tests pass with latest version of camel


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

Branch: refs/heads/2_0_X
Commit: dff89c00424ce9376359d600c50b21fd6bbb3e36
Parents: 55dfac7
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 23 12:51:04 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 23 12:51:04 2014 +0100

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/dff89c00/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f680733..c478c3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -325,7 +325,7 @@ under the License.
     <aspectj.version>1.8.4</aspectj.version>
 
     <cxf.version>3.0.3</cxf.version>
-    <camel.version>2.12.5</camel.version>	
+    <camel.version>2.14.1</camel.version>	
     <spring.version>4.0.8.RELEASE</spring.version>
     <spring-security.version>3.2.5.RELEASE</spring-security.version>
     <jackson.version>2.4.4</jackson.version>


[15/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/master
Commit: b7d6578e340f08933f572ffe99a83b04419b4a9a
Parents: 8b16139 86cbfe4
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 17:02:19 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 17:02:19 2014 +0100

----------------------------------------------------------------------
 .../core/cache/DisabledVirAttrCache.java        |  50 +++++++
 .../syncope/core/cache/MemoryVirAttrCache.java  | 148 +++++++++++++++++++
 .../apache/syncope/core/cache/VirAttrCache.java |  65 ++++++++
 .../syncope/core/cache/VirAttrCacheKey.java     |  79 ++++++++++
 .../syncope/core/cache/VirAttrCacheValue.java   |  86 +++++++++++
 .../syncope/core/connid/ConnObjectUtil.java     |   4 +-
 .../data/AbstractAttributableDataBinder.java    |   2 +-
 .../apache/syncope/core/util/MappingUtil.java   |   7 +-
 .../apache/syncope/core/util/VirAttrCache.java  | 144 ------------------
 .../syncope/core/util/VirAttrCacheKey.java      |  79 ----------
 .../syncope/core/util/VirAttrCacheValue.java    |  86 -----------
 .../apache/syncope/core/util/jexl/JexlUtil.java |   4 +-
 core/src/main/resources/coreContext.xml         |   2 +-
 .../core/rest/DerivedSchemaTestITCase.java      |   4 +-
 pom.xml                                         |   6 +-
 15 files changed, 442 insertions(+), 324 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b7d6578e/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/syncope/blob/b7d6578e/pom.xml
----------------------------------------------------------------------


[52/53] [abbrv] syncope git commit: White noise - This closes #2

Posted by il...@apache.org.
White noise - This closes #2


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

Branch: refs/heads/master
Commit: a90a48ad5dc9dd5667713a159e555ba1ac6b8741
Parents: 01ac2bd
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 14:33:32 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 14:33:32 2015 +0100

----------------------------------------------------------------------
 core/src/main/resources/provisioning.properties | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/a90a48ad/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
index a8e49bf..b55bd06 100644
--- a/core/src/main/resources/provisioning.properties
+++ b/core/src/main/resources/provisioning.properties
@@ -14,6 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
 userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
-roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file
+roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager


[09/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/2_0_X
Commit: de130b7fcbcb763d5578dbc4ae2aa9788aa53b1f
Parents: 43c9462 4de7c70
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Dec 18 11:17:39 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Dec 18 11:17:39 2014 +0100

----------------------------------------------------------------------
 .../syncope/console/pages/ConfModalPage.java    |   1 +
 .../wicket/markup/html/form/DateFieldPanel.java |   6 +-
 .../wicket/markup/html/form/FieldPanel.java     |   4 +-
 .../syncope/console/ConnInstanceTestITCase.java |  58 ++---
 .../files/JBossDeploymentStructureXml.java      |   9 +-
 .../apache/syncope/installer/files/OrmXml.java  |  98 ++++++---
 .../syncope/installer/files/ParentPom.java      | 212 ++++++++++++++-----
 .../files/PersistenceContextEMFactoryXml.java   |  14 +-
 pom.xml                                         |   6 +-
 9 files changed, 280 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/de130b7f/pom.xml
----------------------------------------------------------------------


[23/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/2_0_X
Commit: fe8eeb247f622b775e2a53472a34b5831b8a2422
Parents: 7aa0db3 51c543d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Dec 23 08:46:13 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Dec 23 08:46:13 2014 +0100

----------------------------------------------------------------------
 installer/pom.xml                               |  20 +++
 .../installer/containers/jboss/JBoss.java       |  12 +-
 .../org/apache/syncope/installer/enums/DBs.java |   3 +
 .../installer/files/ConsoleProperties.java      |  31 ++++
 .../syncope/installer/files/CoreWebXml.java     |  76 ++------
 .../installer/files/GlassfishCoreWebXml.java    |  38 +---
 .../files/JBossDeploymentStructureXml.java      |  40 +----
 .../syncope/installer/files/ParentPom.java      | 176 +------------------
 .../files/PersistenceContextEMFactoryXml.java   |  47 +----
 .../installer/files/PersistenceProperties.java  |  27 +--
 .../installer/processes/ArchetypeProcess.java   |  41 +++--
 .../installer/processes/BaseProcess.java        |  54 ++++++
 .../installer/processes/ContainerProcess.java   | 171 ++++++++++++++----
 .../installer/processes/PersistenceProcess.java |  25 ++-
 .../installer/utilities/FileSystemUtils.java    |  45 +++++
 .../syncope/installer/utilities/MavenUtils.java |  31 +---
 .../src/main/resources/configuration.properties |  31 ++++
 .../main/resources/izpack/ProcessPanel.Spec.xml |  40 +++--
 installer/src/main/resources/izpack/install.xml |   6 +-
 .../main/resources/izpack/userInputLang.xml_eng |   4 +
 .../main/resources/izpack/userInputLang.xml_ita |   4 +
 .../src/main/resources/izpack/userInputSpec.xml |  20 ++-
 installer/src/main/resources/modelerPom.xml     | 116 ++++++++++++
 23 files changed, 589 insertions(+), 469 deletions(-)
----------------------------------------------------------------------



[47/53] [abbrv] syncope git commit: Merge upstream/master

Posted by il...@apache.org.
Merge upstream/master


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

Branch: refs/heads/2_0_X
Commit: d388f2464d145bd780bb8b2de76b63c52e459c62
Parents: ec34515 1d58c50
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Jan 5 11:58:26 2015 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Jan 5 11:58:26 2015 +0100

----------------------------------------------------------------------
 .../syncope/installer/utilities/FileSystemUtils.java | 10 +---------
 pom.xml                                              | 15 +++++++++++++--
 src/site/site.xml                                    |  3 ---
 3 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/d388f246/pom.xml
----------------------------------------------------------------------
diff --cc pom.xml
index 641e123,9891ca9..1fe0129
--- a/pom.xml
+++ b/pom.xml
@@@ -323,10 -335,9 +334,10 @@@ under the License
      <activiti.version>5.16.4</activiti.version>
  
      <aspectj.version>1.8.4</aspectj.version>
--
 -    <cxf.version>3.0.3</cxf.version>	
++    
 +    <cxf.version>3.0.3</cxf.version>
 +    <camel.version>2.14.1</camel.version>	
-     <spring.version>4.0.8.RELEASE</spring.version>
+     <spring.version>4.0.9.RELEASE</spring.version>
      <spring-security.version>3.2.5.RELEASE</spring-security.version>
      <jackson.version>2.4.4</jackson.version>
      <velocity.version>1.7</velocity.version>


[11/53] [abbrv] syncope git commit: Default Syncope provisioning manager correctly restored

Posted by il...@apache.org.
Default Syncope provisioning manager correctly restored


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

Branch: refs/heads/2_0_X
Commit: efe6c5ea6ebfe99f46435e13a6799c36557eae65
Parents: de130b7
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 15:21:47 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 15:21:47 2014 +0100

----------------------------------------------------------------------
 .../DefaultRoleProvisioningManager.java         |  23 +-
 .../DefaultUserProvisioningManager.java         |  55 +-
 core/src/main/resources/camelRoute.xml          | 816 +++++++++----------
 core/src/main/resources/coreContext.xml         |   4 +-
 4 files changed, 459 insertions(+), 439 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
index de9e1fc..f376641 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
@@ -70,13 +70,7 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject, Set<String> excludedResources) {
         
-        WorkflowResult<Long> created;
-        try{
-            created = rwfAdapter.create(subject);
-        }
-        catch(RuntimeException e){
-            throw e;
-        }
+        WorkflowResult<Long> created = rwfAdapter.create(subject);
 
         EntitlementUtil.extendAuthContext(created.getResult());
 
@@ -89,6 +83,9 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
+
+        final RoleTO savedTO = binder.getRoleTO(created.getResult());
+        savedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
         
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), propagationReporter.getStatuses());
@@ -125,17 +122,10 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
                 
-        WorkflowResult<Long> updated;
-        
-        try{
-            updated = rwfAdapter.update(subjectMod);
-        }
-        catch(RuntimeException e){
-            throw e;
-        }
+        WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
 
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
-                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(),excludedResources);
+                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate());
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -144,6 +134,7 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
+
         
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult(), propagationReporter.getStatuses());

http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
index 54f677c..070c6aa 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
@@ -67,11 +68,11 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO){
-        return create(userTO, true);
+        return create(userTO, true, false, null, Collections.<String>emptySet());
     }
     
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
-        WorkflowResult<Map.Entry<Long, Boolean>> created;
+        /*WorkflowResult<Map.Entry<Long, Boolean>> created;
         try {
             created = uwfAdapter.create(userTO,storePassword);
         } catch (RuntimeException e) {
@@ -92,20 +93,21 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult().getKey(), propagationReporter.getStatuses());
-        return result;
+        return result;*/
+        return create(userTO, storePassword, false, null, Collections.<String>emptySet());
     }
     
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
                 WorkflowResult<Map.Entry<Long, Boolean>> created;
         try {
-            created = uwfAdapter.create(userTO,storePassword);
+            created = uwfAdapter.create(userTO, disablePwdPolicyCheck, enabled, storePassword);
         } catch (RuntimeException e) {
             throw e;
         }
 
         List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
-                created, userTO.getPassword(), userTO.getVirAttrs(), excludedResources, null);
+                created, userTO.getPassword(), userTO.getVirAttrs(), excludedResources, userTO.getMemberships());
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
         try {
@@ -135,14 +137,39 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         }
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
-
+        if (tasks.isEmpty()) {
+            // SYNCOPE-459: take care of user virtual attributes ...
+            final PropagationByResource propByResVirAttr = binder.fillVirtual(
+                    updated.getResult().getKey().getId(),
+                    userMod.getVirAttrsToRemove(),
+                    userMod.getVirAttrsToUpdate());
+            // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
+            // not required, take care also of membership virtual attributes
+            boolean addOrUpdateMemberships = false;
+            for (MembershipMod membershipMod : userMod.getMembershipsToAdd()) {
+                if (!binder.fillMembershipVirtual(
+                        updated.getResult().getKey().getId(),
+                        membershipMod.getRole(),
+                        null,
+                        membershipMod.getVirAttrsToRemove(),
+                        membershipMod.getVirAttrsToUpdate(),
+                        false).isEmpty()) {
+                    addOrUpdateMemberships = true;
+                }
+            }
+            tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
+                    ? propagationManager.getUserUpdateTaskIds(updated, false, null)
+                    : Collections.<PropagationTask>emptyList());
+        }
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
+        if (!tasks.isEmpty()) {
+            try {
+                taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                LOG.error("Error propagation primary resource", e);
+                propagationReporter.onPrimaryResourceFailure(tasks);
+            }
         }
 
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
@@ -272,7 +299,8 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, final SyncResult result, Boolean enabled, Set<String> excludedResources){
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, 
+                                               final SyncResult result, Boolean enabled, Set<String> excludedResources){
         
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
         try {
@@ -313,13 +341,14 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
                     getBean(PropagationReporter.class);
 
             List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResources);
-                
+               
             try {
                     taskExecutor.execute(tasks, propagationReporter);
             } catch (PropagationException e) {
                     LOG.error("Error propagation primary resource", e);
                     propagationReporter.onPrimaryResourceFailure(tasks);
             }
+
             
             return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
index e1ad071..260f01c 100644
--- a/core/src/main/resources/camelRoute.xml
+++ b/core/src/main/resources/camelRoute.xml
@@ -24,445 +24,445 @@ under the License.
                            http://camel.apache.org/schema/spring
                            http://camel.apache.org/schema/spring/camel-spring.xsd">
  
+  <!--
+      The default routes define each task involved in user creation:
+      main operations consist in user workflow creation and its propagation.         
+  -->
+  <routeContext id="defaultRoutes" xmlns="http://camel.apache.org/schema/spring">    
+        
     <!--
-        The default routes define each task involved in user creation:
-        main operations consist in user workflow creation and its propagation.         
+        CREATE USER
+        This is the entry point of the route and is involved in accepting
+        the UserTO. When it arrives, the user workflow is created. If the
+        creation is successfull, the result is sent to propagation, otherwise
+        if an exception was raised, the exception has to be returned to the
+        caller. The property actual allows to store the received UserTO in
+        order to use it later.
     -->
-    <routeContext id="defaultRoutes" xmlns="http://camel.apache.org/schema/spring">    
-        
-        <!--
-            CREATE USER
-            This is the entry point of the route and is involved in accepting
-            the UserTO. When it arrives, the user workflow is created. If the
-            creation is successfull, the result is sent to propagation, otherwise
-            if an exception was raised, the exception has to be returned to the
-            caller. The property actual allows to store the received UserTO in
-            order to use it later.
-        -->
         
-        <route id="createUser">
-          <from uri="direct:createUser"/>
-          <setProperty propertyName="actual">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="uwfAdapter" method="create(${body},${property.disablePwdPolicyCheck},
+    <route id="createUser">
+      <from uri="direct:createUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" method="create(${body},${property.disablePwdPolicyCheck},
                                  ${property.enabled},${property.storePassword})"/>
-            <process ref="defaultUserCreatePropagation" />
-            <to uri="direct:createPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+        <process ref="defaultUserCreatePropagation" />
+        <to uri="direct:createPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
-        <!--
-            The propagation route deals with propagation of created user. In this
-            case we used a custom processor to perform this task: it means that
-            a custom java class contains the propagation strategy.
-        -->
+    <!--
+        The propagation route deals with propagation of created user. In this
+        case we used a custom processor to perform this task: it means that
+        a custom java class contains the propagation strategy.
+    -->
        
-        <!--
-            UPDATE USER
-        -->
-        <route id="updateUser">
-            <from uri="direct:updateUser"/>
-            <setProperty propertyName="actual">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <process ref="defaultUserUpdatePropagation" />
-              <to uri="direct:updatePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updatePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE USER
+    -->
+    <route id="updateUser">
+      <from uri="direct:updateUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <process ref="defaultUserUpdatePropagation" />
+        <to uri="direct:updatePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updatePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
 
                 
-        <!--
-            UPDATE SYNC USER
-        -->
-        <route id="updateSyncUser">
-            <from uri="direct:updateSyncUser"/>            
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <to uri="direct:syncUserStatus"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateSyncPort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE SYNC USER
+    -->
+    <route id="updateSyncUser">
+      <from uri="direct:updateSyncUser"/>            
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <to uri="direct:syncUserStatus"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <route id="syncUserStatus">
-            <from uri="direct:syncUserStatus"/>
-                <process ref="userStatusOnSync" />
-                <process ref="defaultUserUpdateSyncPropagation" />
-            <to uri="direct:updateSyncPort"/>
-        </route>
-        <!--
-            DELETE USER
-        -->
-        <route id="deleteUser">
-            <from uri="direct:deleteUser"/>
-            <doTry>
-              <process ref="defaultUserDeletePropagation" />
-              <bean ref="uwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deletePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deletePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <route id="syncUserStatus">
+      <from uri="direct:syncUserStatus"/>
+      <process ref="userStatusOnSync" />
+      <process ref="defaultUserUpdateSyncPropagation" />
+      <to uri="direct:updateSyncPort"/>
+    </route>
+    <!--
+        DELETE USER
+    -->
+    <route id="deleteUser">
+      <from uri="direct:deleteUser"/>
+      <doTry>
+        <process ref="defaultUserDeletePropagation" />
+        <bean ref="uwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deletePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deletePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkUser">
-            <from uri="direct:unlinkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:unlinkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkUser">
+      <from uri="direct:unlinkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:unlinkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkUser">
-            <from uri="direct:linkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:linkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkUser">
+      <from uri="direct:linkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:linkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!-- 
-            ACTIVATE USER
-        -->
-        <route id="activateUser">
-            <from uri="direct:activateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            REACTIVATE USER
-        -->
-        <route id="reactivateUser">
-            <from uri="direct:reactivateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="reactivate(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            SUSPEND USER
-        -->
-        <route id="suspendUser">
-            <from uri="direct:suspendUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <!-- 
+        ACTIVATE USER
+    -->
+    <route id="activateUser">
+      <from uri="direct:activateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        REACTIVATE USER
+    -->
+    <route id="reactivateUser">
+      <from uri="direct:reactivateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="reactivate(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        SUSPEND USER
+    -->
+    <route id="suspendUser">
+      <from uri="direct:suspendUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
         
-        <!-- 
-            STATUS PROPAGATION
-        -->
+    <!-- 
+        STATUS PROPAGATION
+    -->
         
-        <route id="statusUser">
-            <from uri="direct:statusUser"/>            
-              <process ref="defaultUserStatusPropagation" />
-            <to uri="direct:statusPort"/>              
-        </route>
+    <route id="statusUser">
+      <from uri="direct:statusUser"/>            
+      <process ref="defaultUserStatusPropagation" />
+      <to uri="direct:statusPort"/>              
+    </route>
         
         
-        <!--
-            DEPROVISION USER
-        -->
-        <route id="deprovisionUser">
-            <from uri="direct:deprovisionUser"/>            
-              <process ref="defaultUserDeprovisionPropagation" />
-              <to uri="direct:deprovisionPort"/>              
-        </route>
+    <!--
+        DEPROVISION USER
+    -->
+    <route id="deprovisionUser">
+      <from uri="direct:deprovisionUser"/>            
+      <process ref="defaultUserDeprovisionPropagation" />
+      <to uri="direct:deprovisionPort"/>              
+    </route>
         
-        <!--
-            CREATE ROLE
-        -->
+    <!--
+        CREATE ROLE
+    -->
         
-        <route id="createRole">
-          <from uri="direct:createRole"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreatePropagation" />
-            <to uri="direct:createRolePort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRolePort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <route id="createRole">
+      <from uri="direct:createRole"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreatePropagation" />
+        <to uri="direct:createRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRolePort"/>
+        </doCatch>
+      </doTry>
+    </route> 
                
-        <!--
-            CREATE ROLE SYNC
-        -->
-        <route id="createRoleSync">
-          <from uri="direct:createRoleSync"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreateSyncPropagation" />
-            <to uri="direct:createRoleSyncPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRoleSyncPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <!--
+        CREATE ROLE SYNC
+    -->
+    <route id="createRoleSync">
+      <from uri="direct:createRoleSync"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreateSyncPropagation" />
+        <to uri="direct:createRoleSyncPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRoleSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
          
-        <!--
-            UPDATE ROLE
-        -->
-        <route id="updateRole">
-            <from uri="direct:updateRole"/>
-            <setProperty propertyName="subjectMod">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="rwfAdapter" method="update(${body})"/>
-              <process ref="defaultRoleUpdatePropagation" />
-              <to uri="direct:updateRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE ROLE
+    -->
+    <route id="updateRole">
+      <from uri="direct:updateRole"/>
+      <setProperty propertyName="subjectMod">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <process ref="defaultRoleUpdatePropagation" />
+        <to uri="direct:updateRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
                
-        <!--
-            DELETE ROLE
-        -->
-        <route id="deleteRole">
-            <from uri="direct:deleteRole"/>
-            <doTry>
-              <process ref="defaultRoleDeletePropagation" />
-              <bean ref="rwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deleteRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deleteRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        DELETE ROLE
+    -->
+    <route id="deleteRole">
+      <from uri="direct:deleteRole"/>
+      <doTry>
+        <process ref="defaultRoleDeletePropagation" />
+        <bean ref="rwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deleteRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deleteRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkRole">
-            <from uri="direct:unlinkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:unlinkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkRole">
+      <from uri="direct:unlinkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:unlinkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkRole">
-            <from uri="direct:linkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:linkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkRole">
+      <from uri="direct:linkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:linkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            DEPROVISION ROLE
-        -->
-        <route id="deprovisionRole">
-            <from uri="direct:deprovisionRole"/>            
-              <process ref="defaultRoleDeprovisionPropagation" />
-              <to uri="direct:deprovisionRolePort"/>              
-        </route>
+    <!--
+        DEPROVISION ROLE
+    -->
+    <route id="deprovisionRole">
+      <from uri="direct:deprovisionRole"/>            
+      <process ref="defaultRoleDeprovisionPropagation" />
+      <to uri="direct:deprovisionRolePort"/>              
+    </route>
         
-        <!--
-            SUSPEND USER AFTER POLICY VIOLATION
-        -->
+    <!--
+        SUSPEND USER AFTER POLICY VIOLATION
+    -->
         
-        <route id="suspendUserWF">
-            <from uri="direct:suspendUserWF"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <process ref="defaultUserWFSuspendPropagation"/>
-                <to uri="direct:suspendWFPort"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:suspendWFPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <route id="suspendUserWF">
+      <from uri="direct:suspendUserWF"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <process ref="defaultUserWFSuspendPropagation"/>
+        <to uri="direct:suspendWFPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:suspendWFPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
         
-        <!--
-            REQUEST PASSWORD RESET ROUTE
-        -->
+    <!--
+        REQUEST PASSWORD RESET ROUTE
+    -->
         
-        <route id="requestPwdReset">
-            <from uri="direct:requestPwdReset"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="requestPasswordReset(${body})"/>
-                <to uri="direct:requestPwdResetPort"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:requestPwdResetPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
-        <!--
-            CONFIRM PASSWORD RESET
-        -->
-        <route id="confirmPwdReset">
-            <from uri="direct:confirmPwdReset"/>
-            <doTry>
-              <bean ref="uwfAdapter" method="confirmPasswordReset(${property.userId},${property.token},${property.password})"/>
-              <process ref="defaultUserConfirmPwdResetPropagation" />
-              <to uri="direct:confirmPwdResetPort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:confirmPwdResetPort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <route id="requestPwdReset">
+      <from uri="direct:requestPwdReset"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="requestPasswordReset(${body})"/>
+        <to uri="direct:requestPwdResetPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:requestPwdResetPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
+    <!--
+        CONFIRM PASSWORD RESET
+    -->
+    <route id="confirmPwdReset">
+      <from uri="direct:confirmPwdReset"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="confirmPasswordReset(${property.userId},${property.token},${property.password})"/>
+        <process ref="defaultUserConfirmPwdResetPropagation" />
+        <to uri="direct:confirmPwdResetPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:confirmPwdResetPort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-    </routeContext>
-    <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
-    <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
-    <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
-    <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
-    <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
-    <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
-    <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
-    <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
-    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
-    <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
-    <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
-    <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
-    <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
-    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>            
+  </routeContext>
+  <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
+  <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
+  <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
+  <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
+  <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
+  <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
+  <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
+  <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+  <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
+  <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
+  <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
+  <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
+  <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
+  <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>            
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index 3950689..e39ceed 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -76,8 +76,8 @@ under the License.
     <context:exclude-filter type="regex" expression=".*\.activiti\..*"/>
   </context:component-scan>
   
-  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager"/>
-  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager"/>
+  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultUserProvisioningManager"/>
+  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager"/>
 
   <bean id="nonJPAdbInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
     <property name="dataSource" ref="dataSource"/>


[16/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/2_0_X
Commit: b7d6578e340f08933f572ffe99a83b04419b4a9a
Parents: 8b16139 86cbfe4
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 17:02:19 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 17:02:19 2014 +0100

----------------------------------------------------------------------
 .../core/cache/DisabledVirAttrCache.java        |  50 +++++++
 .../syncope/core/cache/MemoryVirAttrCache.java  | 148 +++++++++++++++++++
 .../apache/syncope/core/cache/VirAttrCache.java |  65 ++++++++
 .../syncope/core/cache/VirAttrCacheKey.java     |  79 ++++++++++
 .../syncope/core/cache/VirAttrCacheValue.java   |  86 +++++++++++
 .../syncope/core/connid/ConnObjectUtil.java     |   4 +-
 .../data/AbstractAttributableDataBinder.java    |   2 +-
 .../apache/syncope/core/util/MappingUtil.java   |   7 +-
 .../apache/syncope/core/util/VirAttrCache.java  | 144 ------------------
 .../syncope/core/util/VirAttrCacheKey.java      |  79 ----------
 .../syncope/core/util/VirAttrCacheValue.java    |  86 -----------
 .../apache/syncope/core/util/jexl/JexlUtil.java |   4 +-
 core/src/main/resources/coreContext.xml         |   2 +-
 .../core/rest/DerivedSchemaTestITCase.java      |   4 +-
 pom.xml                                         |   6 +-
 15 files changed, 442 insertions(+), 324 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b7d6578e/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/syncope/blob/b7d6578e/pom.xml
----------------------------------------------------------------------


[14/53] [abbrv] syncope git commit: Fixes #3 - Provisioning manager properties file added

Posted by il...@apache.org.
Fixes #3 - Provisioning manager properties file added


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

Branch: refs/heads/master
Commit: 8b1613934d47bd9db5276d08755f9111fd5a6a6c
Parents: efe6c5e
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 17:01:49 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 17:01:49 2014 +0100

----------------------------------------------------------------------
 .../DefaultRoleCreatePropagation.java           |  2 ++
 .../DefaultRoleCreateSyncPropagation.java       |  2 ++
 .../DefaultRoleDeletePropagation.java           |  2 ++
 .../DefaultRoleDeprovisionPropagation.java      |  2 ++
 .../DefaultRoleUpdatePropagation.java           |  2 ++
 .../DefaultUserConfirmPwdResetPropagation.java  |  3 +-
 .../DefaultUserCreatePropagation.java           |  2 ++
 .../DefaultUserDeletePropagation.java           |  3 +-
 .../DefaultUserDeprovisionPropagation.java      |  2 ++
 .../DefaultUserStatusPropagation.java           |  2 ++
 .../DefaultUserUpdateInSyncPropagation.java     |  2 ++
 .../DefaultUserUpdatePropagation.java           |  2 ++
 .../DefaultUserWFSuspendPropagation.java        |  2 ++
 .../camel/processors/UserStatusOnSync.java      |  2 ++
 .../core/rest/controller/RoleController.java    |  2 +-
 .../core/rest/controller/UserController.java    |  2 +-
 .../sync/impl/AbstractSyncopeResultHandler.java |  4 +--
 .../core/workflow/WorkflowUserSuspender.java    |  2 +-
 core/src/main/resources/camelRoute.xml          |  4 +--
 core/src/main/resources/coreContext.xml         | 29 +++++---------------
 core/src/main/resources/provisioning.properties | 19 +++++++++++++
 21 files changed, 61 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
index a6b40fb..2c34090 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -38,7 +38,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleCreatePropagation  implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
index ea8df72..c216c41 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -38,7 +38,9 @@ import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.util.EntitlementUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleCreateSyncPropagation implements Processor{
 
         

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
index 1d2c20e..6523b76 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
@@ -37,7 +37,9 @@ import org.apache.syncope.core.workflow.role.RoleWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleDeletePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleDeletePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
index 0f02258..77e9e73 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -35,7 +35,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleDeprovisionPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
index cc2fcc0..30fe08d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -37,7 +37,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleUpdatePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
index 2447689..3ffa5b6 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
@@ -32,8 +32,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
-
+@Component
 public class DefaultUserConfirmPwdResetPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserConfirmPwdResetPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
index c71e3dc..3d2b18d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -37,7 +37,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserCreatePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserCreatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
index 1afef83..b8fa699 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -32,8 +32,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
-
+@Component
 public class DefaultUserDeletePropagation implements Processor{
     
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeletePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
index f62e4b6..2d2eba9 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -34,7 +34,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserDeprovisionPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
index 2cf1e6f..8bbc246 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -39,7 +39,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserStatusPropagation implements Processor{
     
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserStatusPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
index 6fdec75..48eb3d9 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -39,7 +39,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserUpdateInSyncPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdateInSyncPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index 880912e..c8ffe34 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -42,7 +42,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserUpdatePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
index 2d08b93..e20c84e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -32,7 +32,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserWFSuspendPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserWFSuspendPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
index 7e4c18e..b2acdfb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -30,7 +30,9 @@ import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class UserStatusOnSync implements Processor{
     
     private static final Logger LOG = LoggerFactory.getLogger(UserStatusOnSync.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
index f7a2981..701dc5b 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
@@ -96,7 +96,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
     @Resource(name = "anonymousUser")
     private String anonymousUser;
     
-    @Resource(name = "defaultRoleProvisioningManager")
+    @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager provisioningManager;
 
     @PreAuthorize("hasAnyRole('ROLE_READ', T(org.apache.syncope.common.SyncopeConstants).ANONYMOUS_ENTITLEMENT)")

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index 606d46b..0a30a86 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -97,7 +97,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Autowired
     protected AttributableTransformer attrTransformer;
     
-    @Resource(name = "defaultUserProvisioningManager")
+    @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
     @Transactional(readOnly = true)

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
index b356e64..78ada92 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
@@ -103,10 +103,10 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      */
     protected SyncProfile<T, A> profile;
     
-    @Resource(name = "defaultUserProvisioningManager")
+    @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager userProvisioningManager;
     
-    @Resource(name = "defaultRoleProvisioningManager")
+    @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager roleProvisioningManager;
 
     public void setProfile(final SyncProfile<T, A> profile) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
index ef4a46d..512a240 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
@@ -40,7 +40,7 @@ public class WorkflowUserSuspender implements UserSuspender {
 
     private static final Logger LOG = LoggerFactory.getLogger(WorkflowUserSuspender.class);
 
-    @Resource(name = "defaultUserProvisioningManager")
+    @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
index 260f01c..7cebf73 100644
--- a/core/src/main/resources/camelRoute.xml
+++ b/core/src/main/resources/camelRoute.xml
@@ -111,7 +111,7 @@ under the License.
     <route id="syncUserStatus">
       <from uri="direct:syncUserStatus"/>
       <process ref="userStatusOnSync" />
-      <process ref="defaultUserUpdateSyncPropagation" />
+      <process ref="defaultUserUpdateInSyncPropagation" />
       <to uri="direct:updateSyncPort"/>
     </route>
     <!--
@@ -454,7 +454,7 @@ under the License.
   <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
   <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
   <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
-  <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
+  <bean id="defaultUserUpdateInSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
   <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
   <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
   <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index e39ceed..5aa2aeb 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -43,6 +43,7 @@ under the License.
         <value>file:${conf.directory}/connid.properties</value>
         <value>file:${conf.directory}/workflow.properties</value>
         <value>file:${conf.directory}/mail.properties</value>
+        <value>file:${conf.directory}/provisioning.properties</value>
       </list>
     </property>
   </bean>
@@ -55,6 +56,7 @@ under the License.
         <value>classpath:connid.properties</value>
         <value>classpath:workflow.properties</value>
         <value>classpath:mail.properties</value>
+        <value>classpath:provisioning.properties</value>
       </list>
     </property>
   </bean>
@@ -75,9 +77,7 @@ under the License.
   <context:component-scan base-package="org.apache.syncope.core.workflow">
     <context:exclude-filter type="regex" expression=".*\.activiti\..*"/>
   </context:component-scan>
-  
-  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultUserProvisioningManager"/>
-  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager"/>
+  <context:component-scan base-package="org.apache.syncope.core.provisioning"/>
 
   <bean id="nonJPAdbInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
     <property name="dataSource" ref="dataSource"/>
@@ -151,23 +151,8 @@ under the License.
     <constructor-arg value="60"/>
     <constructor-arg value="5000"/>
   </bean>
-  <!-- Camel Context Definition -->
-  <bean id="syncopeCamelContextFactory" class="org.apache.syncope.core.provisioning.camel.SyncopeCamelContext"/>
-    
-    <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
-    <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
-    <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
-    <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
-    <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
-    <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
-    <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
-    <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
-    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
-    <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
-    <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
-    <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
-    <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
-    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>    
-
-    <bean id="routeController" class="org.apache.syncope.core.rest.controller.RouteController"/>
+  <!-- Camel Context Beans Definition -->   
+  <bean id="userProvisioningManager" class="${userProvisioningManager}"/>
+  <bean id="roleProvisioningManager" class="${roleProvisioningManager}"/>
+  <bean id="routeController" class="org.apache.syncope.core.rest.controller.RouteController"/>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
new file mode 100644
index 0000000..a8e49bf
--- /dev/null
+++ b/core/src/main/resources/provisioning.properties
@@ -0,0 +1,19 @@
+# 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.
+
+userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
+roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file


[03/53] [abbrv] syncope git commit: Initial running version, in order to fix #1

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
new file mode 100644
index 0000000..86f6ebe
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -0,0 +1,347 @@
+/*
+ * 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;
+
+import java.util.AbstractMap;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.syncope.common.mod.StatusMod;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.persistence.dao.UserDAO;
+import org.apache.syncope.core.propagation.PropagationByResource;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.UserDataBinder;
+import org.apache.syncope.core.sync.SyncResult;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserProvisioningManager implements UserProvisioningManager{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserProvisioningManager.class);
+
+    @Autowired
+    protected UserWorkflowAdapter uwfAdapter;
+
+    @Autowired
+    protected PropagationManager propagationManager;
+
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Autowired
+    protected UserDataBinder binder;    
+
+    @Autowired
+    protected UserDAO userDAO;   
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO){
+        return create(userTO, true);
+    }
+    
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
+        WorkflowResult<Map.Entry<Long, Boolean>> created;
+        try {
+            created = uwfAdapter.create(userTO,storePassword);
+        } catch (RuntimeException e) {
+            throw e;
+        }
+
+        List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
+                created, userTO.getPassword(), userTO.getVirAttrs(), userTO.getMemberships());
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                created.getResult().getKey(), propagationReporter.getStatuses());
+        return result;
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
+                WorkflowResult<Map.Entry<Long, Boolean>> created;
+        try {
+            created = uwfAdapter.create(userTO,storePassword);
+        } catch (RuntimeException e) {
+            throw e;
+        }
+
+        List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
+                created, userTO.getPassword(), userTO.getVirAttrs(), excludedResources, null);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                created.getResult().getKey(), propagationReporter.getStatuses());
+        return result;
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod) {
+        return update(userMod, false);
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
+        try {
+            updated = uwfAdapter.update(userMod);
+        } catch (RuntimeException e) {
+            throw e;
+        }
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        return result;    
+    }
+       
+    @Override
+    public List<PropagationStatus> delete(final Long userId) {
+
+        return delete(userId, Collections.<String>emptySet());
+    }
+
+    @Override
+    public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources) {
+        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(subjectId,excludedResources);
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        try {
+            uwfAdapter.delete(subjectId);
+        } catch (RuntimeException e) {
+            throw e;
+        }
+
+        return propagationReporter.getStatuses();
+    }
+
+    
+    @Override
+    public Long unlink(UserMod userMod) {
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(userMod);
+        return updated.getResult().getKey().getId();
+    }
+
+    @Override
+    public Long link(UserMod subjectMod) {
+        return uwfAdapter.update(subjectMod).getResult().getKey().getId();
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod) {
+        WorkflowResult<Long> updated;
+        if (statusMod.isOnSyncope()) {
+            updated = uwfAdapter.activate(user.getId(), statusMod.getToken());
+        } else {
+            updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+        }
+  
+        List<PropagationStatus> statuses = propagateStatus(user, statusMod);
+        return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod) {
+        WorkflowResult<Long> updated;
+        if (statusMod.isOnSyncope()) {
+            updated = uwfAdapter.reactivate(user.getId());
+        } else {
+            updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+        }
+        
+        List<PropagationStatus> statuses = propagateStatus(user, statusMod);
+        return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod) {
+        WorkflowResult<Long> updated;
+        if (statusMod.isOnSyncope()) {
+            updated = uwfAdapter.suspend(user.getId());
+        } else {
+            updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+        }
+        
+        List<PropagationStatus> statuses = propagateStatus(user, statusMod);
+        return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
+    }
+    
+    public List<PropagationStatus> propagateStatus(SyncopeUser user, StatusMod statusMod){
+                
+        Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
+        resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+                user, statusMod.getType() != StatusMod.ModType.SUSPEND, resourcesToBeExcluded);
+        PropagationReporter propReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        return propReporter.getStatuses();
+        
+    }
+
+    @Override
+    public List<PropagationStatus> deprovision(Long userId, Collection<String> resources) {
+        
+        final SyncopeUser user = binder.getUserFromId(userId);        
+        
+        final Set<String> noPropResourceName = user.getResourceNames();
+        noPropResourceName.removeAll(resources);
+        
+        final List<PropagationTask> tasks =
+                propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
+        final PropagationReporter propagationReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        return propagationReporter.getStatuses();
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, final SyncResult result, Boolean enabled, Set<String> excludedResources){
+        
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
+        try {
+            updated = uwfAdapter.update(userMod);
+        } catch (Exception e) {
+            LOG.error("Update of user {} failed, trying to sync its status anyway (if configured)", id, e);
+
+            result.setStatus(SyncResult.Status.FAILURE);
+            result.setMessage("Update failed, trying to sync status anyway (if configured)\n" + e.getMessage());
+
+            updated = new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+                    new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false), new PropagationByResource(),
+                    new HashSet<String>());
+        }
+
+        if (enabled != null) {
+            SyncopeUser user = userDAO.find(id);
+
+            WorkflowResult<Long> enableUpdate = null;
+            if (user.isSuspended() == null) {
+                enableUpdate = uwfAdapter.activate(id, null);
+            } else if (enabled && user.isSuspended()) {
+                enableUpdate = uwfAdapter.reactivate(id);
+            } else if (!enabled && !user.isSuspended()) {
+                enableUpdate = uwfAdapter.suspend(id);
+            }
+
+            if (enableUpdate != null) {
+                if (enableUpdate.getPropByRes() != null) {
+                    updated.getPropByRes().merge(enableUpdate.getPropByRes());
+                    updated.getPropByRes().purge();
+                }
+                updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
+            }
+        }
+
+            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                    getBean(PropagationReporter.class);
+
+            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResources);
+                
+            try {
+                    taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                    LOG.error("Error propagation primary resource", e);
+                    propagationReporter.onPrimaryResourceFailure(tasks);
+            }
+            
+            return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+
+    }
+
+    @Override
+    public void innerSuspend(SyncopeUser user, boolean suspend) {
+        
+            final WorkflowResult<Long> updated = uwfAdapter.suspend(user);
+
+            // propagate suspension if and only if it is required by policy
+            if (suspend) {
+                UserMod userMod = new UserMod();
+                userMod.setId(updated.getResult());
+
+                final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+                        new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+                                new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
+                                updated.getPropByRes(), updated.getPerformedTasks()));
+
+                taskExecutor.execute(tasks);
+            }            
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
new file mode 100644
index 0000000..594bf5e
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed 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;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.syncope.common.to.RoleTO;
+import org.apache.syncope.common.mod.RoleMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.propagation.PropagationException;
+
+public interface RoleProvisioningManager extends ProvisioningManager<RoleTO, RoleMod>{
+    
+    public Map.Entry<Long, List<PropagationStatus>> create(final RoleTO roleTO, Set<String> excludedResources);
+    
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(final RoleTO roleTO, Map<Long, String> roleOwnerMap,Set<String> excludedResources) throws PropagationException;
+    
+    public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources);
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
new file mode 100644
index 0000000..da29a42
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed 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;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.syncope.common.mod.StatusMod;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.sync.SyncResult;
+
+public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserMod>{
+    
+    public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod);
+
+    public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod);
+
+    public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod);
+    
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword);
+    
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled,Set<String> excludedResources);
+    
+    public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod, final boolean removeMemberships);
+    
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, final SyncResult result, Boolean enabled, Set<String> excludedResources);
+
+    public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources);    
+    
+    public void innerSuspend(SyncopeUser user, boolean suspend);
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
new file mode 100644
index 0000000..4857d2f
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -0,0 +1,307 @@
+/*
+ * 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.camel;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.PollingConsumer;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultMessage;
+import org.apache.camel.model.Constants;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.syncope.common.mod.RoleMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.RoleTO;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.apache.syncope.core.persistence.dao.RouteDAO;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.provisioning.RoleProvisioningManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class CamelRoleProvisioningManager implements RoleProvisioningManager{
+
+    private static final Logger LOG = LoggerFactory.getLogger(CamelRoleProvisioningManager.class);
+
+    private DefaultCamelContext camelContext;
+
+    private RoutesDefinition routes;
+
+    protected Map<String, PollingConsumer> consumerMap;
+
+    protected List<String> knownUri;
+    
+    @Autowired
+    protected RouteDAO routeDAO;
+
+    @Autowired
+    protected SyncopeCamelContext contextFactory;
+
+    public CamelRoleProvisioningManager() throws Exception {
+        knownUri = new ArrayList<String>();
+        consumerMap = new HashMap();
+    }
+
+    public void startContext() throws Exception {
+        camelContext.start();
+    }
+
+    public void stopContext() throws Exception {
+        camelContext.stop();
+    }
+
+    public CamelContext getContext() {
+        //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
+        //return context.getBean("camel-context", DefaultCamelContext.class);        
+        return contextFactory.getContext(routeDAO);  
+    }
+
+    public void changeRoute(String routePath) {
+        try {
+            camelContext.removeRouteDefinitions(routes.getRoutes());
+            InputStream is = getClass().getResourceAsStream(routePath);
+            routes = getContext().loadRoutesDefinition(is);
+            camelContext.addRouteDefinitions(routes.getRoutes());
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            LOG.error("Unexpected error", e);
+        }
+    }
+
+    protected void sendMessage(String uri, Object obj) {
+        Exchange exc = new DefaultExchange(getContext());
+        DefaultMessage m = new DefaultMessage();
+        m.setBody(obj);
+        exc.setIn(m);
+        ProducerTemplate template = getContext().createProducerTemplate();
+        template.send(uri, exc);
+    }
+
+    protected void sendMessage(String uri, Object obj, Map<String, Object> properties) {
+        Exchange exc = new DefaultExchange(getContext());
+        
+        Iterator<Map.Entry<String, Object>> it = properties.entrySet().iterator();
+        while (it.hasNext()) {
+            Map.Entry<String, Object> property = it.next();
+            exc.setProperty(property.getKey(), property.getValue());
+            LOG.info("Added property {}", property.getKey());            
+        }
+
+        DefaultMessage m = new DefaultMessage();
+        m.setBody(obj);
+        exc.setIn(m);
+        ProducerTemplate template = getContext().createProducerTemplate();
+        template.send(uri, exc);
+    }
+
+    protected PollingConsumer getConsumer(final String uri) {
+
+        if (!knownUri.contains(uri)) {
+            knownUri.add(uri);
+            Endpoint endpoint = getContext().getEndpoint(uri);
+            PollingConsumer pollingConsumer = null;
+            try {
+                pollingConsumer = endpoint.createPollingConsumer();
+                consumerMap.put(uri, pollingConsumer);
+                pollingConsumer.start();
+            } catch (Exception ex) {
+                LOG.error("Unexpected error in Consumer creation ", ex);
+            }
+            return pollingConsumer;
+        } else {
+            return consumerMap.get(uri);
+        }
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject) {
+        
+        return create(subject, Collections.<String>emptySet());        
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(RoleTO roleTO, Set<String> excludedResources) {
+        
+        String uri = "direct:createRolePort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("excludedResources", excludedResources);
+        
+        sendMessage("direct:createRole", roleTO, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap, Set<String> excludedResources) throws PropagationException {
+        
+        String uri = "direct:createRoleSyncPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map<String, Object> props = new HashMap<String, Object>();        
+        props.put("roleOwnerMap", roleOwnerMap);
+        props.put("excludedResources", excludedResources);
+           
+        sendMessage("direct:createRoleSync", roleTO, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {            
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+        
+        return o.getIn().getBody(Map.Entry.class);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod) {
+                
+        return update(subjectMod, Collections.<String>emptySet());
+    }
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
+
+        String uri = "direct:updateRolePort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("excludedResources", excludedResources);
+
+        sendMessage("direct:updateRole",subjectMod, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);        
+    }
+
+    @Override
+    public List<PropagationStatus> delete(Long subjectId) {
+        
+        String uri = "direct:deleteRolePort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:deleteRole", subjectId);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(List.class);
+    }
+
+    @Override
+    public Long unlink(RoleMod subjectMod) {
+        String uri = "direct:unlinkRolePort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:unlinkRole", subjectMod);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Long.class);
+    }
+
+    @Override
+    public Long link(RoleMod subjectMod) {
+        
+        String uri = "direct:linkRolePort";
+        
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:linkRole", subjectMod);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Long.class);  
+    }
+
+    @Override
+    public List<PropagationStatus> deprovision(final Long roleId, Collection<String> resources) {
+                
+        String uri = "direct:deprovisionRolePort";
+        
+        PollingConsumer pollingConsumer = getConsumer(uri);
+        
+        Map props = new HashMap<String, Object>();
+        props.put("resources", resources);
+
+        sendMessage("direct:deprovisionRole", roleId, props);
+        
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+        
+        return o.getIn().getBody(List.class);
+    }
+   
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
new file mode 100644
index 0000000..dc0c552
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -0,0 +1,456 @@
+/*
+ * 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.camel;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URLDecoder;
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.PollingConsumer;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultMessage;
+import org.apache.camel.model.Constants;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.syncope.common.mod.StatusMod;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.persistence.dao.RouteDAO;
+import org.apache.syncope.core.propagation.PropagationByResource;
+import org.apache.syncope.core.provisioning.UserProvisioningManager;
+import org.apache.syncope.core.sync.SyncResult;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class CamelUserProvisioningManager implements UserProvisioningManager {
+
+    private static final Logger LOG = LoggerFactory.getLogger(CamelUserProvisioningManager.class);
+
+    private DefaultCamelContext camelContext;
+
+    private RoutesDefinition routes;
+
+    protected Map<String, PollingConsumer> consumerMap;
+
+    protected List<String> knownUri;
+
+    @Autowired
+    protected RouteDAO routeDAO;
+    
+    @Autowired
+    protected SyncopeCamelContext contextFactory;
+
+    public CamelUserProvisioningManager() throws Exception {
+        knownUri = new ArrayList<String>();
+        consumerMap = new HashMap();
+    }
+
+    public String readerToString(Reader reader, int size) throws IOException {
+        StringBuffer content = new StringBuffer();
+        char[] buffer = new char[size];
+        int n;
+
+        while ((n = reader.read(buffer)) != -1) {
+            content.append(buffer, 0, n);
+        }
+
+        return content.toString();
+    }
+    
+    public void startContext() throws Exception {
+        getContext().start();
+    }
+
+    public void stopContext() throws Exception {
+        camelContext.stop();
+    }
+
+    public CamelContext getContext() {
+        //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
+        //return context.getBean("camel-context", DefaultCamelContext.class);                    
+        return contextFactory.getContext(routeDAO);
+    }
+
+    protected List<CamelRoute> getRoutes() {
+        return routeDAO.findAll();
+    }
+
+    public void changeRoute(String routePath) {
+        try {
+            camelContext.removeRouteDefinitions(routes.getRoutes());
+            InputStream is = getClass().getResourceAsStream(routePath);
+            routes = getContext().loadRoutesDefinition(is);
+            camelContext.addRouteDefinitions(routes.getRoutes());
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            LOG.error("Unexpected error", e);
+        }
+    }
+
+    protected void sendMessage(String uri, Object obj) {
+        Exchange exc = new DefaultExchange(getContext());
+        DefaultMessage m = new DefaultMessage();
+        m.setBody(obj);
+        exc.setIn(m);
+        ProducerTemplate template = getContext().createProducerTemplate();
+        template.send(uri, exc);
+    }
+
+    protected void sendMessage(String uri, Object obj, Map<String, Object> properties) {
+        Exchange exc = new DefaultExchange(getContext());
+
+        Iterator<Map.Entry<String, Object>> it = properties.entrySet().iterator();
+        while (it.hasNext()) {
+            Map.Entry<String, Object> property = it.next();
+            exc.setProperty(property.getKey(), property.getValue());
+            LOG.info("Added property {}", property.getKey());
+        }
+
+        DefaultMessage m = new DefaultMessage();
+        m.setBody(obj);
+        exc.setIn(m);
+        ProducerTemplate template = getContext().createProducerTemplate();
+        template.send(uri, exc);
+    }
+
+    protected PollingConsumer getConsumer(String uri) {
+        if (!knownUri.contains(uri)) {
+            knownUri.add(uri);
+            Endpoint endpoint = getContext().getEndpoint(uri);
+            PollingConsumer pollingConsumer = null;
+            try {
+                pollingConsumer = endpoint.createPollingConsumer();
+                consumerMap.put(uri, pollingConsumer);
+                pollingConsumer.start();
+            } catch (Exception ex) {
+                LOG.error("Unexpected error in Consumer creation ", ex);
+            }
+            return pollingConsumer;
+        } else {
+            return consumerMap.get(uri);
+        }
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO) {
+
+        return create(userTO, true, false, null, Collections.<String>emptySet());
+    }
+    
+    
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
+
+        return create(userTO, storePassword, false, null, Collections.<String>emptySet());
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
+        String uri = "direct:createPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("storePassword", storePassword);
+        props.put("disablePwdPolicyCheck", disablePwdPolicyCheck);
+        props.put("enabled", enabled);
+        props.put("excludedResources", excludedResources);
+
+        sendMessage("direct:createUser", userTO, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);
+    }
+
+    /**
+     *
+     * @param userMod
+     * @return
+     * @throws RuntimeException if problems arise on workflow update
+     */
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod) {
+        return update(userMod, false);
+    }
+    
+    
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
+        String uri = "direct:updatePort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("removeMemberships", removeMemberships);
+
+        sendMessage("direct:updateUser", userMod, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);    
+    }
+
+
+    @Override
+    public List<PropagationStatus> delete(final Long userId) {
+
+        return delete(userId, Collections.<String>emptySet());
+    }
+
+    @Override
+    public List<PropagationStatus> delete(final Long userId, Set<String> excludedResources) {
+        String uri = "direct:deletePort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("excludedResources", excludedResources);
+
+        sendMessage("direct:deleteUser", userId, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(List.class);
+    }
+
+    @Override
+    public Long unlink(final UserMod userMod) {
+        String uri = "direct:unlinkPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:unlinkUser", userMod);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        o.getIn().setBody((o.getIn().getBody(UserMod.class).getId()));
+        return o.getIn().getBody(Long.class);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod) {
+        String uri = "direct:statusPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map props = new HashMap<String, Object>();
+        props.put("token", statusMod.getToken());
+        props.put("user", user);
+        props.put("statusMod", statusMod);
+
+        if (statusMod.isOnSyncope()) {
+            sendMessage("direct:activateUser", user.getId(), props);
+        } else {
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            sendMessage("direct:statusUser", updated, props);
+        }
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod) {
+        String uri = "direct:statusPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map props = new HashMap<String, Object>();
+        props.put("user", user);
+        props.put("statusMod", statusMod);
+
+        if (statusMod.isOnSyncope()) {
+            sendMessage("direct:reactivateUser", user.getId(), props);
+        } else {
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            sendMessage("direct:statusUser", updated, props);
+        }
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod) {
+
+        String uri = "direct:statusPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map props = new HashMap<String, Object>();
+        props.put("user", user);
+        props.put("statusMod", statusMod);
+
+        if (statusMod.isOnSyncope()) {
+            sendMessage("direct:suspendUser", user.getId(), props);
+        } else {
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            sendMessage("direct:statusUser", updated, props);
+        }
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(Map.Entry.class);
+    }
+
+    @Override
+    public Long link(UserMod subjectMod) {
+        String uri = "direct:linkPort";
+
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:linkUser", subjectMod);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        o.getIn().setBody((o.getIn().getBody(UserMod.class).getId()));
+        return o.getIn().getBody(Long.class);
+    }
+
+    @Override
+    public List<PropagationStatus> deprovision(Long user, Collection<String> resources) {
+        String uri = "direct:deprovisionPort";
+
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map props = new HashMap<String, Object>();
+        props.put("resources", resources);
+
+        sendMessage("direct:deprovisionUser", user, props);
+
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+        return o.getIn().getBody(List.class);
+    }
+
+    @Override
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result, Boolean enabled, Set<String> excludedResources) {
+
+        String uri = "direct:updateSyncPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("id", id);
+        props.put("result", result);
+        props.put("enabled", enabled);
+        props.put("excludedResources", excludedResources);
+
+        sendMessage("direct:updateSyncUser", userMod, props);
+
+        Exchange o = pollingConsumer.receive();
+        Exception e;
+        if ((e = (Exception) o.getProperty(Exchange.EXCEPTION_CAUGHT)) != null) {
+
+            LOG.error("Update of user {} failed, trying to sync its status anyway (if configured)", id, e);
+
+            result.setStatus(SyncResult.Status.FAILURE);
+            result.setMessage("Update failed, trying to sync status anyway (if configured)\n" + e.getMessage());
+
+            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+                    new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false), new PropagationByResource(),
+                    new HashSet<String>());
+            sendMessage("direct:syncUserStatus", updated, props);
+            o = pollingConsumer.receive();
+        }
+
+        return o.getIn().getBody(Map.Entry.class);
+    }
+
+    @Override
+    public void innerSuspend(SyncopeUser user, boolean suspend) {
+
+        String uri = "direct:suspendWFPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("suspend", suspend);
+
+        sendMessage("direct:suspendUserWF", user, props);
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
new file mode 100644
index 0000000..6381649
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -0,0 +1,137 @@
+/*
+ * 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.camel;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.camel.CamelContext;
+import org.apache.camel.model.Constants;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.apache.syncope.core.persistence.dao.RouteDAO;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+
+@Component
+public class SyncopeCamelContext{
+
+    private static final Logger LOG = LoggerFactory.getLogger(SyncopeCamelContext.class);
+
+    private CamelContext camelContext = null;                   
+    
+    public SyncopeCamelContext() { 
+    }
+    
+    public CamelContext getContext(RouteDAO routeDAO){
+
+        if(camelContext == null) camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());              
+        if(camelContext.getRouteDefinitions().isEmpty()){            
+            
+            List<CamelRoute> crl = routeDAO.findAll();
+            LOG.info("{} route(s) are going to be loaded ", crl.size());                
+            loadContext(routeDAO, crl);
+                
+            try {
+                camelContext.start();
+            } catch (Exception ex) {
+                LOG.error("Error during staring camel context {}", ex);
+            }
+        }
+        
+        return camelContext;
+    }
+    
+    public void loadContext(RouteDAO routeDAO, List<CamelRoute> crl){
+        
+        try {
+            DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+            JAXBContext jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES);
+            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+            List rds = new ArrayList();
+
+            for (int s = 0; s < crl.size(); s++) {
+
+                InputStream is = new ByteArrayInputStream( URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").getBytes());
+                Document doc = dBuilder.parse(is);
+                doc.getDocumentElement().normalize();
+                Node routeEl = doc.getElementsByTagName("route").item(0);
+                JAXBElement obj = unmarshaller.unmarshal(routeEl, RouteDefinition.class);
+                //adding route definition to list                        
+                rds.add(obj.getValue());
+            }
+            camelContext.addRouteDefinitions(rds);
+        } catch (Exception ex) {
+            LOG.error("Error during loading camel context {}", ex);
+        }
+    
+    }
+    
+    public void reloadContext(RouteDAO routeDAO){
+        
+        List<CamelRoute> crl = routeDAO.findAll();
+        if(camelContext == null) getContext(routeDAO);
+        else {            
+            if( ! camelContext.getRouteDefinitions().isEmpty()){                    
+                for (Iterator<RouteDefinition> it = camelContext.getRouteDefinitions().iterator(); it.hasNext(); ) {
+                    RouteDefinition ard = it.next();
+                    it.remove();                       
+                }                    
+            }
+
+            loadContext(routeDAO, crl);
+        }
+    }
+    
+    public void reloadContext(RouteDAO routeDAO, Long routeId){
+        
+        if(camelContext == null) getContext(routeDAO);
+        else {            
+            if( ! camelContext.getRouteDefinitions().isEmpty()){
+                                
+                camelContext.getRouteDefinitions().remove(routeId.intValue());
+                List<CamelRoute> crl = new ArrayList<CamelRoute>();
+                crl.add(routeDAO.find(routeId));
+                loadContext(routeDAO, crl);
+            }
+                
+        }
+            
+    }
+    
+    public List<RouteDefinition> getDefinitions(){
+        return camelContext.getRouteDefinitions();
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
new file mode 100644
index 0000000..a6b40fb
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -0,0 +1,76 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.RoleTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.util.EntitlementUtil;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultRoleCreatePropagation  implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreatePropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange){
+        
+        WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
+        RoleTO subject = exchange.getProperty("subject", RoleTO.class);
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
+                
+        EntitlementUtil.extendAuthContext(created.getResult());
+
+        List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created, subject.getVirAttrs());
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                created.getResult(), propagationReporter.getStatuses());
+        
+        exchange.getOut().setBody(result);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
new file mode 100644
index 0000000..ea8df72
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -0,0 +1,79 @@
+package org.apache.syncope.core.provisioning.camel.processors;
+
+/*
+ * 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.
+ */
+
+import java.util.AbstractMap;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.to.RoleTO;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.to.AttributeTO;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.util.EntitlementUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DefaultRoleCreateSyncPropagation implements Processor{
+
+        
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreateSyncPropagation.class);
+    
+    @Override
+    public void process(Exchange exchange){    
+        
+        WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
+        
+        RoleTO actual = exchange.getProperty("subject", RoleTO.class);
+        Map<Long, String> roleOwnerMap = exchange.getProperty("roleOwnerMap", Map.class);
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+        
+        AttributeTO roleOwner = actual.getAttrMap().get(StringUtils.EMPTY);
+
+        if (roleOwner != null) {
+            roleOwnerMap.put(created.getResult(), roleOwner.getValues().iterator().next());
+        }
+
+        EntitlementUtil.extendAuthContext(created.getResult());
+
+        List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created,
+                actual.getVirAttrs(), excludedResource);
+
+        taskExecutor.execute(tasks);
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                created.getResult(), Collections.<PropagationStatus>emptyList());
+        
+        exchange.getOut().setBody(result);
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
new file mode 100644
index 0000000..1d2c20e
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
@@ -0,0 +1,100 @@
+/*
+ * 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.camel.processors;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
+import org.apache.syncope.core.persistence.dao.RoleDAO;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.RoleDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.apache.syncope.core.workflow.role.RoleWorkflowAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultRoleDeletePropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleDeletePropagation.class);
+    @Autowired
+    protected RoleWorkflowAdapter rwfAdapter;
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;    
+    @Autowired
+    protected RoleDAO roleDAO;
+    @Autowired
+    protected RoleDataBinder binder;
+    
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        
+        Long subjectId = exchange.getIn().getBody(Long.class);
+        
+        final List<SyncopeRole> toBeDeprovisioned = new ArrayList<SyncopeRole>();
+
+        final SyncopeRole syncopeRole = roleDAO.find(subjectId);
+
+        if (syncopeRole != null) {
+            toBeDeprovisioned.add(syncopeRole);
+
+            final List<SyncopeRole> descendants = roleDAO.findDescendants(toBeDeprovisioned.get(0));
+            if (descendants != null) {
+                toBeDeprovisioned.addAll(descendants);
+            }
+        }
+
+        final List<PropagationTask> tasks = new ArrayList<PropagationTask>();
+
+        for (SyncopeRole role : toBeDeprovisioned) {
+            // Generate propagation tasks for deleting users from role resources, if they are on those resources only
+            // because of the reason being deleted (see SYNCOPE-357)
+            for (WorkflowResult<Long> wfResult : binder.getUsersOnResourcesOnlyBecauseOfRole(role.getId())) {
+                tasks.addAll(propagationManager.getUserDeleteTaskIds(wfResult));
+            }
+
+            // Generate propagation tasks for deleting this role from resources
+            tasks.addAll(propagationManager.getRoleDeleteTaskIds(role.getId()));
+        }
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }      
+        
+        exchange.setProperty("statuses", propagationReporter.getStatuses());
+    }
+    
+    
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
new file mode 100644
index 0000000..0f02258
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -0,0 +1,74 @@
+/*
+ * 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.camel.processors;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.RoleDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultRoleDeprovisionPropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    @Autowired
+    protected RoleDataBinder binder;
+    
+    @Override
+    public void process(Exchange exchange){
+        
+        Long roleId = exchange.getIn().getBody(Long.class);
+        List<String> resources = exchange.getProperty("resources", List.class);
+        
+        final SyncopeRole role = binder.getRoleFromId(roleId);
+        
+        final Set<String> noPropResourceName = role.getResourceNames();
+        noPropResourceName.removeAll(resources);
+        
+        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        exchange.getOut().setBody(propagationReporter.getStatuses());
+    }    
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
new file mode 100644
index 0000000..cc2fcc0
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -0,0 +1,75 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.mod.RoleMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.UserDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultRoleUpdatePropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    @Autowired
+    protected UserDataBinder binder;
+    
+    @Override
+    public void process(Exchange exchange){
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();            
+        RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);   
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+        
+        List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
+                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(),excludedResource);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
+                PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult(), propagationReporter.getStatuses());
+        
+        exchange.getOut().setBody(result);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
new file mode 100644
index 0000000..c71e3dc
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -0,0 +1,76 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserCreatePropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserCreatePropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange){
+      
+        if((exchange.getIn().getBody() instanceof WorkflowResult)){
+            
+            WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();            
+            UserTO actual = exchange.getProperty("actual", UserTO.class);
+            Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+            
+            List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
+                    created, actual.getPassword(), actual.getVirAttrs(), excludedResource, actual.getMemberships());
+            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                    getBean(PropagationReporter.class);
+            try {
+                taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                LOG.error("Error propagation primary resource {}", e);
+                propagationReporter.onPrimaryResourceFailure(tasks);
+            }
+            
+            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(created.getResult().getKey(), propagationReporter.getStatuses());         
+            exchange.getOut().setBody(result);
+        }               
+    }
+    
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
new file mode 100644
index 0000000..1afef83
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -0,0 +1,72 @@
+/*
+ * 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.camel.processors;
+
+import java.util.List;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class DefaultUserDeletePropagation implements Processor{
+    
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeletePropagation.class);
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        
+        Long userId = (Long) exchange.getIn().getBody();       
+        LOG.info("UserId {} ", userId);
+        
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
+        
+        // Note here that we can only notify about "delete", not any other
+        // task defined in workflow process definition: this because this
+        // information could only be available after uwfAdapter.delete(), which
+        // will also effectively remove user from db, thus making virtually
+        // impossible by NotificationManager to fetch required user information
+        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(userId,excludedResource);
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        exchange.setProperty("statuses", propagationReporter.getStatuses());
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
new file mode 100644
index 0000000..f62e4b6
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -0,0 +1,74 @@
+/*
+ * 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.camel.processors;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.UserDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserDeprovisionPropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    @Autowired
+    protected UserDataBinder binder;
+    
+    @Override
+    public void process(Exchange exchange){
+        
+        Long userId = exchange.getIn().getBody(Long.class);
+        List<String> resources = exchange.getProperty("resources", List.class);
+        
+        final SyncopeUser user = binder.getUserFromId(userId);        
+        
+        final Set<String> noPropResourceName = user.getResourceNames();
+        noPropResourceName.removeAll(resources);
+        
+        final List<PropagationTask> tasks =
+                propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
+        final PropagationReporter propagationReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        exchange.getOut().setBody(propagationReporter.getStatuses());
+    }
+    
+}


[05/53] [abbrv] syncope git commit: Password managed now included in the provisionig manager

Posted by il...@apache.org.
Password managed now included in the provisionig manager


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

Branch: refs/heads/2_0_X
Commit: 0da02810041a4bbd5c0892a02924cf726a9e016e
Parents: 5b3b124
Author: giacomolm <gi...@hotmail.it>
Authored: Thu Dec 18 10:42:56 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Thu Dec 18 10:42:56 2014 +0100

----------------------------------------------------------------------
 .../DefaultUserProvisioningManager.java         | 20 ++++++
 .../core/provisioning/ProvisioningManager.java  | 42 +++++++++++
 .../provisioning/UserProvisioningManager.java   |  4 ++
 .../camel/CamelUserProvisioningManager.java     | 48 +++++++++----
 .../DefaultUserConfirmPwdResetPropagation.java  | 60 ++++++++++++++++
 .../provisioning/ProvisioningManager.java       | 42 -----------
 .../core/rest/controller/UserController.java    | 73 +-------------------
 core/src/main/resources/camelRoute.xml          | 40 ++++++++++-
 core/src/main/resources/coreContext.xml         |  1 +
 9 files changed, 201 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
index 86f6ebe..54f677c 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -344,4 +344,24 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             }            
     }
 
+    @Override
+    public void requestPasswordReset(Long id) {
+        uwfAdapter.requestPasswordReset(id);
+    }
+
+    @Override
+    public void confirmPasswordReset(SyncopeUser user, String token, String password) {
+            
+        uwfAdapter.confirmPasswordReset(user.getId(), token, password);
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
+        PropagationReporter propReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propReporter.onPrimaryResourceFailure(tasks);
+        }    
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
new file mode 100644
index 0000000..adc1cb0
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import org.apache.syncope.common.mod.AbstractAttributableMod;
+import org.apache.syncope.common.to.AbstractAttributableTO;
+import org.apache.syncope.common.to.PropagationStatus;
+
+public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
+
+    public Map.Entry<Long, List<PropagationStatus>> create(T subject);
+
+    public Map.Entry<Long, List<PropagationStatus>> update(M subjectMod);
+
+    public List<PropagationStatus> delete(Long subjectId);
+
+    public Long unlink(M subjectMod);
+
+    public Long link(M subjectMod);
+
+    public List<PropagationStatus> deprovision(Long user, Collection<String> resources);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
index da29a42..32a4d18 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
@@ -47,4 +47,8 @@ public interface UserProvisioningManager extends ProvisioningManager<UserTO, Use
     
     public void innerSuspend(SyncopeUser user, boolean suspend);
     
+    public void requestPasswordReset(final Long id);
+    
+    public void confirmPasswordReset(SyncopeUser user,final String token,final String password);
+    
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index dc0c552..92b3cfb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -18,11 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.camel;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.net.URLDecoder;
 import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -33,11 +31,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -46,10 +39,7 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
-import org.apache.camel.model.Constants;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
@@ -60,15 +50,11 @@ import org.apache.syncope.core.persistence.dao.RouteDAO;
 import org.apache.syncope.core.propagation.PropagationByResource;
 import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.sync.SyncResult;
-import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+
 
 public class CamelUserProvisioningManager implements UserProvisioningManager {
 
@@ -453,4 +439,36 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     }
 
+    @Override
+    public void requestPasswordReset(Long id) {
+        String uri = "direct:requestPwdResetPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+
+        sendMessage("direct:requestPwdReset", id);
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+    }
+
+    @Override
+    public void confirmPasswordReset(SyncopeUser user, final String token, final String password) {
+        String uri = "direct:confirmPwdResetPort";
+        PollingConsumer pollingConsumer = getConsumer(uri);
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("user", user);
+        props.put("userId", user.getId());
+        props.put("token", token);
+        props.put("password", password);
+
+        sendMessage("direct:confirmPwdReset", user, props);
+        Exchange o = pollingConsumer.receive();
+
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
+            throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
new file mode 100644
index 0000000..2447689
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
@@ -0,0 +1,60 @@
+/*
+ * 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.camel.processors;
+
+import java.util.List;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class DefaultUserConfirmPwdResetPropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserConfirmPwdResetPropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange){
+        SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
+        PropagationReporter propReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propReporter.onPrimaryResourceFailure(tasks);
+        }                
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
deleted file mode 100644
index adc1cb0..0000000
--- a/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
+++ /dev/null
@@ -1,42 +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;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import org.apache.syncope.common.mod.AbstractAttributableMod;
-import org.apache.syncope.common.to.AbstractAttributableTO;
-import org.apache.syncope.common.to.PropagationStatus;
-
-public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
-
-    public Map.Entry<Long, List<PropagationStatus>> create(T subject);
-
-    public Map.Entry<Long, List<PropagationStatus>> update(M subjectMod);
-
-    public List<PropagationStatus> delete(Long subjectId);
-
-    public Long unlink(M subjectMod);
-
-    public Long link(M subjectMod);
-
-    public List<PropagationStatus> deprovision(Long user, Collection<String> resources);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index d8fa5f8..606d46b 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -26,7 +26,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -43,11 +42,8 @@ import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.common.types.ClientExceptionType;
 import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.common.mod.AttributeMod;
-import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.types.SubjectType;
 import org.apache.syncope.common.to.PropagationStatus;
-import org.apache.syncope.core.persistence.beans.CamelRoute;
-import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
@@ -57,18 +53,11 @@ 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.persistence.dao.search.OrderByClause;
-import org.apache.syncope.core.propagation.PropagationByResource;
-import org.apache.syncope.core.propagation.PropagationException;
-import org.apache.syncope.core.propagation.PropagationReporter;
 import org.apache.syncope.core.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.propagation.impl.PropagationManager;
-import org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager;
 import org.apache.syncope.core.rest.data.AttributableTransformer;
 import org.apache.syncope.core.rest.data.UserDataBinder;
-import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.apache.syncope.core.util.EntitlementUtil;
-import org.apache.syncope.core.workflow.WorkflowResult;
-import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
@@ -108,9 +97,6 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Autowired
     protected AttributableTransformer attrTransformer;
     
-    @Autowired
-    protected UserWorkflowAdapter uwfAdapter;
-    
     @Resource(name = "defaultUserProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
@@ -269,50 +255,6 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
             }
         }
         
-        //Actual operations: workflow, propagation, notification
-        /*WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(actual);
-
-        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
-        if (tasks.isEmpty()) {
-            // SYNCOPE-459: take care of user virtual attributes ...
-            final PropagationByResource propByResVirAttr = binder.fillVirtual(
-                    updated.getResult().getKey().getId(),
-                    actual.getVirAttrsToRemove(),
-                    actual.getVirAttrsToUpdate());
-            // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
-            // not required, take care also of membership virtual attributes
-            boolean addOrUpdateMemberships = false;
-            for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
-                if (!binder.fillMembershipVirtual(
-                        updated.getResult().getKey().getId(),
-                        membershipMod.getRole(),
-                        null,
-                        membershipMod.getVirAttrsToRemove(),
-                        membershipMod.getVirAttrsToUpdate(),
-                        false).isEmpty()) {
-
-                    addOrUpdateMemberships = true;
-                }
-            }
-            tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
-                    ? propagationManager.getUserUpdateTaskIds(updated, false, null)
-                    : Collections.<PropagationTask>emptyList());
-        }
-
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                getBean(PropagationReporter.class);
-
-        if (!tasks.isEmpty()) {
-            try {
-                taskExecutor.execute(tasks, propagationReporter);
-            } catch (PropagationException e) {
-                LOG.error("Error propagation primary resource", e);
-                propagationReporter.onPrimaryResourceFailure(tasks);
-            }
-        }
-
-        final UserTO updatedTO = binder.getUserTO(updated.getResult().getKey().getId());
-        updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());*/
         Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual,removeMemberships);
 
         final UserTO updatedTO = binder.getUserTO(updated.getKey());
@@ -372,7 +314,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
             throw SyncopeClientException.build(ClientExceptionType.InvalidSecurityAnswer);
         }
 
-        uwfAdapter.requestPasswordReset(user.getId());
+        provisioningManager.requestPasswordReset(user.getId());
     }
 
     @PreAuthorize("isAnonymous() or hasRole(T(org.apache.syncope.common.SyncopeConstants).ANONYMOUS_ENTITLEMENT)")
@@ -382,18 +324,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         if (user == null) {
             throw new NotFoundException("User with token " + token);
         }
-
-        uwfAdapter.confirmPasswordReset(user.getId(), token, password);
-
-        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
-        PropagationReporter propReporter =
-                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propReporter.onPrimaryResourceFailure(tasks);
-        }
+        provisioningManager.confirmPasswordReset(user, token, password);
     }
 
     @PreAuthorize("isAuthenticated() "

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
index c7ac19a..e1ad071 100644
--- a/core/src/main/resources/camelRoute.xml
+++ b/core/src/main/resources/camelRoute.xml
@@ -413,6 +413,43 @@ under the License.
             </doTry>  
         </route>
         
+        <!--
+            REQUEST PASSWORD RESET ROUTE
+        -->
+        
+        <route id="requestPwdReset">
+            <from uri="direct:requestPwdReset"/>
+            <doTry>
+                <bean ref="uwfAdapter" method="requestPasswordReset(${body})"/>
+                <to uri="direct:requestPwdResetPort"/>
+                <doCatch>        
+                   <exception>java.lang.RuntimeException</exception>
+                   <handled>
+                       <constant>false</constant>
+                   </handled>
+                   <to uri="direct:requestPwdResetPort"/>
+                </doCatch>
+            </doTry>  
+        </route>
+        <!--
+            CONFIRM PASSWORD RESET
+        -->
+        <route id="confirmPwdReset">
+            <from uri="direct:confirmPwdReset"/>
+            <doTry>
+              <bean ref="uwfAdapter" method="confirmPasswordReset(${property.userId},${property.token},${property.password})"/>
+              <process ref="defaultUserConfirmPwdResetPropagation" />
+              <to uri="direct:confirmPwdResetPort"/>
+              <doCatch>        
+                  <exception>java.lang.RuntimeException</exception>
+                  <handled>
+                      <constant>false</constant>
+                  </handled>
+                  <to uri="direct:confirmPwdResetPort"/>
+              </doCatch>
+            </doTry>
+        </route>
+        
     </routeContext>
     <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
     <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
@@ -422,9 +459,10 @@ under the License.
     <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
     <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
     <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
     <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
     <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
     <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
     <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
-    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>    
+    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>            
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/0da02810/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index da55cfc..3950689 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -162,6 +162,7 @@ under the License.
     <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
     <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
     <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
     <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
     <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
     <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>


[10/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/master
Commit: de130b7fcbcb763d5578dbc4ae2aa9788aa53b1f
Parents: 43c9462 4de7c70
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Dec 18 11:17:39 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Dec 18 11:17:39 2014 +0100

----------------------------------------------------------------------
 .../syncope/console/pages/ConfModalPage.java    |   1 +
 .../wicket/markup/html/form/DateFieldPanel.java |   6 +-
 .../wicket/markup/html/form/FieldPanel.java     |   4 +-
 .../syncope/console/ConnInstanceTestITCase.java |  58 ++---
 .../files/JBossDeploymentStructureXml.java      |   9 +-
 .../apache/syncope/installer/files/OrmXml.java  |  98 ++++++---
 .../syncope/installer/files/ParentPom.java      | 212 ++++++++++++++-----
 .../files/PersistenceContextEMFactoryXml.java   |  14 +-
 pom.xml                                         |   6 +-
 9 files changed, 280 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/de130b7f/pom.xml
----------------------------------------------------------------------


[18/53] [abbrv] syncope git commit: Code formatting with netbeans

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index 92b3cfb..d30c624 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -55,7 +55,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-
 public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelUserProvisioningManager.class);
@@ -70,7 +69,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     @Autowired
     protected RouteDAO routeDAO;
-    
+
     @Autowired
     protected SyncopeCamelContext contextFactory;
 
@@ -90,7 +89,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
         return content.toString();
     }
-    
+
     public void startContext() throws Exception {
         getContext().start();
     }
@@ -170,15 +169,15 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
         return create(userTO, true, false, null, Collections.<String>emptySet());
     }
-    
-    
+
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
 
         return create(userTO, storePassword, false, null, Collections.<String>emptySet());
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword,
+            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
         String uri = "direct:createPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
@@ -209,13 +208,12 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod) {
         return update(userMod, false);
     }
-    
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
         String uri = "direct:updatePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("removeMemberships", removeMemberships);
 
@@ -227,10 +225,9 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
 
-        return o.getIn().getBody(Map.Entry.class);    
+        return o.getIn().getBody(Map.Entry.class);
     }
 
-
     @Override
     public List<PropagationStatus> delete(final Long userId) {
 
@@ -286,7 +283,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         if (statusMod.isOnSyncope()) {
             sendMessage("direct:activateUser", user.getId(), props);
         } else {
-            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().
+                    toLowerCase());
             sendMessage("direct:statusUser", updated, props);
         }
 
@@ -311,7 +309,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         if (statusMod.isOnSyncope()) {
             sendMessage("direct:reactivateUser", user.getId(), props);
         } else {
-            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().
+                    toLowerCase());
             sendMessage("direct:statusUser", updated, props);
         }
 
@@ -337,7 +336,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         if (statusMod.isOnSyncope()) {
             sendMessage("direct:suspendUser", user.getId(), props);
         } else {
-            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().
+                    toLowerCase());
             sendMessage("direct:statusUser", updated, props);
         }
 
@@ -389,7 +389,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result, Boolean enabled, Set<String> excludedResources) {
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result,
+            Boolean enabled, Set<String> excludedResources) {
 
         String uri = "direct:updateSyncPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
@@ -456,7 +457,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     public void confirmPasswordReset(SyncopeUser user, final String token, final String password) {
         String uri = "direct:confirmPwdResetPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("user", user);
         props.put("userId", user.getId());

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index 6381649..c529dcf 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel;
 
 import java.io.ByteArrayInputStream;
@@ -44,38 +43,39 @@ import org.springframework.stereotype.Component;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
-
 @Component
-public class SyncopeCamelContext{
+public class SyncopeCamelContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(SyncopeCamelContext.class);
 
-    private CamelContext camelContext = null;                   
-    
-    public SyncopeCamelContext() { 
+    private CamelContext camelContext = null;
+
+    public SyncopeCamelContext() {
     }
-    
-    public CamelContext getContext(RouteDAO routeDAO){
 
-        if(camelContext == null) camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());              
-        if(camelContext.getRouteDefinitions().isEmpty()){            
-            
+    public CamelContext getContext(RouteDAO routeDAO) {
+
+        if (camelContext == null) {
+            camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());
+        }
+        if (camelContext.getRouteDefinitions().isEmpty()) {
+
             List<CamelRoute> crl = routeDAO.findAll();
-            LOG.info("{} route(s) are going to be loaded ", crl.size());                
+            LOG.info("{} route(s) are going to be loaded ", crl.size());
             loadContext(routeDAO, crl);
-                
+
             try {
                 camelContext.start();
             } catch (Exception ex) {
                 LOG.error("Error during staring camel context {}", ex);
             }
         }
-        
+
         return camelContext;
     }
-    
-    public void loadContext(RouteDAO routeDAO, List<CamelRoute> crl){
-        
+
+    public void loadContext(RouteDAO routeDAO, List<CamelRoute> crl) {
+
         try {
             DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             JAXBContext jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES);
@@ -84,7 +84,8 @@ public class SyncopeCamelContext{
 
             for (int s = 0; s < crl.size(); s++) {
 
-                InputStream is = new ByteArrayInputStream( URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").getBytes());
+                InputStream is = new ByteArrayInputStream(URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").
+                        getBytes());
                 Document doc = dBuilder.parse(is);
                 doc.getDocumentElement().normalize();
                 Node routeEl = doc.getElementsByTagName("route").item(0);
@@ -96,42 +97,44 @@ public class SyncopeCamelContext{
         } catch (Exception ex) {
             LOG.error("Error during loading camel context {}", ex);
         }
-    
+
     }
-    
-    public void reloadContext(RouteDAO routeDAO){
-        
+
+    public void reloadContext(RouteDAO routeDAO) {
+
         List<CamelRoute> crl = routeDAO.findAll();
-        if(camelContext == null) getContext(routeDAO);
-        else {            
-            if( ! camelContext.getRouteDefinitions().isEmpty()){                    
-                for (Iterator<RouteDefinition> it = camelContext.getRouteDefinitions().iterator(); it.hasNext(); ) {
+        if (camelContext == null) {
+            getContext(routeDAO);
+        } else {
+            if (!camelContext.getRouteDefinitions().isEmpty()) {
+                for (Iterator<RouteDefinition> it = camelContext.getRouteDefinitions().iterator(); it.hasNext();) {
                     RouteDefinition ard = it.next();
-                    it.remove();                       
-                }                    
+                    it.remove();
+                }
             }
 
             loadContext(routeDAO, crl);
         }
     }
-    
-    public void reloadContext(RouteDAO routeDAO, Long routeId){
-        
-        if(camelContext == null) getContext(routeDAO);
-        else {            
-            if( ! camelContext.getRouteDefinitions().isEmpty()){
-                                
+
+    public void reloadContext(RouteDAO routeDAO, Long routeId) {
+
+        if (camelContext == null) {
+            getContext(routeDAO);
+        } else {
+            if (!camelContext.getRouteDefinitions().isEmpty()) {
+
                 camelContext.getRouteDefinitions().remove(routeId.intValue());
                 List<CamelRoute> crl = new ArrayList<CamelRoute>();
                 crl.add(routeDAO.find(routeId));
                 loadContext(routeDAO, crl);
             }
-                
+
         }
-            
+
     }
-    
-    public List<RouteDefinition> getDefinitions(){
+
+    public List<RouteDefinition> getDefinitions() {
         return camelContext.getRouteDefinitions();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
index 2c34090..2af3d37 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -41,22 +40,23 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleCreatePropagation  implements Processor{
+public class DefaultRoleCreatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
         RoleTO subject = exchange.getProperty("subject", RoleTO.class);
-        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
-                
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+
         EntitlementUtil.extendAuthContext(created.getResult());
 
         List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created, subject.getVirAttrs());
@@ -68,11 +68,11 @@ public class DefaultRoleCreatePropagation  implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), propagationReporter.getStatuses());
-        
+
         exchange.getOut().setBody(result);
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
index c216c41..d796d6d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -2,23 +2,22 @@ package org.apache.syncope.core.provisioning.camel.processors;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * 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
+ * with the License. You may obtain a copy of the License at
  *
- *   http://www.apache.org/licenses/LICENSE-2.0
+ * 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
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
-
 import java.util.AbstractMap;
 import java.util.Collections;
 import java.util.List;
@@ -41,25 +40,25 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleCreateSyncPropagation implements Processor{
+public class DefaultRoleCreateSyncPropagation implements Processor {
 
-        
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreateSyncPropagation.class);
-    
+
     @Override
-    public void process(Exchange exchange){    
-        
+    public void process(Exchange exchange) {
+
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
-        
+
         RoleTO actual = exchange.getProperty("subject", RoleTO.class);
         Map<Long, String> roleOwnerMap = exchange.getProperty("roleOwnerMap", Map.class);
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
-        
+
         AttributeTO roleOwner = actual.getAttrMap().get(StringUtils.EMPTY);
 
         if (roleOwner != null) {
@@ -72,10 +71,10 @@ public class DefaultRoleCreateSyncPropagation implements Processor{
                 actual.getVirAttrs(), excludedResource);
 
         taskExecutor.execute(tasks);
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), Collections.<PropagationStatus>emptyList());
-        
+
         exchange.getOut().setBody(result);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
index 6523b76..1c00131 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.ArrayList;
@@ -40,25 +39,30 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleDeletePropagation implements Processor{
+public class DefaultRoleDeletePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleDeletePropagation.class);
+
     @Autowired
     protected RoleWorkflowAdapter rwfAdapter;
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
-    protected PropagationTaskExecutor taskExecutor;    
+    protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected RoleDAO roleDAO;
+
     @Autowired
     protected RoleDataBinder binder;
-    
+
     @Override
     public void process(Exchange exchange) throws Exception {
-        
+
         Long subjectId = exchange.getIn().getBody(Long.class);
-        
+
         final List<SyncopeRole> toBeDeprovisioned = new ArrayList<SyncopeRole>();
 
         final SyncopeRole syncopeRole = roleDAO.find(subjectId);
@@ -92,11 +96,9 @@ public class DefaultRoleDeletePropagation implements Processor{
         } catch (PropagationException e) {
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
-        }      
-        
+        }
+
         exchange.setProperty("statuses", propagationReporter.getStatuses());
     }
-    
-    
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
index 77e9e73..a7c35fb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.HashSet;
@@ -38,29 +37,32 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleDeprovisionPropagation implements Processor{
+public class DefaultRoleDeprovisionPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected RoleDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         Long roleId = exchange.getIn().getBody(Long.class);
         List<String> resources = exchange.getProperty("resources", List.class);
-        
+
         final SyncopeRole role = binder.getRoleFromId(roleId);
-        
+
         final Set<String> noPropResourceName = role.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
-        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
+
+        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(
+                resources), noPropResourceName);
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -69,8 +71,8 @@ public class DefaultRoleDeprovisionPropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         exchange.getOut().setBody(propagationReporter.getStatuses());
-    }    
-    
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
index 30fe08d..90d37dd 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -40,25 +40,27 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleUpdatePropagation implements Processor{
+public class DefaultRoleUpdatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();            
-        RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);   
+    public void process(Exchange exchange) {
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
+        RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
-        
+
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
-                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(),excludedResource);
+                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(), excludedResource);
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -67,11 +69,11 @@ public class DefaultRoleUpdatePropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult(), propagationReporter.getStatuses());
-        
+
         exchange.getOut().setBody(result);
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
index 3ffa5b6..f3d9d74 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
@@ -35,17 +35,18 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserConfirmPwdResetPropagation implements Processor{
+public class DefaultUserConfirmPwdResetPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserConfirmPwdResetPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
+    public void process(Exchange exchange) {
         SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
@@ -56,6 +57,6 @@ public class DefaultUserConfirmPwdResetPropagation implements Processor{
         } catch (PropagationException e) {
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
-        }                
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
index 3d2b18d..82ba0ab 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -40,24 +39,25 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserCreatePropagation implements Processor{
+public class DefaultUserCreatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserCreatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-      
-        if((exchange.getIn().getBody() instanceof WorkflowResult)){
-            
-            WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();            
+    public void process(Exchange exchange) {
+
+        if ((exchange.getIn().getBody() instanceof WorkflowResult)) {
+
+            WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();
             UserTO actual = exchange.getProperty("actual", UserTO.class);
             Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
-            
+
             List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
                     created, actual.getPassword(), actual.getVirAttrs(), excludedResource, actual.getMemberships());
             PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
@@ -68,11 +68,12 @@ public class DefaultUserCreatePropagation implements Processor{
                 LOG.error("Error propagation primary resource {}", e);
                 propagationReporter.onPrimaryResourceFailure(tasks);
             }
-            
-            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(created.getResult().getKey(), propagationReporter.getStatuses());         
+
+            Map.Entry<Long, List<PropagationStatus>> result =
+                    new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(created.getResult().getKey(),
+                            propagationReporter.getStatuses());
             exchange.getOut().setBody(result);
-        }               
+        }
     }
-    
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
index b8fa699..3f80459 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.List;
@@ -35,28 +34,30 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserDeletePropagation implements Processor{
-    
+public class DefaultUserDeletePropagation implements Processor {
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeletePropagation.class);
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
     public void process(Exchange exchange) throws Exception {
-        
-        Long userId = (Long) exchange.getIn().getBody();       
+
+        Long userId = (Long) exchange.getIn().getBody();
         LOG.info("UserId {} ", userId);
-        
-        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
-        
+
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+
         // Note here that we can only notify about "delete", not any other
         // task defined in workflow process definition: this because this
         // information could only be available after uwfAdapter.delete(), which
         // will also effectively remove user from db, thus making virtually
         // impossible by NotificationManager to fetch required user information
-        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(userId,excludedResource);
+        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(userId, excludedResource);
 
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
@@ -66,8 +67,8 @@ public class DefaultUserDeletePropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         exchange.setProperty("statuses", propagationReporter.getStatuses());
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
index 2d2eba9..a529dea 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -37,28 +37,30 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserDeprovisionPropagation implements Processor{
+public class DefaultUserDeprovisionPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         Long userId = exchange.getIn().getBody(Long.class);
         List<String> resources = exchange.getProperty("resources", List.class);
-        
-        final SyncopeUser user = binder.getUserFromId(userId);        
-        
+
+        final SyncopeUser user = binder.getUserFromId(userId);
+
         final Set<String> noPropResourceName = user.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
+
         final List<PropagationTask> tasks =
                 propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
         final PropagationReporter propagationReporter =
@@ -69,8 +71,8 @@ public class DefaultUserDeprovisionPropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         exchange.getOut().setBody(propagationReporter.getStatuses());
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
index 8bbc246..cc167d7 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -42,22 +41,24 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserStatusPropagation implements Processor{
-    
+public class DefaultUserStatusPropagation implements Processor {
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserStatusPropagation.class);
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
-        
+
         SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
         StatusMod statusMod = exchange.getProperty("statusMod", StatusMod.class);
-        
+
         Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
         resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
 
@@ -71,8 +72,9 @@ public class DefaultUserStatusPropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
         }
-        
-        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), propReporter.getStatuses());
-        exchange.getOut().setBody(result); 
-    }    
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult(), propReporter.getStatuses());
+        exchange.getOut().setBody(result);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
index 48eb3d9..a931a5b 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -42,39 +41,44 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserUpdateInSyncPropagation implements Processor{
+public class DefaultUserUpdateInSyncPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdateInSyncPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
+
     @Autowired
     protected UserDAO userDAO;
-    
+
     @Override
-    public void process(Exchange exchange){
-                 
-            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();            
+    public void process(Exchange exchange) {
+
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
+
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated, updated.getResult().getKey().
+                getPassword() != null, excludedResource);
 
-            Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
-                              
-            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                    getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
 
-            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResource);
-                
-            try {
-                    taskExecutor.execute(tasks, propagationReporter);
-            } catch (PropagationException e) {
-                    LOG.error("Error propagation primary resource", e);
-                    propagationReporter.onPrimaryResourceFailure(tasks);
-            }
-            
-            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
-            exchange.getOut().setBody(result);            
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        exchange.getOut().setBody(result);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index c8ffe34..a94bea5 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -45,78 +44,81 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserUpdatePropagation implements Processor{
+public class DefaultUserUpdatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-                 
-            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();            
-            UserMod actual = exchange.getProperty("actual", UserMod.class);
-            boolean removeMemberships = exchange.getProperty("removeMemberships", boolean.class);
-            
-            // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
-            /*for (Long membershipId : actual.getMembershipsToRemove()) {
-                if (!binder.fillMembershipVirtual(
-                        null,
-                        null,
-                        membershipId,
-                        Collections.<String>emptySet(),
-                        Collections.<AttributeMod>emptySet(),
-                        true).isEmpty()) {
+    public void process(Exchange exchange) {
 
-                    removeMemberships = true;
-                }
-            }*/
-            
-            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
-            if (tasks.isEmpty()) {
-                // SYNCOPE-459: take care of user virtual attributes ...
-                final PropagationByResource propByResVirAttr = binder.fillVirtual(
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
+        UserMod actual = exchange.getProperty("actual", UserMod.class);
+        boolean removeMemberships = exchange.getProperty("removeMemberships", boolean.class);
+
+        // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
+            /* for (Long membershipId :
+         * actual.getMembershipsToRemove()) {
+         * if (!binder.fillMembershipVirtual(
+         * null,
+         * null,
+         * membershipId,
+         * Collections.<String>emptySet(),
+         * Collections.<AttributeMod>emptySet(),
+         * true).isEmpty()) {
+         *
+         * removeMemberships = true;
+         * }
+         * } */
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
+        if (tasks.isEmpty()) {
+            // SYNCOPE-459: take care of user virtual attributes ...
+            final PropagationByResource propByResVirAttr = binder.fillVirtual(
+                    updated.getResult().getKey().getId(),
+                    actual.getVirAttrsToRemove(),
+                    actual.getVirAttrsToUpdate());
+            // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
+            // not required, take care also of membership virtual attributes
+            boolean addOrUpdateMemberships = false;
+            for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
+                if (!binder.fillMembershipVirtual(
                         updated.getResult().getKey().getId(),
-                        actual.getVirAttrsToRemove(),
-                        actual.getVirAttrsToUpdate());
-                // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
-                // not required, take care also of membership virtual attributes
-                boolean addOrUpdateMemberships = false;
-                for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
-                    if (!binder.fillMembershipVirtual(
-                            updated.getResult().getKey().getId(),
-                            membershipMod.getRole(),
-                            null,
-                            membershipMod.getVirAttrsToRemove(),
-                            membershipMod.getVirAttrsToUpdate(),
-                            false).isEmpty()) {
+                        membershipMod.getRole(),
+                        null,
+                        membershipMod.getVirAttrsToRemove(),
+                        membershipMod.getVirAttrsToUpdate(),
+                        false).isEmpty()) {
 
-                        addOrUpdateMemberships = true;
-                    }
+                    addOrUpdateMemberships = true;
                 }
-                tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
-                        ? propagationManager.getUserUpdateTaskIds(updated, false, null)
-                        : Collections.<PropagationTask>emptyList());
             }
+            tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
+                    ? propagationManager.getUserUpdateTaskIds(updated, false, null)
+                    : Collections.<PropagationTask>emptyList());
+        }
 
-            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                    getBean(PropagationReporter.class);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
 
-            if (!tasks.isEmpty()) {
-                try {
-                    taskExecutor.execute(tasks, propagationReporter);
-                } catch (PropagationException e) {
-                    LOG.error("Error propagation primary resource", e);
-                    propagationReporter.onPrimaryResourceFailure(tasks);
-                }
+        if (!tasks.isEmpty()) {
+            try {
+                taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                LOG.error("Error propagation primary resource", e);
+                propagationReporter.onPrimaryResourceFailure(tasks);
             }
-            
-            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
-            exchange.getOut().setBody(result);            
+        }
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        exchange.getOut().setBody(result);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
index e20c84e..88cd160 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap.SimpleEntry;
@@ -35,19 +34,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserWFSuspendPropagation implements Processor{
+public class DefaultUserWFSuspendPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserWFSuspendPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-                 
-        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();            
+    public void process(Exchange exchange) {
+
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
         Boolean suspend = exchange.getProperty("suspend", Boolean.class);
 
         if (suspend) {
@@ -62,5 +62,5 @@ public class DefaultUserWFSuspendPropagation implements Processor{
             taskExecutor.execute(tasks);
         }
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
index b2acdfb..7cb7dfa 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.Map;
@@ -33,42 +32,43 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class UserStatusOnSync implements Processor{
-    
+public class UserStatusOnSync implements Processor {
+
     private static final Logger LOG = LoggerFactory.getLogger(UserStatusOnSync.class);
-    
+
     @Autowired
     protected UserDAO userDAO;
+
     @Autowired
     protected UserWorkflowAdapter uwfAdapter;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
-        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();                    
-          
+    public void process(Exchange exchange) {
+
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
+
         Boolean enabled = exchange.getProperty("enabled", Boolean.class);
         Long id = exchange.getProperty("id", Long.class);
-                
+
         if (enabled != null) {
-             SyncopeUser user = userDAO.find(id);
+            SyncopeUser user = userDAO.find(id);
 
-             WorkflowResult<Long> enableUpdate = null;
-             if (user.isSuspended() == null) {
-                 enableUpdate = uwfAdapter.activate(id, null);
-             } else if (enabled && user.isSuspended()) {
-                 enableUpdate = uwfAdapter.reactivate(id);
-             } else if (!enabled && !user.isSuspended()) {
-                 enableUpdate = uwfAdapter.suspend(id);
-             }
+            WorkflowResult<Long> enableUpdate = null;
+            if (user.isSuspended() == null) {
+                enableUpdate = uwfAdapter.activate(id, null);
+            } else if (enabled && user.isSuspended()) {
+                enableUpdate = uwfAdapter.reactivate(id);
+            } else if (!enabled && !user.isSuspended()) {
+                enableUpdate = uwfAdapter.suspend(id);
+            }
 
-             if (enableUpdate != null) {
-                 if (enableUpdate.getPropByRes() != null) {
-                     updated.getPropByRes().merge(enableUpdate.getPropByRes());
-                     updated.getPropByRes().purge();
-                 }
-                 updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
-             }
-       }
+            if (enableUpdate != null) {
+                if (enableUpdate.getPropByRes() != null) {
+                    updated.getPropByRes().merge(enableUpdate.getPropByRes());
+                    updated.getPropByRes().purge();
+                }
+                updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/quartz/package-info.java b/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
index 9447e7d..e2121f2 100644
--- a/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.quartz;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java b/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
index 146b23d..e22fa92 100644
--- a/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
+++ b/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
@@ -25,7 +25,7 @@ import java.lang.annotation.Target;
 
 import org.apache.syncope.common.report.ReportletConf;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 public @interface ReportletConfClass {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java b/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
index 992df5f..d6e5e4c 100644
--- a/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
+++ b/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
@@ -98,4 +98,4 @@ public class TextSerializer extends XMLSerializer {
         serializer.setMethod(TXT);
         return serializer;
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
index a4e53b8..b02bef8 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
@@ -217,7 +217,7 @@ public class LoggerController extends AbstractTransactionalController<LoggerTO>
             final String packageSearchPath =
                     ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
                     + ClassUtils.convertClassNameToResourcePath(
-                    SystemPropertyUtils.resolvePlaceholders(this.getClass().getPackage().getName()))
+                            SystemPropertyUtils.resolvePlaceholders(this.getClass().getPackage().getName()))
                     + "/" + "**/*.class";
 
             final Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
@@ -239,7 +239,7 @@ public class LoggerController extends AbstractTransactionalController<LoggerTO>
                     }
                 }
             }
-            
+
             //SYNCOPE-608
             final EventCategoryTO authenticationControllerEvents = new EventCategoryTO();
             authenticationControllerEvents.setCategory("AuthenticationController");

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
index 701dc5b..3a0f9d6 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
@@ -95,7 +95,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
 
     @Resource(name = "anonymousUser")
     private String anonymousUser;
-    
+
     @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager provisioningManager;
 
@@ -259,7 +259,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         LOG.debug("Transformed: {}", actual);
 
         Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(roleMod);
-        
+
         final RoleTO updatedTO = binder.getRoleTO(updated.getKey());
         updatedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return updatedTO;
@@ -281,7 +281,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         }
 
         List<PropagationStatus> statuses = provisioningManager.delete(roleId);
-        
+
         RoleTO roleTO = new RoleTO();
         roleTO.setId(roleId);
 
@@ -318,7 +318,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         roleMod.setId(roleId);
         roleMod.getResourcesToRemove().addAll(resources);
         final Long updatedResult = provisioningManager.unlink(roleMod);
- 
+
         return binder.getRoleTO(updatedResult);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
index 117d10f..f905f2c 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.rest.controller;
 
 import java.lang.reflect.Method;
@@ -36,57 +35,58 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 @Component
-public class RouteController extends AbstractTransactionalController<RouteTO>{
-    
+public class RouteController extends AbstractTransactionalController<RouteTO> {
+
     private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RouteDataBinder.class);
-    
+
     @Autowired
     private RouteDAO routeDao;
-    
+
     @Autowired
     private RouteDataBinder binder;
-    
+
     @Autowired
     private SyncopeCamelContext context;
-    
-    
+
     @PreAuthorize("hasRole('ROUTE_LIST')")
     @Transactional(readOnly = true)
-    public List<RouteTO> listRoutes(){
+    public List<RouteTO> listRoutes() {
         List<RouteTO> routes = new ArrayList<RouteTO>();
         Iterator it = routeDao.findAll().iterator();
-        while(it.hasNext()){
+        while (it.hasNext()) {
             routes.add(binder.getRouteTO((CamelRoute) it.next()));
         }
         return routes;
     }
-    
+
     @PreAuthorize("hasRole('ROUTE_READ')")
     @Transactional(readOnly = true)
-    public RouteTO readRoute(Long id){
+    public RouteTO readRoute(Long id) {
         CamelRoute route = routeDao.find(id);
-        if (route==null) 
-            throw new NotFoundException("Route with id="+id);
-        
+        if (route == null) {
+            throw new NotFoundException("Route with id=" + id);
+        }
+
         return binder.getRouteTO(route);
     }
-    
+
     @PreAuthorize("hasRole('ROUTE_UPDATE')")
-    public void updateRoute(RouteTO routeTO){
+    public void updateRoute(RouteTO routeTO) {
 
         CamelRoute route = routeDao.find(routeTO.getId());
-        if (route==null) 
-            throw new NotFoundException("Route with id="+route.getId());
+        if (route == null) {
+            throw new NotFoundException("Route with id=" + route.getId());
+        }
         route.setRouteContent(routeTO.getRouteContent());
-        routeDao.save(route);       
+        routeDao.save(route);
         LOG.info("UPDATING ROUTE WITH ID {} ", routeTO.getId());
         LOG.info("NEW ROUTE CONTENT {} ", routeTO.getRouteContent());
         context.reloadContext(routeDao, routeTO.getId());
-    }   
-    
+    }
+
     @Override
     protected RouteTO resolveReference(Method method, Object... args) throws UnresolvedReferenceException {
         throw new UnresolvedReferenceException();
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index 0a30a86..0607a5f 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -96,7 +96,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
 
     @Autowired
     protected AttributableTransformer attrTransformer;
-    
+
     @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
@@ -212,8 +212,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         UserTO actual = attrTransformer.transform(userTO);
         LOG.debug("Transformed: {}", actual);
 
-        Map.Entry<Long, List<PropagationStatus>>
-                created = provisioningManager.create(actual,storePassword);
+        Map.Entry<Long, List<PropagationStatus>> created = provisioningManager.create(actual, storePassword);
 
         final UserTO savedTO = binder.getUserTO(created.getKey());
         savedTO.getPropagationStatusTOs().addAll(created.getValue());
@@ -238,7 +237,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         // AttributableMod transformation (if configured)
         UserMod actual = attrTransformer.transform(userMod);
         LOG.debug("Transformed: {}", actual);
-        
+
         //CAMEL
         // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
         boolean removeMemberships = false;
@@ -254,15 +253,16 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
                 removeMemberships = true;
             }
         }
-        
-        Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual,removeMemberships);
+
+        Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual, removeMemberships);
 
         final UserTO updatedTO = binder.getUserTO(updated.getKey());
         updatedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return updatedTO;
     }
 
-     protected Map.Entry<Long, List<PropagationStatus>> setStatusOnWfAdapter(final SyncopeUser user, final StatusMod statusMod) {
+    protected Map.Entry<Long, List<PropagationStatus>> setStatusOnWfAdapter(final SyncopeUser user,
+            final StatusMod statusMod) {
         Map.Entry<Long, List<PropagationStatus>> updated;
 
         switch (statusMod.getType()) {
@@ -289,8 +289,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     public UserTO status(final StatusMod statusMod) {
         SyncopeUser user = binder.getUserFromId(statusMod.getId());
 
-        Map.Entry<Long, List<PropagationStatus>>
-            updated = setStatusOnWfAdapter(user, statusMod);
+        Map.Entry<Long, List<PropagationStatus>> updated = setStatusOnWfAdapter(user, statusMod);
         final UserTO savedTO = binder.getUserTO(updated.getKey());
         savedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return savedTO;
@@ -477,8 +476,8 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Transactional(rollbackFor = { Throwable.class })
     @Override
     public UserTO deprovision(final Long userId, final Collection<String> resources) {
-        final SyncopeUser user = binder.getUserFromId(userId);        
-        
+        final SyncopeUser user = binder.getUserFromId(userId);
+
         List<PropagationStatus> statuses = provisioningManager.deprovision(userId, resources);
 
         final UserTO updatedUserTO = binder.getUserTO(user);
@@ -535,18 +534,18 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
 
         throw new UnresolvedReferenceException();
     }
-    
-    public PrintStream getDefinition() throws FileNotFoundException{
-        /*String result = "";
-        if(provisioningManager instanceof CamelUserProvisioningManager){
-            List l = ((CamelUserProvisioningManager)provisioningManager).getRoutes();
-            Iterator<CamelRoute> it = l.iterator();
-            
-            while(it.hasNext()){
-                result += it.next().getRouteContent();
-            }                        
-        }
-        return new PrintStream(result);*/
+
+    public PrintStream getDefinition() throws FileNotFoundException {
+        /* String result = "";
+         * if(provisioningManager instanceof CamelUserProvisioningManager){
+         * List l = ((CamelUserProvisioningManager)provisioningManager).getRoutes();
+         * Iterator<CamelRoute> it = l.iterator();
+         *
+         * while(it.hasNext()){
+         * result += it.next().getRouteContent();
+         * }
+         * }
+         * return new PrintStream(result); */
         return null;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
index cfcaee4..2d5a433 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
@@ -52,9 +52,9 @@ public class ReportDataBinder {
      */
     private static final Logger LOG = LoggerFactory.getLogger(ReportDataBinder.class);
 
-    private static final String[] IGNORE_REPORT_PROPERTIES = {"id", "reportlets", "executions"};
+    private static final String[] IGNORE_REPORT_PROPERTIES = { "id", "reportlets", "executions" };
 
-    private static final String[] IGNORE_REPORT_EXECUTION_PROPERTIES = {"id", "report", "execResult"};
+    private static final String[] IGNORE_REPORT_EXECUTION_PROPERTIES = { "id", "report", "execResult" };
 
     @Autowired
     private ReportExecDAO reportExecDAO;
@@ -65,7 +65,7 @@ public class ReportDataBinder {
     @Autowired
     private ImplementationClassNamesLoader classNamesLoader;
 
-    @SuppressWarnings({"unchecked", "rawtypes"})
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     public Set<Class<Reportlet>> getAllReportletClasses() {
         Set<Class<Reportlet>> reportletClasses = new HashSet<Class<Reportlet>>();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
index c1016e6..824bd52 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
@@ -16,10 +16,8 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.rest.data;
 
-
 import org.apache.syncope.common.to.RouteTO;
 import org.apache.syncope.common.util.BeanUtils;
 import org.apache.syncope.core.persistence.beans.CamelRoute;
@@ -28,11 +26,11 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class RouteDataBinder {
-  
+
     private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RouteDataBinder.class);
-    
-    public RouteTO getRouteTO(CamelRoute route){        
-              
+
+    public RouteTO getRouteTO(CamelRoute route) {
+
         RouteTO routeTO = new RouteTO();
         BeanUtils.copyProperties(route, routeTO);
         return routeTO;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java b/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
index bcc015d..e625533 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
@@ -55,8 +55,8 @@ public class QueryResourceInfoComparator extends OperationResourceInfoComparator
         return op1Counter == op2Counter
                 ? 0
                 : op1Counter < op2Counter
-                ? 1
-                : -1;
+                        ? 1
+                        : -1;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java b/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
index e8f0e67..f3a9edf 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
@@ -202,8 +202,8 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R
         if (iee != null) {
             ClientExceptionType exType =
                     iee.getEntityClassSimpleName().endsWith("Policy")
-                    ? ClientExceptionType.InvalidPolicy
-                    : ClientExceptionType.valueOf("Invalid" + iee.getEntityClassSimpleName());
+                            ? ClientExceptionType.InvalidPolicy
+                            : ClientExceptionType.valueOf("Invalid" + iee.getEntityClassSimpleName());
 
             ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
             builder.header(RESTHeaders.ERROR_CODE, exType.getHeaderValue());

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java b/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
index 5c95114..b0a6c8e 100644
--- a/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
+++ b/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
@@ -35,6 +35,7 @@ import javax.crypto.Cipher;
 public class AsymmetricCipher {
 
     final private static String xform = "RSA/NONE/PKCS1Padding";
+
     final private static String algorithm = "RSA";
 
     public static byte[] encrypt(byte[] inpBytes, PublicKey key) throws Exception {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
index 4d5c09f..3c1b6fa 100644
--- a/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
@@ -70,7 +70,7 @@ public class ConnectorServiceImpl extends AbstractServiceImpl implements Connect
             final boolean includeSpecial) {
 
         connInstanceTO.setId(connInstanceId);
-        
+
         List<String> schemaNames = controller.getSchemaNames(connInstanceTO, includeSpecial);
         List<SchemaTO> result = new ArrayList<SchemaTO>(schemaNames.size());
         for (String name : schemaNames) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
index 2fc947c..020414d 100644
--- a/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
@@ -96,7 +96,7 @@ public class PolicyServiceImpl extends AbstractServiceImpl implements PolicyServ
     @Override
     public <T extends AbstractPolicyTO> void update(final Long policyId, final T policyTO) {
         policyTO.setId(policyId);
-        
+
         switch (policyTO.getType()) {
             case ACCOUNT:
             case GLOBAL_ACCOUNT:

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
index 1c44765..ecc323e 100644
--- a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.services;
 
 import java.util.List;
@@ -27,20 +26,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
-public class RouteServiceImpl extends AbstractServiceImpl implements RouteService{
+public class RouteServiceImpl extends AbstractServiceImpl implements RouteService {
 
     @Autowired
     private RouteController controller;
-    
+
     @Override
     public List<RouteTO> getRoutes() {
-        
-        return  controller.listRoutes();
+
+        return controller.listRoutes();
     }
-    
+
     @Override
-    public RouteTO getRoute(Long id){
-        
+    public RouteTO getRoute(Long id) {
+
         return controller.readRoute(id);
     }
 
@@ -48,5 +47,5 @@ public class RouteServiceImpl extends AbstractServiceImpl implements RouteServic
     public void importRoute(Long id, RouteTO route) {
         controller.updateRoute(route);
     }
-    
-}
\ No newline at end of file
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
index fa88e7c..7ab3691 100644
--- a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
@@ -61,8 +61,8 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
     public Response exportDefinition(final SubjectType kind) {
         final MediaType accept =
                 messageContext.getHttpHeaders().getAcceptableMediaTypes().contains(MediaType.APPLICATION_JSON_TYPE)
-                ? MediaType.APPLICATION_JSON_TYPE
-                : MediaType.APPLICATION_XML_TYPE;
+                        ? MediaType.APPLICATION_JSON_TYPE
+                        : MediaType.APPLICATION_XML_TYPE;
 
         StreamingOutput sout = new StreamingOutput() {
 
@@ -104,8 +104,8 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
     public void importDefinition(final SubjectType kind, final String definition) {
         final MediaType contentType =
                 messageContext.getHttpHeaders().getMediaType().equals(MediaType.APPLICATION_JSON_TYPE)
-                ? MediaType.APPLICATION_JSON_TYPE
-                : MediaType.APPLICATION_XML_TYPE;
+                        ? MediaType.APPLICATION_JSON_TYPE
+                        : MediaType.APPLICATION_XML_TYPE;
 
         if (kind == SubjectType.USER) {
             controller.importUserDefinition(contentType, definition);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java b/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
index 42548d1..0a809be 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
@@ -162,7 +162,8 @@ public interface SyncActions extends AbstractSyncActions<AbstractSyncopeResultHa
      * Action to be executed after each local user / role synchronization.
      *
      * @param profile profile of the synchronization being executed.
-     * @param delta retrieved synchronization information (may be modified by 'beforeProvision/beforeUpdate/beforeDelete')
+     * @param delta retrieved synchronization information (may be modified by
+     * 'beforeProvision/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

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java b/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
index 5ebca8a..7f1986a 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
@@ -28,9 +28,12 @@ import org.apache.syncope.common.types.ResourceOperation;
 import org.apache.syncope.common.types.TraceLevel;
 
 public class SyncResult {
+
     public enum Status {
+
         SUCCESS,
         FAILURE
+
     }
 
     private String message;
@@ -115,8 +118,8 @@ public class SyncResult {
             // All
             return String.format("%s %s (id/name): %d/%s %s", operation, status, id, name,
                     StringUtils.isBlank(message)
-                    ? ""
-                    : "with message: " + message);
+                            ? ""
+                            : "with message: " + message);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
index f8cb658..7036ab7 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
@@ -114,7 +114,6 @@ public abstract class AbstractSubjectPushResultHandler extends AbstractSyncopeRe
         String operation = null;
 
         // Try to read remote object (user / group) BEFORE any actual operation
-
         final String accountId = MappingUtil.getAccountIdValue(
                 subject, profile.getSyncTask().getResource(), getMapping().getAccountIdItem());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
index cabeb4f..26ff30b 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
@@ -316,7 +316,7 @@ public abstract class AbstractSyncJob<T extends AbstractSyncTask, A extends Abst
             } catch (Exception e) {
                 final String msg = String.
                         format("Connector instance bean for resource %s and connInstance %s not found",
-                        syncTask.getResource(), syncTask.getResource().getConnector());
+                                syncTask.getResource(), syncTask.getResource().getConnector());
 
                 throw new JobExecutionException(msg, e);
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
index 78ada92..0c27004 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
@@ -43,7 +43,7 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      * Logger.
      */
     protected static final Logger LOG = LoggerFactory.getLogger(AbstractSyncopeResultHandler.class);
-    
+
     /**
      * User data binder.
      */
@@ -102,10 +102,10 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      * Sync profile.
      */
     protected SyncProfile<T, A> profile;
-    
+
     @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager userProvisioningManager;
-    
+
     @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager roleProvisioningManager;
 


[13/53] [abbrv] syncope git commit: Fixes #3 - Provisioning manager properties file added

Posted by il...@apache.org.
Fixes #3 - Provisioning manager properties file added


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

Branch: refs/heads/2_0_X
Commit: 8b1613934d47bd9db5276d08755f9111fd5a6a6c
Parents: efe6c5e
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 17:01:49 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 17:01:49 2014 +0100

----------------------------------------------------------------------
 .../DefaultRoleCreatePropagation.java           |  2 ++
 .../DefaultRoleCreateSyncPropagation.java       |  2 ++
 .../DefaultRoleDeletePropagation.java           |  2 ++
 .../DefaultRoleDeprovisionPropagation.java      |  2 ++
 .../DefaultRoleUpdatePropagation.java           |  2 ++
 .../DefaultUserConfirmPwdResetPropagation.java  |  3 +-
 .../DefaultUserCreatePropagation.java           |  2 ++
 .../DefaultUserDeletePropagation.java           |  3 +-
 .../DefaultUserDeprovisionPropagation.java      |  2 ++
 .../DefaultUserStatusPropagation.java           |  2 ++
 .../DefaultUserUpdateInSyncPropagation.java     |  2 ++
 .../DefaultUserUpdatePropagation.java           |  2 ++
 .../DefaultUserWFSuspendPropagation.java        |  2 ++
 .../camel/processors/UserStatusOnSync.java      |  2 ++
 .../core/rest/controller/RoleController.java    |  2 +-
 .../core/rest/controller/UserController.java    |  2 +-
 .../sync/impl/AbstractSyncopeResultHandler.java |  4 +--
 .../core/workflow/WorkflowUserSuspender.java    |  2 +-
 core/src/main/resources/camelRoute.xml          |  4 +--
 core/src/main/resources/coreContext.xml         | 29 +++++---------------
 core/src/main/resources/provisioning.properties | 19 +++++++++++++
 21 files changed, 61 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
index a6b40fb..2c34090 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -38,7 +38,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleCreatePropagation  implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
index ea8df72..c216c41 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -38,7 +38,9 @@ import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.util.EntitlementUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleCreateSyncPropagation implements Processor{
 
         

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
index 1d2c20e..6523b76 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
@@ -37,7 +37,9 @@ import org.apache.syncope.core.workflow.role.RoleWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleDeletePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleDeletePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
index 0f02258..77e9e73 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -35,7 +35,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleDeprovisionPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
index cc2fcc0..30fe08d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -37,7 +37,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultRoleUpdatePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
index 2447689..3ffa5b6 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
@@ -32,8 +32,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
-
+@Component
 public class DefaultUserConfirmPwdResetPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserConfirmPwdResetPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
index c71e3dc..3d2b18d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -37,7 +37,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserCreatePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserCreatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
index 1afef83..b8fa699 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -32,8 +32,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
-
+@Component
 public class DefaultUserDeletePropagation implements Processor{
     
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeletePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
index f62e4b6..2d2eba9 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -34,7 +34,9 @@ import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserDeprovisionPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
index 2cf1e6f..8bbc246 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -39,7 +39,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserStatusPropagation implements Processor{
     
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserStatusPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
index 6fdec75..48eb3d9 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -39,7 +39,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserUpdateInSyncPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdateInSyncPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index 880912e..c8ffe34 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -42,7 +42,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserUpdatePropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
index 2d08b93..e20c84e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -32,7 +32,9 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class DefaultUserWFSuspendPropagation implements Processor{
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserWFSuspendPropagation.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
index 7e4c18e..b2acdfb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -30,7 +30,9 @@ import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
+@Component
 public class UserStatusOnSync implements Processor{
     
     private static final Logger LOG = LoggerFactory.getLogger(UserStatusOnSync.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
index f7a2981..701dc5b 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
@@ -96,7 +96,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
     @Resource(name = "anonymousUser")
     private String anonymousUser;
     
-    @Resource(name = "defaultRoleProvisioningManager")
+    @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager provisioningManager;
 
     @PreAuthorize("hasAnyRole('ROLE_READ', T(org.apache.syncope.common.SyncopeConstants).ANONYMOUS_ENTITLEMENT)")

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index 606d46b..0a30a86 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -97,7 +97,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Autowired
     protected AttributableTransformer attrTransformer;
     
-    @Resource(name = "defaultUserProvisioningManager")
+    @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
     @Transactional(readOnly = true)

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
index b356e64..78ada92 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
@@ -103,10 +103,10 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      */
     protected SyncProfile<T, A> profile;
     
-    @Resource(name = "defaultUserProvisioningManager")
+    @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager userProvisioningManager;
     
-    @Resource(name = "defaultRoleProvisioningManager")
+    @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager roleProvisioningManager;
 
     public void setProfile(final SyncProfile<T, A> profile) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
index ef4a46d..512a240 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
@@ -40,7 +40,7 @@ public class WorkflowUserSuspender implements UserSuspender {
 
     private static final Logger LOG = LoggerFactory.getLogger(WorkflowUserSuspender.class);
 
-    @Resource(name = "defaultUserProvisioningManager")
+    @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
index 260f01c..7cebf73 100644
--- a/core/src/main/resources/camelRoute.xml
+++ b/core/src/main/resources/camelRoute.xml
@@ -111,7 +111,7 @@ under the License.
     <route id="syncUserStatus">
       <from uri="direct:syncUserStatus"/>
       <process ref="userStatusOnSync" />
-      <process ref="defaultUserUpdateSyncPropagation" />
+      <process ref="defaultUserUpdateInSyncPropagation" />
       <to uri="direct:updateSyncPort"/>
     </route>
     <!--
@@ -454,7 +454,7 @@ under the License.
   <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
   <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
   <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
-  <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
+  <bean id="defaultUserUpdateInSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
   <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
   <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
   <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index e39ceed..5aa2aeb 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -43,6 +43,7 @@ under the License.
         <value>file:${conf.directory}/connid.properties</value>
         <value>file:${conf.directory}/workflow.properties</value>
         <value>file:${conf.directory}/mail.properties</value>
+        <value>file:${conf.directory}/provisioning.properties</value>
       </list>
     </property>
   </bean>
@@ -55,6 +56,7 @@ under the License.
         <value>classpath:connid.properties</value>
         <value>classpath:workflow.properties</value>
         <value>classpath:mail.properties</value>
+        <value>classpath:provisioning.properties</value>
       </list>
     </property>
   </bean>
@@ -75,9 +77,7 @@ under the License.
   <context:component-scan base-package="org.apache.syncope.core.workflow">
     <context:exclude-filter type="regex" expression=".*\.activiti\..*"/>
   </context:component-scan>
-  
-  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultUserProvisioningManager"/>
-  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager"/>
+  <context:component-scan base-package="org.apache.syncope.core.provisioning"/>
 
   <bean id="nonJPAdbInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
     <property name="dataSource" ref="dataSource"/>
@@ -151,23 +151,8 @@ under the License.
     <constructor-arg value="60"/>
     <constructor-arg value="5000"/>
   </bean>
-  <!-- Camel Context Definition -->
-  <bean id="syncopeCamelContextFactory" class="org.apache.syncope.core.provisioning.camel.SyncopeCamelContext"/>
-    
-    <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
-    <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
-    <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
-    <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
-    <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
-    <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
-    <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
-    <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
-    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
-    <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
-    <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
-    <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
-    <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
-    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>    
-
-    <bean id="routeController" class="org.apache.syncope.core.rest.controller.RouteController"/>
+  <!-- Camel Context Beans Definition -->   
+  <bean id="userProvisioningManager" class="${userProvisioningManager}"/>
+  <bean id="roleProvisioningManager" class="${roleProvisioningManager}"/>
+  <bean id="routeController" class="org.apache.syncope.core.rest.controller.RouteController"/>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b161393/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
new file mode 100644
index 0000000..a8e49bf
--- /dev/null
+++ b/core/src/main/resources/provisioning.properties
@@ -0,0 +1,19 @@
+# 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.
+
+userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
+roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file


[19/53] [abbrv] syncope git commit: Code formatting with netbeans

Posted by il...@apache.org.
Code formatting with netbeans


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

Branch: refs/heads/2_0_X
Commit: 7aa0db378d8ab7931c78d570c6f5968e2967bc7b
Parents: b7d6578
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 17:48:14 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 17:48:14 2014 +0100

----------------------------------------------------------------------
 core/pom.xml                                    |  14 +-
 .../syncope/core/init/CamelRouteLoader.java     |  74 ++--
 .../init/ImplementationClassNamesLoader.java    |   1 -
 .../core/init/SpringContextInitializer.java     |   4 +-
 .../core/persistence/SQLSchemaGenerator.java    |  25 +-
 .../persistence/beans/AbstractAttrValue.java    |  33 +-
 .../persistence/beans/AbstractBaseBean.java     |   2 +-
 .../core/persistence/beans/CamelRoute.java      |   4 +-
 .../persistence/beans/ExternalResource.java     |   2 +-
 .../core/persistence/beans/Notification.java    |   5 +-
 .../core/persistence/beans/package-info.java    |   1 -
 .../core/persistence/dao/ConnectorRegistry.java |   2 +-
 .../core/persistence/dao/impl/RouteDAOImpl.java |   3 +-
 .../entity/AbstractSyncTaskCheck.java           |   2 +-
 .../entity/AbstractSyncTaskValidator.java       |   4 +-
 .../validation/entity/AttrCheck.java            |   2 +-
 .../validation/entity/AttrValueCheck.java       |   2 +-
 .../validation/entity/ConnInstanceCheck.java    |   2 +-
 .../entity/ExternalResourceCheck.java           |   2 +-
 .../validation/entity/NotificationCheck.java    |   4 +-
 .../validation/entity/PolicyCheck.java          |   2 +-
 .../validation/entity/PropagationTaskCheck.java |   2 +-
 .../validation/entity/ReportCheck.java          |   2 +-
 .../validation/entity/SchedTaskCheck.java       |   2 +-
 .../validation/entity/SchemaCheck.java          |   2 +-
 .../validation/entity/SchemaNameCheck.java      |   2 +-
 .../validation/entity/SyncopeRoleCheck.java     |   2 +-
 .../validation/entity/SyncopeUserCheck.java     |   3 +-
 .../syncope/core/policy/PolicyEvaluator.java    |   5 +-
 .../syncope/core/policy/PolicyPattern.java      |   1 +
 .../core/propagation/PropagationReporter.java   |   2 +-
 .../impl/DBPasswordPropagationActions.java      |  16 +-
 .../impl/PriorityPropagationTaskExecutor.java   |   8 +-
 .../propagation/impl/PropagationManager.java    |   8 +-
 .../syncope/core/propagation/package-info.java  |   1 -
 .../DefaultRoleProvisioningManager.java         |  56 +--
 .../DefaultUserProvisioningManager.java         | 159 +++----
 .../core/provisioning/ProvisioningManager.java  |   2 +-
 .../provisioning/RoleProvisioningManager.java   |  14 +-
 .../provisioning/UserProvisioningManager.java   |  31 +-
 .../camel/CamelRoleProvisioningManager.java     |  68 +--
 .../camel/CamelUserProvisioningManager.java     |  33 +-
 .../provisioning/camel/SyncopeCamelContext.java |  81 ++--
 .../DefaultRoleCreatePropagation.java           |  22 +-
 .../DefaultRoleCreateSyncPropagation.java       |  31 +-
 .../DefaultRoleDeletePropagation.java           |  24 +-
 .../DefaultRoleDeprovisionPropagation.java      |  28 +-
 .../DefaultRoleUpdatePropagation.java           |  24 +-
 .../DefaultUserConfirmPwdResetPropagation.java  |  11 +-
 .../DefaultUserCreatePropagation.java           |  31 +-
 .../DefaultUserDeletePropagation.java           |  25 +-
 .../DefaultUserDeprovisionPropagation.java      |  24 +-
 .../DefaultUserStatusPropagation.java           |  26 +-
 .../DefaultUserUpdateInSyncPropagation.java     |  48 +-
 .../DefaultUserUpdatePropagation.java           | 116 ++---
 .../DefaultUserWFSuspendPropagation.java        |  16 +-
 .../camel/processors/UserStatusOnSync.java      |  54 +--
 .../syncope/core/quartz/package-info.java       |   1 -
 .../syncope/core/report/ReportletConfClass.java |   2 +-
 .../core/report/cocoon/TextSerializer.java      |   2 +-
 .../core/rest/controller/LoggerController.java  |   4 +-
 .../core/rest/controller/RoleController.java    |   8 +-
 .../core/rest/controller/RouteController.java   |  46 +-
 .../core/rest/controller/UserController.java    |  45 +-
 .../core/rest/data/ReportDataBinder.java        |   6 +-
 .../syncope/core/rest/data/RouteDataBinder.java |  10 +-
 .../rest/utils/QueryResourceInfoComparator.java |   4 +-
 .../rest/utils/RestServiceExceptionMapper.java  |   4 +-
 .../syncope/core/security/AsymmetricCipher.java |   1 +
 .../core/services/ConnectorServiceImpl.java     |   2 +-
 .../core/services/PolicyServiceImpl.java        |   2 +-
 .../syncope/core/services/RouteServiceImpl.java |  19 +-
 .../core/services/WorkflowServiceImpl.java      |   8 +-
 .../apache/syncope/core/sync/SyncActions.java   |   3 +-
 .../apache/syncope/core/sync/SyncResult.java    |   7 +-
 .../impl/AbstractSubjectPushResultHandler.java  |   1 -
 .../syncope/core/sync/impl/AbstractSyncJob.java |   2 +-
 .../sync/impl/AbstractSyncopeResultHandler.java |   6 +-
 .../core/sync/impl/LDAPPasswordSyncActions.java |  10 +-
 .../core/sync/impl/RoleSyncResultHandler.java   |  10 +-
 .../core/sync/impl/UserSyncResultHandler.java   |  94 ++--
 .../core/util/AttributeDeserializer.java        |   4 +-
 .../syncope/core/util/ContentLoaderHandler.java |  20 +-
 .../apache/syncope/core/util/RouteManager.java  |  19 +-
 .../syncope/core/util/SecureRandomUtil.java     |   8 +-
 .../core/util/SyncTokenDeserializer.java        |  22 +-
 .../apache/syncope/core/util/jexl/JexlUtil.java |   4 +-
 .../syncope/core/workflow/package-info.java     |   1 -
 .../role/AbstractRoleWorkflowAdapter.java       |   2 +-
 .../user/AbstractUserWorkflowAdapter.java       |   2 +-
 .../workflow/user/NoOpUserWorkflowAdapter.java  |   3 +-
 .../core/workflow/user/UserWorkflowAdapter.java |   2 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   3 +-
 .../user/activiti/SyncopeGroupManager.java      |   2 +-
 .../user/activiti/SyncopeUserManager.java       |   2 +-
 .../resources/persistenceContextEMFactory.xml   |   4 +-
 .../resources/report/staticReportlet2fo.xsl     |  98 ++---
 .../resources/report/staticReportlet2html.xsl   |  84 ++--
 .../resources/report/userReportlet2html.xsl     |   6 +-
 core/src/main/resources/roleRoute.xml           | 272 ++++++------
 core/src/main/resources/userRoute.xml           | 434 +++++++++----------
 core/src/main/resources/wadl2html/index.xsl     |  80 ++--
 .../core/persistence/dao/DerSchemaTest.java     |   1 -
 .../persistence/dao/SecurityQuestionTest.java   |   2 +-
 .../core/persistence/dao/VirSchemaTest.java     |   1 -
 .../syncope/core/rest/ConnectorTestITCase.java  |   6 +-
 .../core/rest/NotificationTestITCase.java       |   2 +-
 .../syncope/core/rest/PolicyTestITCase.java     |   4 +-
 .../syncope/core/rest/ResourceTestITCase.java   |   2 +-
 109 files changed, 1291 insertions(+), 1266 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 66b5a22..1628184 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -118,7 +118,7 @@ under the License.
       <artifactId>cxf-rt-rs-client</artifactId>
     </dependency>  
        
-     <dependency>
+    <dependency>
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-core</artifactId>
     </dependency>
@@ -127,14 +127,14 @@ under the License.
       <artifactId>camel-spring</artifactId>
     </dependency>
     <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.2.7</version>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.2.7</version>
     </dependency>
     <dependency>
-       <groupId>com.sun.xml.bind</groupId>
-       <artifactId>jaxb-impl</artifactId>
-       <version>2.2.7</version>
+      <groupId>com.sun.xml.bind</groupId>
+      <artifactId>jaxb-impl</artifactId>
+      <version>2.2.7</version>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java b/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
index aa6da28..5f63e0d 100644
--- a/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
+++ b/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.init;
 
 import java.io.File;
@@ -47,60 +46,61 @@ import org.w3c.dom.NodeList;
 
 @Component
 public class CamelRouteLoader {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(CamelRouteLoader.class);
-    
+
     @Autowired
     private RouteDAO routeDAO;
-    
+
     @Autowired
     private DataSource dataSource;
-    
+
     @Transactional
-    public void load(){
-        
+    public void load() {
+
         //if(routeDAO.findAll().isEmpty()){
-            URL url = getClass().getResource("/camelRoute.xml");                                   
+        URL url = getClass().getResource("/camelRoute.xml");
+
+        File file = new File(url.getPath());
+        String query = "INSERT INTO CamelRoute(ID, NAME, ROUTECONTENT) VALUES (?, ?, ?)";
+        try {
+
+            DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+            Document doc = dBuilder.parse(file);
+            doc.getDocumentElement().normalize();
 
-            File file = new File(url.getPath());
-            String query= "INSERT INTO CamelRoute(ID, NAME, ROUTECONTENT) VALUES (?, ?, ?)";
-            try{
-                
-                DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-                Document doc = dBuilder.parse(file);
-                doc.getDocumentElement().normalize();
+            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-                JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+            NodeList listOfRoutes = doc.getElementsByTagName("route");
+            for (int s = 0; s < listOfRoutes.getLength(); s++) {
+                //getting the route node element
+                Node routeEl = listOfRoutes.item(s);
+                //crate an instance of CamelRoute Entity
+                CamelRoute route = new CamelRoute();
+                route.setName(((Element) routeEl).getAttribute("id"));
+                route.setRouteContent(nodeToString(listOfRoutes.item(s)));
 
-                NodeList listOfRoutes = doc.getElementsByTagName("route");
-                for(int s=0; s<listOfRoutes.getLength(); s++){
-                    //getting the route node element
-                    Node routeEl = listOfRoutes.item(s);
-                    //crate an instance of CamelRoute Entity
-                    CamelRoute route = new CamelRoute();                                 
-                    route.setName(((Element)routeEl).getAttribute("id"));        
-                    route.setRouteContent(nodeToString(listOfRoutes.item(s)));
-                    
-                    jdbcTemplate.update(query, new Object[]{s+1,((Element)routeEl).getAttribute("id"),  nodeToString(listOfRoutes.item(s))});
-                    LOG.info("Route Registration Successed");
-                }
-            } catch (DataAccessException e) {
-                LOG.error("While trying to perform {}", query, e);
-            } catch (Exception e) {
-                LOG.error("Route Registration failed {}",e.getMessage());
+                jdbcTemplate.update(query, new Object[] { s + 1, ((Element) routeEl).getAttribute("id"), nodeToString(
+                    listOfRoutes.item(s)) });
+                LOG.info("Route Registration Successed");
             }
+        } catch (DataAccessException e) {
+            LOG.error("While trying to perform {}", query, e);
+        } catch (Exception e) {
+            LOG.error("Route Registration failed {}", e.getMessage());
+        }
         //}
     }
-    
-  private String nodeToString(Node node) {
+
+    private String nodeToString(Node node) {
         StringWriter sw = new StringWriter();
-        try{
+        try {
             Transformer t = TransformerFactory.newInstance().newTransformer();
             t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
             t.transform(new DOMSource(node), new StreamResult(sw));
-        }catch (TransformerException te) {
+        } catch (TransformerException te) {
             System.out.println("nodeToString Transformer Exception");
         }
         return sw.toString();
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java b/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
index b7659b8..30c568e 100644
--- a/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
+++ b/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
@@ -114,7 +114,6 @@ public class ImplementationClassNamesLoader {
                     }
 
                     // TODO: add push correlation rules management
-
                     if (interfaces.contains(PropagationActions.class) && !metadata.isAbstract()) {
                         classNames.get(Type.PROPAGATION_ACTIONS).add(metadata.getClassName());
                     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java b/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
index 115587d..dc99e34 100644
--- a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
+++ b/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
@@ -49,7 +49,7 @@ public class SpringContextInitializer implements InitializingBean {
 
     @Autowired
     private WorkflowAdapterLoader workflowAdapterLoader;
-    
+
     @Autowired
     private CamelRouteLoader routeLoader;
 
@@ -63,7 +63,7 @@ public class SpringContextInitializer implements InitializingBean {
         classNamesLoader.load();
 
         routeLoader.load();
-        
+
         workflowAdapterLoader.init();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java b/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
index 342e347..8942cda 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
@@ -60,7 +60,7 @@ public final class SQLSchemaGenerator {
         }
 
         @SuppressWarnings("unchecked")
-        Iterator<File> itor = FileUtils.iterateFiles(baseDir, new String[] {"class"}, true);
+        Iterator<File> itor = FileUtils.iterateFiles(baseDir, new String[] { "class" }, true);
         List<File> entityClasses = new ArrayList<File>();
         while (itor.hasNext()) {
             entityClasses.add(itor.next());
@@ -127,7 +127,7 @@ public final class SQLSchemaGenerator {
         for (int i = 0; i < files.size(); i++) {
             File file = files.get(i);
 
-            args[ i] = file.getAbsolutePath();
+            args[i] = file.getAbsolutePath();
         }
         return args;
     }
@@ -140,7 +140,6 @@ public final class SQLSchemaGenerator {
             final String connectionProperties) {
 
         //extendRealmClasspath();
-
         Options opts = new Options();
         opts.put(OPTION_PROPERTIES_FILE, persistenceXmlFile);
         opts.put(OPTION_CONNECTION_DRIVER_NAME, connectionDriverName);
@@ -156,16 +155,16 @@ public final class SQLSchemaGenerator {
         boolean ok = Configurations.runAgainstAllAnchors(opts,
                 new Configurations.Runnable() {
 
-            @Override
-            public boolean run(final Options opts) throws IOException, SQLException {
-                JDBCConfiguration conf = new JDBCConfigurationImpl();
-                try {
-                    return MappingTool.run(conf, args, opts);
-                } finally {
-                    conf.close();
-                }
-            }
-        });
+                    @Override
+                    public boolean run(final Options opts) throws IOException, SQLException {
+                        JDBCConfiguration conf = new JDBCConfigurationImpl();
+                        try {
+                            return MappingTool.run(conf, args, opts);
+                        } finally {
+                            conf.close();
+                        }
+                    }
+                });
 
         if (!ok) {
             throw new IllegalStateException("The OpenJPA MappingTool detected an error!");

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
index 6ee527e..e3e71a1 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
@@ -195,21 +195,21 @@ public abstract class AbstractAttrValue extends AbstractBaseBean {
         return (T) (booleanValue != null
                 ? getBooleanValue()
                 : dateValue != null
-                ? getDateValue()
-                : doubleValue != null
-                ? getDoubleValue()
-                : longValue != null
-                ? getLongValue()
-                : binaryValue != null
-                ? getBinaryValue()
-                : stringValue);
+                        ? getDateValue()
+                        : doubleValue != null
+                                ? getDoubleValue()
+                                : longValue != null
+                                        ? getLongValue()
+                                        : binaryValue != null
+                                                ? getBinaryValue()
+                                                : stringValue);
     }
 
     public String getValueAsString() {
         final AttributeSchemaType type = getAttribute() == null || getAttribute().getSchema() == null
                 || getAttribute().getSchema().getType() == null
-                ? AttributeSchemaType.String
-                : getAttribute().getSchema().getType();
+                        ? AttributeSchemaType.String
+                        : getAttribute().getSchema().getType();
 
         return getValueAsString(type);
     }
@@ -228,22 +228,23 @@ public abstract class AbstractAttrValue extends AbstractBaseBean {
             case Long:
                 result = getAttribute() == null || getAttribute().getSchema() == null
                         || getAttribute().getSchema().getConversionPattern() == null
-                        ? getLongValue().toString()
-                        : DataFormat.format(getLongValue(), getAttribute().getSchema().getConversionPattern());
+                                ? getLongValue().toString()
+                                : DataFormat.format(getLongValue(), getAttribute().getSchema().getConversionPattern());
                 break;
 
             case Double:
                 result = getAttribute() == null || getAttribute().getSchema() == null
                         || getAttribute().getSchema().getConversionPattern() == null
-                        ? getDoubleValue().toString()
-                        : DataFormat.format(getDoubleValue(), getAttribute().getSchema().getConversionPattern());
+                                ? getDoubleValue().toString()
+                                : DataFormat.format(getDoubleValue(), getAttribute().getSchema().getConversionPattern());
                 break;
 
             case Date:
                 result = getAttribute() == null || getAttribute().getSchema() == null
                         || getAttribute().getSchema().getConversionPattern() == null
-                        ? DataFormat.format(getDateValue())
-                        : DataFormat.format(getDateValue(), false, getAttribute().getSchema().getConversionPattern());
+                                ? DataFormat.format(getDateValue())
+                                : DataFormat.format(getDateValue(), false, getAttribute().getSchema().
+                                        getConversionPattern());
                 break;
 
             case Binary:

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
index b8350b0..af2727a 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
@@ -73,7 +73,7 @@ public abstract class AbstractBaseBean implements Serializable {
             }
         }
 
-        return excludeFields.toArray(new String[]{});
+        return excludeFields.toArray(new String[] {});
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
index ad05f27..33fff55 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.persistence.beans;
 
 import javax.persistence.Entity;
@@ -26,13 +25,12 @@ import javax.persistence.Lob;
 import javax.persistence.GenerationType;
 import javax.persistence.Column;
 
-
 @Entity
 public class CamelRoute {
 
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
-    @Column(name="id")
+    @Column(name = "id")
     private Long id;
 
     private String name;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
index 438f972..e35eefe 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
@@ -323,7 +323,7 @@ public class ExternalResource extends AbstractSysInfo {
         return StringUtils.isBlank(jsonConf)
                 ? Collections.<ConnConfProperty>emptySet()
                 : new HashSet<ConnConfProperty>(
-                Arrays.asList(POJOHelper.deserialize(jsonConf, ConnConfProperty[].class)));
+                        Arrays.asList(POJOHelper.deserialize(jsonConf, ConnConfProperty[].class)));
     }
 
     public void setConnInstanceConfiguration(final Set<ConnConfProperty> properties) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
index 6c1c466..f548b00 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
@@ -85,7 +85,7 @@ public class Notification extends AbstractBaseBean {
     @NotNull
     @Enumerated(EnumType.STRING)
     private TraceLevel traceLevel;
-    
+
     @Column(nullable = false)
     @Basic
     @Min(0)
@@ -168,7 +168,8 @@ public class Notification extends AbstractBaseBean {
     }
 
     public boolean addStaticRecipient(String staticRecipient) {
-        return staticRecipient != null && !staticRecipients.contains(staticRecipient) && staticRecipients.add(staticRecipient);
+        return staticRecipient != null && !staticRecipients.contains(staticRecipient) && staticRecipients.add(
+                staticRecipient);
     }
 
     public boolean removeStaticRecipient(String staticRecipient) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
index 3a78e58..eff4862 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.persistence.beans;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java b/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
index d9c6845..3a783b9 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
@@ -40,4 +40,4 @@ public interface ConnectorRegistry {
      * @param id Spring bean id
      */
     void unregisterConnector(String id);
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java b/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
index aaa0026..7d30a01 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
@@ -37,7 +37,8 @@ public class RouteDAOImpl extends AbstractDAOImpl implements RouteDAO {
     @Transactional(readOnly = true)
     @Override
     public List<CamelRoute> findAll() {
-        TypedQuery<CamelRoute> query = entityManager.createQuery("SELECT e FROM " + CamelRoute.class.getSimpleName() + " e", CamelRoute.class);
+        TypedQuery<CamelRoute> query = entityManager.createQuery("SELECT e FROM " + CamelRoute.class.getSimpleName()
+                + " e", CamelRoute.class);
         return query.getResultList();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
index ac3821d..d7e172b 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = AbstractSyncTaskValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
index a53d815..9088a44 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
@@ -60,8 +60,8 @@ public class AbstractSyncTaskValidator extends AbstractValidator<AbstractSyncTas
                         isAssignable = object instanceof SyncTask
                                 ? SyncActions.class.isAssignableFrom(actionsClass)
                                 : object instanceof PushTask
-                                ? PushActions.class.isAssignableFrom(actionsClass)
-                                : false;
+                                        ? PushActions.class.isAssignableFrom(actionsClass)
+                                        : false;
                     } catch (Exception e) {
                         LOG.error("Invalid SyncActions specified", e);
                         isValid = false;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
index b569545..f0131dd 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = AttrValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
index a2e9740..b5efbca 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = AttrValueValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
index 6f3af39..172d44e 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target({ElementType.TYPE})
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = ConnInstanceValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
index 74c6984..59be7fb 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = ExternalResourceValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
index 844be3b..8c10eb8 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = NotificationValidator.class)
 @Documented
@@ -38,4 +38,4 @@ public @interface NotificationCheck {
     Class<?>[] groups() default {};
 
     Class<? extends Payload>[] payload() default {};
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
index 7d722b8..ef55fb1 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = PolicyValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
index 8896bc8..ac0a0de 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = PropagationTaskValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
index 1e32c14..9f00b67 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = ReportValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
index bcade2f..76f012a 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SchedTaskValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
index e6e1be5..e092ec9 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SchemaValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
index 5ae70e1..65def91 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SchemaNameValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
index 5586238..ae7e282 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target({ElementType.TYPE})
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SyncopeRoleValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
index 028ae4d..5a709b7 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
@@ -27,8 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SyncopeUserValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java b/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
index e378794..abf7b1d 100644
--- a/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
+++ b/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
@@ -52,7 +52,7 @@ public class PolicyEvaluator {
                 final PasswordPolicySpec ppSpec = policy.getSpecification(PasswordPolicySpec.class);
                 final PasswordPolicySpec evaluatedPPSpec = new PasswordPolicySpec();
 
-                BeanUtils.copyProperties(ppSpec, evaluatedPPSpec, new String[]{"schemasNotPermitted"});
+                BeanUtils.copyProperties(ppSpec, evaluatedPPSpec, new String[] { "schemasNotPermitted" });
 
                 for (String schema : ppSpec.getSchemasNotPermitted()) {
                     AbstractAttr attribute = attributable.getAttr(schema);
@@ -65,7 +65,6 @@ public class PolicyEvaluator {
                 }
 
                 // Password history verification and update
-
                 if (!(attributable instanceof SyncopeUser)) {
                     LOG.error("Cannot check previous passwords. attributable is not a user object: {}",
                             attributable.getClass().getName());
@@ -83,7 +82,7 @@ public class PolicyEvaluator {
                 final AccountPolicySpec spec = policy.getSpecification(AccountPolicySpec.class);
                 final AccountPolicySpec accountPolicy = new AccountPolicySpec();
 
-                BeanUtils.copyProperties(spec, accountPolicy, new String[]{"schemasNotPermitted"});
+                BeanUtils.copyProperties(spec, accountPolicy, new String[] { "schemasNotPermitted" });
 
                 for (String schema : spec.getSchemasNotPermitted()) {
                     AbstractAttr attribute = attributable.getAttr(schema);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java b/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
index 30065c4..e1e0890 100644
--- a/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
+++ b/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
@@ -43,4 +43,5 @@ public class PolicyPattern {
     public static final Pattern FIRST_NON_ALPHANUMERIC = Pattern.compile("\\W.*");
 
     public static final Pattern LAST_NON_ALPHANUMERIC = Pattern.compile(".*\\W");
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java b/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
index 0ff432d..e8c985d 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
@@ -44,7 +44,7 @@ public interface PropagationReporter {
 
     /**
      * Report propagation status after executions in case blocking failure (e.g. on primary resources).
-     * 
+     *
      * @param tasks propagation tasks performed before failure
      */
     void onPrimaryResourceFailure(List<PropagationTask> tasks);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java b/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
index 7157907..9ccb146 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
@@ -46,7 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
  * cipher algorithm property of the DB Connector.
  */
 public class DBPasswordPropagationActions extends DefaultPropagationActions {
-    
+
     private static final String CLEARTEXT = "CLEARTEXT";
 
     @Autowired
@@ -59,12 +59,12 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
 
         if (AttributableType.USER == task.getSubjectType()) {
             SyncopeUser user = userDAO.find(task.getSubjectId());
-            
+
             if (user != null && user.getPassword() != null) {
                 Attribute missing = AttributeUtil.find(
                         PropagationTaskExecutor.MANDATORY_MISSING_ATTR_NAME,
                         task.getAttributes());
-                
+
                 ConnInstance connInstance = task.getResource().getConnector();
                 if (missing != null && missing.getValue() != null && missing.getValue().size() == 1
                         && missing.getValue().get(0).equals(OperationalAttributes.PASSWORD_NAME)
@@ -86,7 +86,7 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
             }
         }
     }
-    
+
     private String getCipherAlgorithm(ConnInstance connInstance) {
         String cipherAlgorithm = CLEARTEXT;
         for (Iterator<ConnConfProperty> propertyIterator = connInstance.getConfiguration().iterator();
@@ -101,21 +101,21 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
         }
         return cipherAlgorithm;
     }
-    
+
     private boolean cipherAlgorithmMatches(String connectorAlgorithm, CipherAlgorithm userAlgorithm) {
         if (userAlgorithm == null) {
             return false;
         }
-    
+
         if (connectorAlgorithm.equals(userAlgorithm.name())) {
             return true;
         }
-        
+
         // Special check for "SHA" (user sync'd from LDAP)
         if ("SHA1".equals(connectorAlgorithm) && "SHA".equals(userAlgorithm.name())) {
             return true;
         }
-        
+
         return false;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java b/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
index b6734f7..8fd4f18 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
@@ -75,7 +75,7 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
                     null,
                     result,
                     reporter instanceof DefaultPropagationReporter
-                    ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
+                            ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
                     tasks);
 
             auditManager.audit(
@@ -85,7 +85,7 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
                     null,
                     result,
                     reporter instanceof DefaultPropagationReporter
-                    ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
+                            ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
                     tasks);
         }
     }
@@ -112,8 +112,8 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
             return prop1 > prop2
                     ? 1
                     : prop1 == prop2
-                    ? 0
-                    : -1;
+                            ? 0
+                            : -1;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java b/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
index fcd7110..169c4e8 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
@@ -388,8 +388,8 @@ public class PropagationManager {
         PropagationByResource localPropByRes = binder.fillVirtual(subject, vAttrsToBeRemoved == null
                 ? Collections.<String>emptySet()
                 : vAttrsToBeRemoved, vAttrsToBeUpdated == null
-                ? Collections.<AttributeMod>emptySet()
-                : vAttrsToBeUpdated, AttributableUtil.getInstance(subject));
+                        ? Collections.<AttributeMod>emptySet()
+                        : vAttrsToBeUpdated, AttributableUtil.getInstance(subject));
 
         // SYNCOPE-458 fill membership virtual attributes
         if (subject instanceof SyncopeUser) {
@@ -402,8 +402,8 @@ public class PropagationManager {
                                 ? Collections.<String>emptySet()
                                 : membershipMod.getVirAttrsToRemove(),
                                 membershipMod.getVirAttrsToUpdate() == null ? Collections.<AttributeMod>emptySet()
-                                : membershipMod.getVirAttrsToUpdate(), AttributableUtil.getInstance(
-                                AttributableType.MEMBERSHIP));
+                                        : membershipMod.getVirAttrsToUpdate(), AttributableUtil.getInstance(
+                                        AttributableType.MEMBERSHIP));
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/package-info.java b/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
index 7331a06..92d1db5 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.propagation;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
index f376641..5986b8e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning;
 
 import java.util.AbstractMap;
@@ -48,20 +47,25 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.apache.commons.lang3.StringUtils;
 
-public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
+public class DefaultRoleProvisioningManager implements RoleProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleProvisioningManager.class);
+
     @Autowired
     protected RoleWorkflowAdapter rwfAdapter;
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
-    protected PropagationTaskExecutor taskExecutor;    
+    protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected RoleDAO roleDAO;
+
     @Autowired
     protected RoleDataBinder binder;
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject) {
         return create(subject, Collections.<String>emptySet());
@@ -69,7 +73,7 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
 
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject, Set<String> excludedResources) {
-        
+
         WorkflowResult<Long> created = rwfAdapter.create(subject);
 
         EntitlementUtil.extendAuthContext(created.getResult());
@@ -86,15 +90,16 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
 
         final RoleTO savedTO = binder.getRoleTO(created.getResult());
         savedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), propagationReporter.getStatuses());
         return result;
     }
-    
+
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,Set<String> excludedResources) throws PropagationException{
-        
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,
+            Set<String> excludedResources) throws PropagationException {
+
         WorkflowResult<Long> created = rwfAdapter.create((RoleTO) roleTO);
         AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
         if (roleOwner != null) {
@@ -107,21 +112,21 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
                 roleTO.getVirAttrs(), excludedResources);
 
         taskExecutor.execute(tasks);
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), null);
         return result;
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod) {
-        
+
         return update(subjectMod, Collections.<String>emptySet());
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
-                
+
         WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
 
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
@@ -135,7 +140,6 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
 
-        
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult(), propagationReporter.getStatuses());
         return result;
@@ -179,13 +183,12 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
 
-        try{
+        try {
             rwfAdapter.delete(subjectId);
+        } catch (RuntimeException e) {
+            throw e;
         }
-        catch(RuntimeException e){
-            throw  e;
-        }
-        
+
         return propagationReporter.getStatuses();
     }
 
@@ -194,15 +197,16 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
         WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
         return updated.getResult();
     }
-    
+
     @Override
-    public List<PropagationStatus> deprovision(final Long roleId, final Collection<String> resources){
+    public List<PropagationStatus> deprovision(final Long roleId, final Collection<String> resources) {
         final SyncopeRole role = binder.getRoleFromId(roleId);
-        
+
         final Set<String> noPropResourceName = role.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
-        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
+
+        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(
+                resources), noPropResourceName);
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -218,5 +222,5 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
     public Long link(RoleMod subjectMod) {
         return rwfAdapter.update(subjectMod).getResult();
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
index 070c6aa..ff0544f 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -47,7 +47,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-public class DefaultUserProvisioningManager implements UserProvisioningManager{
+public class DefaultUserProvisioningManager implements UserProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserProvisioningManager.class);
 
@@ -59,47 +59,48 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Autowired
-    protected UserDataBinder binder;    
+    protected UserDataBinder binder;
 
     @Autowired
-    protected UserDAO userDAO;   
+    protected UserDAO userDAO;
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO){
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO) {
         return create(userTO, true, false, null, Collections.<String>emptySet());
     }
-    
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
-        /*WorkflowResult<Map.Entry<Long, Boolean>> created;
-        try {
-            created = uwfAdapter.create(userTO,storePassword);
-        } catch (RuntimeException e) {
-            throw e;
-        }
-
-        List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
-                created, userTO.getPassword(), userTO.getVirAttrs(), userTO.getMemberships());
 
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
-
-        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
-                created.getResult().getKey(), propagationReporter.getStatuses());
-        return result;*/
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
+        /* WorkflowResult<Map.Entry<Long, Boolean>> created;
+         * try {
+         * created = uwfAdapter.create(userTO,storePassword);
+         * } catch (RuntimeException e) {
+         * throw e;
+         * }
+         *
+         * List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
+         * created, userTO.getPassword(), userTO.getVirAttrs(), userTO.getMemberships());
+         *
+         * PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+         * getBean(PropagationReporter.class);
+         * try {
+         * taskExecutor.execute(tasks, propagationReporter);
+         * } catch (PropagationException e) {
+         * LOG.error("Error propagation primary resource", e);
+         * propagationReporter.onPrimaryResourceFailure(tasks);
+         * }
+         *
+         * Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+         * created.getResult().getKey(), propagationReporter.getStatuses());
+         * return result; */
         return create(userTO, storePassword, false, null, Collections.<String>emptySet());
     }
-    
+
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
-                WorkflowResult<Map.Entry<Long, Boolean>> created;
+    public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword,
+            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
+        WorkflowResult<Map.Entry<Long, Boolean>> created;
         try {
             created = uwfAdapter.create(userTO, disablePwdPolicyCheck, enabled, storePassword);
         } catch (RuntimeException e) {
@@ -126,7 +127,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
     public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod) {
         return update(userMod, false);
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
@@ -174,9 +175,9 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult().getKey().getId(), propagationReporter.getStatuses());
-        return result;    
+        return result;
     }
-       
+
     @Override
     public List<PropagationStatus> delete(final Long userId) {
 
@@ -185,7 +186,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Override
     public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources) {
-        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(subjectId,excludedResources);
+        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(subjectId, excludedResources);
 
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
@@ -205,7 +206,6 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         return propagationReporter.getStatuses();
     }
 
-    
     @Override
     public Long unlink(UserMod userMod) {
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(userMod);
@@ -216,7 +216,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
     public Long link(UserMod subjectMod) {
         return uwfAdapter.update(subjectMod).getResult().getKey().getId();
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod) {
         WorkflowResult<Long> updated;
@@ -225,7 +225,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } else {
             updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
         }
-  
+
         List<PropagationStatus> statuses = propagateStatus(user, statusMod);
         return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
     }
@@ -238,7 +238,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } else {
             updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
         }
-        
+
         List<PropagationStatus> statuses = propagateStatus(user, statusMod);
         return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
     }
@@ -251,13 +251,13 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } else {
             updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
         }
-        
+
         List<PropagationStatus> statuses = propagateStatus(user, statusMod);
         return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
     }
-    
-    public List<PropagationStatus> propagateStatus(SyncopeUser user, StatusMod statusMod){
-                
+
+    public List<PropagationStatus> propagateStatus(SyncopeUser user, StatusMod statusMod) {
+
         Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
         resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
 
@@ -271,19 +271,19 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         return propReporter.getStatuses();
-        
+
     }
 
     @Override
     public List<PropagationStatus> deprovision(Long userId, Collection<String> resources) {
-        
-        final SyncopeUser user = binder.getUserFromId(userId);        
-        
+
+        final SyncopeUser user = binder.getUserFromId(userId);
+
         final Set<String> noPropResourceName = user.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
+
         final List<PropagationTask> tasks =
                 propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
         final PropagationReporter propagationReporter =
@@ -294,14 +294,14 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         return propagationReporter.getStatuses();
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, 
-                                               final SyncResult result, Boolean enabled, Set<String> excludedResources){
-        
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod, final Long id,
+            final SyncResult result, Boolean enabled, Set<String> excludedResources) {
+
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
         try {
             updated = uwfAdapter.update(userMod);
@@ -337,40 +337,41 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             }
         }
 
-            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                    getBean(PropagationReporter.class);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
 
-            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResources);
-               
-            try {
-                    taskExecutor.execute(tasks, propagationReporter);
-            } catch (PropagationException e) {
-                    LOG.error("Error propagation primary resource", e);
-                    propagationReporter.onPrimaryResourceFailure(tasks);
-            }
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated, updated.getResult().getKey().
+                getPassword() != null, excludedResources);
 
-            
-            return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(),
+                propagationReporter.getStatuses());
 
     }
 
     @Override
     public void innerSuspend(SyncopeUser user, boolean suspend) {
-        
-            final WorkflowResult<Long> updated = uwfAdapter.suspend(user);
 
-            // propagate suspension if and only if it is required by policy
-            if (suspend) {
-                UserMod userMod = new UserMod();
-                userMod.setId(updated.getResult());
+        final WorkflowResult<Long> updated = uwfAdapter.suspend(user);
+
+        // propagate suspension if and only if it is required by policy
+        if (suspend) {
+            UserMod userMod = new UserMod();
+            userMod.setId(updated.getResult());
 
-                final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
-                        new WorkflowResult<Map.Entry<UserMod, Boolean>>(
-                                new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
-                                updated.getPropByRes(), updated.getPerformedTasks()));
+            final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+                    new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+                            new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
+                            updated.getPropByRes(), updated.getPerformedTasks()));
 
-                taskExecutor.execute(tasks);
-            }            
+            taskExecutor.execute(tasks);
+        }
     }
 
     @Override
@@ -380,7 +381,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Override
     public void confirmPasswordReset(SyncopeUser user, String token, String password) {
-            
+
         uwfAdapter.confirmPasswordReset(user.getId(), token, password);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
@@ -391,6 +392,6 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } catch (PropagationException e) {
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
-        }    
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
index adc1cb0..65f7f7d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.mod.AbstractAttributableMod;
 import org.apache.syncope.common.to.AbstractAttributableTO;
 import org.apache.syncope.common.to.PropagationStatus;
 
-public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
+public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod> {
 
     public Map.Entry<Long, List<PropagationStatus>> create(T subject);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
index 594bf5e..53029ac 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.syncope.core.provisioning;
 
 import java.util.List;
@@ -24,12 +23,13 @@ import org.apache.syncope.common.mod.RoleMod;
 import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.core.propagation.PropagationException;
 
-public interface RoleProvisioningManager extends ProvisioningManager<RoleTO, RoleMod>{
-    
+public interface RoleProvisioningManager extends ProvisioningManager<RoleTO, RoleMod> {
+
     public Map.Entry<Long, List<PropagationStatus>> create(final RoleTO roleTO, Set<String> excludedResources);
-    
-    public Map.Entry<Long, List<PropagationStatus>> createInSync(final RoleTO roleTO, Map<Long, String> roleOwnerMap,Set<String> excludedResources) throws PropagationException;
-    
+
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(final RoleTO roleTO, Map<Long, String> roleOwnerMap,
+            Set<String> excludedResources) throws PropagationException;
+
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources);
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
index 32a4d18..c5b70a8 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.syncope.core.provisioning;
 
 import java.util.List;
@@ -27,28 +26,30 @@ import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
 import org.apache.syncope.core.sync.SyncResult;
 
-public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserMod>{
-    
+public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserMod> {
+
     public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod);
 
     public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod);
 
     public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod);
-    
+
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword);
-    
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled,Set<String> excludedResources);
-    
+
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword,
+            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources);
+
     public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod, final boolean removeMemberships);
-    
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, final SyncResult result, Boolean enabled, Set<String> excludedResources);
 
-    public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources);    
-    
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod, final Long id,
+            final SyncResult result, Boolean enabled, Set<String> excludedResources);
+
+    public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources);
+
     public void innerSuspend(SyncopeUser user, boolean suspend);
-    
+
     public void requestPasswordReset(final Long id);
-    
-    public void confirmPasswordReset(SyncopeUser user,final String token,final String password);
-    
+
+    public void confirmPasswordReset(SyncopeUser user, final String token, final String password);
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
index 4857d2f..33856a9 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel;
 
 import java.io.ByteArrayInputStream;
@@ -65,7 +64,7 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-public class CamelRoleProvisioningManager implements RoleProvisioningManager{
+public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelRoleProvisioningManager.class);
 
@@ -76,7 +75,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
     protected Map<String, PollingConsumer> consumerMap;
 
     protected List<String> knownUri;
-    
+
     @Autowired
     protected RouteDAO routeDAO;
 
@@ -99,7 +98,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
     public CamelContext getContext() {
         //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
         //return context.getBean("camel-context", DefaultCamelContext.class);        
-        return contextFactory.getContext(routeDAO);  
+        return contextFactory.getContext(routeDAO);
     }
 
     public void changeRoute(String routePath) {
@@ -125,12 +124,12 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
 
     protected void sendMessage(String uri, Object obj, Map<String, Object> properties) {
         Exchange exc = new DefaultExchange(getContext());
-        
+
         Iterator<Map.Entry<String, Object>> it = properties.entrySet().iterator();
         while (it.hasNext()) {
             Map.Entry<String, Object> property = it.next();
             exc.setProperty(property.getKey(), property.getValue());
-            LOG.info("Added property {}", property.getKey());            
+            LOG.info("Added property {}", property.getKey());
         }
 
         DefaultMessage m = new DefaultMessage();
@@ -158,22 +157,22 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
             return consumerMap.get(uri);
         }
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject) {
-        
-        return create(subject, Collections.<String>emptySet());        
+
+        return create(subject, Collections.<String>emptySet());
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO roleTO, Set<String> excludedResources) {
-        
+
         String uri = "direct:createRolePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("excludedResources", excludedResources);
-        
+
         sendMessage("direct:createRole", roleTO, props);
 
         Exchange o = pollingConsumer.receive();
@@ -184,44 +183,45 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
 
         return o.getIn().getBody(Map.Entry.class);
     }
-    
+
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap, Set<String> excludedResources) throws PropagationException {
-        
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,
+            Set<String> excludedResources) throws PropagationException {
+
         String uri = "direct:createRoleSyncPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map<String, Object> props = new HashMap<String, Object>();        
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("roleOwnerMap", roleOwnerMap);
         props.put("excludedResources", excludedResources);
-           
+
         sendMessage("direct:createRoleSync", roleTO, props);
 
         Exchange o = pollingConsumer.receive();
 
-        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {            
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
-        
+
         return o.getIn().getBody(Map.Entry.class);
     }
 
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod) {
-                
+
         return update(subjectMod, Collections.<String>emptySet());
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
 
         String uri = "direct:updateRolePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("excludedResources", excludedResources);
 
-        sendMessage("direct:updateRole",subjectMod, props);
+        sendMessage("direct:updateRole", subjectMod, props);
 
         Exchange o = pollingConsumer.receive();
 
@@ -229,12 +229,12 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
 
-        return o.getIn().getBody(Map.Entry.class);        
+        return o.getIn().getBody(Map.Entry.class);
     }
 
     @Override
     public List<PropagationStatus> delete(Long subjectId) {
-        
+
         String uri = "direct:deleteRolePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
@@ -267,9 +267,9 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
 
     @Override
     public Long link(RoleMod subjectMod) {
-        
+
         String uri = "direct:linkRolePort";
-        
+
         PollingConsumer pollingConsumer = getConsumer(uri);
 
         sendMessage("direct:linkRole", subjectMod);
@@ -280,28 +280,28 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
 
-        return o.getIn().getBody(Long.class);  
+        return o.getIn().getBody(Long.class);
     }
 
     @Override
     public List<PropagationStatus> deprovision(final Long roleId, Collection<String> resources) {
-                
+
         String uri = "direct:deprovisionRolePort";
-        
+
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map props = new HashMap<String, Object>();
         props.put("resources", resources);
 
         sendMessage("direct:deprovisionRole", roleId, props);
-        
+
         Exchange o = pollingConsumer.receive();
 
         if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
-        
+
         return o.getIn().getBody(List.class);
     }
-   
+
 }


[34/53] [abbrv] syncope git commit: Fixes #4 - Route functionalities are displayed only with Camel PM

Posted by il...@apache.org.
Fixes #4 - Route functionalities are displayed only with Camel PM


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

Branch: refs/heads/master
Commit: b19ff8512f082d7d74ff40b0a53f6380d0905771
Parents: d8ec8da
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 30 16:47:31 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 30 16:47:31 2014 +0100

----------------------------------------------------------------------
 .../apache/syncope/client/SyncopeClient.java    | 26 +++++++
 .../syncope/common/services/RouteService.java   | 44 ++++++++---
 .../syncope/common/types/RESTHeaders.java       | 11 +++
 .../apache/syncope/console/SyncopeSession.java  |  7 ++
 .../syncope/console/pages/Configuration.java    | 15 +++-
 .../syncope/console/rest/RouteRestClient.java   | 22 +++++-
 .../syncope/console/pages/Configuration.html    |  2 +-
 .../core/provisioning/camel/CamelDetector.java  | 77 ++++++++++++++++++++
 .../syncope/core/services/RouteServiceImpl.java | 31 +++++++-
 core/src/main/resources/provisioning.properties |  4 +-
 10 files changed, 218 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/syncope/client/SyncopeClient.java b/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
index a471d54..f955951 100644
--- a/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
+++ b/client/src/main/java/org/apache/syncope/client/SyncopeClient.java
@@ -26,6 +26,7 @@ import org.apache.syncope.client.rest.RestClientFactoryBean;
 import org.apache.syncope.common.search.OrderByClauseBuilder;
 import org.apache.syncope.common.search.RoleFiqlSearchConditionBuilder;
 import org.apache.syncope.common.search.UserFiqlSearchConditionBuilder;
+import org.apache.syncope.common.services.RouteService;
 import org.apache.syncope.common.services.UserSelfService;
 import org.apache.syncope.common.services.WorkflowService;
 import org.apache.syncope.common.types.Preference;
@@ -265,6 +266,31 @@ public class SyncopeClient {
 
         return result;
     }
+    
+    /**
+     * Checks whether Camel is enabled for users / roles, by calling <tt>RouteService</tt>'s options.
+     *
+     * @param subjectType user / role
+     * @return whether Camel Provisioning is enabled for given attributable type
+     * @see RouteService#getOptions(org.apache.syncope.common.types.SubjectType)
+     */
+    public boolean isCamelEnabledFor(final SubjectType subjectType) {
+        Response options = getService(RouteService.class).getOptions(subjectType);
+
+        boolean result;
+        switch (subjectType) {
+            case ROLE:
+                result = Boolean.valueOf(options.getHeaderString(RESTHeaders.CAMEL_ROLE_PROVISIONING_MANAGER));
+                break;
+
+            case USER:
+            default:
+                result = Boolean.valueOf(options.getHeaderString(RESTHeaders.CAMEL_USER_PROVISIONING_MANAGER));
+                break;
+        }
+
+        return result;
+    }
 
     /**
      * Fetches <tt>ETag</tt> header value from latest service run (if available).

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/common/src/main/java/org/apache/syncope/common/services/RouteService.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/services/RouteService.java b/common/src/main/java/org/apache/syncope/common/services/RouteService.java
index feb7db7..6e3090f 100644
--- a/common/src/main/java/org/apache/syncope/common/services/RouteService.java
+++ b/common/src/main/java/org/apache/syncope/common/services/RouteService.java
@@ -16,34 +16,56 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.common.services;
 
 import java.util.List;
+import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
+import javax.ws.rs.OPTIONS;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.apache.cxf.jaxrs.model.wadl.Description;
+import org.apache.cxf.jaxrs.model.wadl.Descriptions;
+import org.apache.cxf.jaxrs.model.wadl.DocTarget;
 import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.types.SubjectType;
+
+@Path("routes/{kind}")
+public interface RouteService extends JAXRSService {
+
+    /**
+     * Checks whether Camel is choosed as default provisioning engine.
+     *
+     * @param kind user or role
+     * @return <tt>Response</tt> contains special syncope HTTP header indicating if Camel is enabled for
+     * users / roles provisioning
+     * @see org.apache.syncope.common.types.RESTHeaders#CAMEL_USER_PROVISIONING_MANAGER
+     * @see org.apache.syncope.common.types.RESTHeaders#CAMEL_ROLE_PROVISIONING_MANAGER
+     *
+     * @Descriptions({
+     * @Description(target = DocTarget.RESPONSE,
+     * value = "Contains special syncope HTTP header indicating if Camel is the default provisioning manager")
+     * }) */
+    @OPTIONS
+    Response getOptions(@NotNull @PathParam("kind") SubjectType kind);
 
-@Path("routes")
-public interface RouteService extends JAXRSService{
-    
     @GET
     @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<RouteTO> getRoutes();
-    
+    List<RouteTO> getRoutes(@NotNull @PathParam("kind") SubjectType kind);
+
     @GET
     @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
     @Path("{id}")
-    public RouteTO getRoute(@PathParam("id") Long Id);
-    
+    public RouteTO getRoute(@NotNull @PathParam("kind") SubjectType kind, @PathParam("id") Long Id);
+
     @PUT
     @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
     @Path("{id}")
-    void importRoute(@PathParam("id") Long id, RouteTO route);
-    
-}
\ No newline at end of file
+    void importRoute(@NotNull @PathParam("kind") SubjectType kind,@PathParam("id") Long id, RouteTO route);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java b/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
index ddbfca2..3e7cdc3 100644
--- a/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
+++ b/common/src/main/java/org/apache/syncope/common/types/RESTHeaders.java
@@ -57,6 +57,17 @@ public final class RESTHeaders {
      * Option key stating if Activiti workflow adapter is in use for roles.
      */
     public static final String ACTIVITI_ROLE_ENABLED = "Syncope.Activiti.Role.Enabled";
+    
+     /**
+     * Option key stating if Camel is the current provisioning manager engine.
+     */
+    public static final String CAMEL_USER_PROVISIONING_MANAGER ="Syncope.Provisioning.Camel.User.Enabled";
+    
+    /**
+     * Option key stating if Camel is the current provisioning manager engine.
+     */
+    public static final String CAMEL_ROLE_PROVISIONING_MANAGER ="Syncope.Provisioning.Camel.Role.Enabled";
+
 
     /**
      * HTTP header key for object ID assigned to an object after its creation.

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/SyncopeSession.java b/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
index ae81852..53b03c0 100644
--- a/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
+++ b/console/src/main/java/org/apache/syncope/console/SyncopeSession.java
@@ -114,6 +114,13 @@ public class SyncopeSession extends WebSession {
                 : clients.values().iterator().next();
         return client.isActivitiEnabledFor(type);
     }
+    
+    public boolean isCamelEnabledFor(final SubjectType type) {
+        SyncopeClient client = clients.isEmpty()
+                ? clientFactory.createAnonymous()
+                : clients.values().iterator().next();
+        return client.isCamelEnabledFor(type);
+    }
 
     public <T> T getService(final Class<T> service) {
         return getService(service, this.username, this.password);

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java b/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
index 10dcfc7..05316dd 100644
--- a/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
+++ b/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
@@ -52,6 +52,7 @@ import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.ta
 import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
 import org.apache.syncope.console.wicket.markup.html.link.VeilPopupSettings;
+import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
@@ -278,7 +279,8 @@ public class Configuration extends BasePage {
         add(new LayoutsPanel("selfMembershipLayoutPanel", AttrLayoutType.SELF_MEMBERSHIP, feedbackPanel));
         
         //Route Management
-        add(editRouteWin = new ModalWindow("editRouteWin"));
+        editRouteWin = new ModalWindow("editRouteWin");
+        add(editRouteWin);
         setupRoutes();
     }
 
@@ -828,7 +830,18 @@ public class Configuration extends BasePage {
         WebMarkupContainer routeContainer = new WebMarkupContainer("routesContainer");
         routeContainer.add(routeTable);
         routeContainer.setOutputMarkupId(true);
+        
+        ListItem<Object> li = new ListItem<Object>("routeTab", 0);
+        if (routeRestClient.isCamelEnabledForUsers() == false) {
+            li.setVisible(false);
+            routeContainer.setVisible(false);   
+        }
+        else{
+            li.setVisible(true);
+            routeContainer.setVisible(true); 
+        }
 
+        add(li);
         add(routeContainer);
 
         editRouteWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java b/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
index 673652a..dcfb8c3 100644
--- a/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
+++ b/console/src/main/java/org/apache/syncope/console/rest/RouteRestClient.java
@@ -19,8 +19,11 @@
 package org.apache.syncope.console.rest;
 
 import java.util.List;
+import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.common.services.RouteService;
 import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.types.SubjectType;
+import org.apache.syncope.console.SyncopeSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -31,17 +34,30 @@ public class RouteRestClient extends BaseRestClient{
     protected static final Logger LOG = LoggerFactory.getLogger(RouteRestClient.class);
     
     public List<RouteTO> readRoutes(){
-        return getService(RouteService.class).getRoutes();
+        return getService(RouteService.class).getRoutes(SubjectType.USER);
     }
     
     public RouteTO readRoute(Long id){
-        return getService(RouteService.class).getRoute(id);
+        return getService(RouteService.class).getRoute(SubjectType.USER, id);
     }
     
     public void updateRoute(Long id, String definition){
         RouteTO routeTO = readRoute(id);        
         routeTO.setRouteContent(definition);     
-        getService(RouteService.class).importRoute(routeTO.getId(), routeTO);
+        getService(RouteService.class).importRoute(SubjectType.USER, routeTO.getId(), routeTO);
+    }
+    
+    public boolean isCamelEnabledForUsers() {
+        Boolean result = null;
+        try {
+            result = SyncopeSession.get().isCamelEnabledFor(SubjectType.USER);
+        } catch (SyncopeClientException e) {
+            LOG.error("While seeking if Camel is enabled for users", e);
+        }
+
+        return result == null
+                ? false
+                : result.booleanValue();
     }
     
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
index 62f97a8..130c89a 100644
--- a/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
+++ b/console/src/main/resources/org/apache/syncope/console/pages/Configuration.html
@@ -38,7 +38,7 @@ under the License.
                 <li><a href="#notifications"><span><wicket:message key="notifications"/></span></a></li>
                 <li><a href="#securityQuestions"><span><wicket:message key="securityQuestions"/></span></a></li>
                 <li><a href="#workflow"><span><wicket:message key="workflow"/></span></a></li>
-                <li><a href="#routes"><span><wicket:message key="routes"/></span></a></li>
+                <li wicket:id="routeTab"><a href="#routes"><span><wicket:message key="routes"/></span></a></li>
                 <li><a href="#logs"><span><wicket:message key="logs"/></span></a></li>
             </ul>
             <div id="layouts">

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java
new file mode 100644
index 0000000..646c350
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelDetector.java
@@ -0,0 +1,77 @@
+/*
+ * 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.camel;
+
+import java.io.InputStream;
+import java.util.Properties;
+import org.apache.commons.io.IOUtils;
+import org.apache.syncope.core.persistence.dao.impl.ContentLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author giacomolm
+ */
+public class CamelDetector {
+    
+    private static final Logger LOG = LoggerFactory.getLogger(CamelDetector.class);
+
+    private static final String PROVISIONING_PROPERTIES = "/provisioning.properties";
+     
+    private static String userPMClassName;
+
+    private static String rolePMClassName;
+    
+     /**
+     * Read classpath:/provisioning.properties in order to determine the configured provisioning adapter class name.
+     */
+    static {
+        Properties props = new Properties();
+        InputStream propStream = null;
+        try {
+            propStream = ContentLoader.class.getResourceAsStream(PROVISIONING_PROPERTIES);
+            props.load(propStream);
+            userPMClassName = props.getProperty("userProvisioningManager");
+            rolePMClassName = props.getProperty("roleProvisioningManager");
+        } catch (Exception e) {
+            LOG.error("Could not load workflow.properties", e);
+        } finally {
+            IOUtils.closeQuietly(propStream);
+        }
+    }
+    
+    /**
+     * Check if the configured user provisioning manager is Camel's.
+     *
+     * @return whether Activiti is configured for user workflow or not
+     */
+    public static boolean isCamelEnabledForUsers() {
+        return userPMClassName != null && userPMClassName.equals(CamelUserProvisioningManager.class.getName());
+    }
+
+    /**
+     * Check if the configured role provisioning manager is Camel's.
+     *
+     * @return whether Activiti is configured for role workflow or not
+     */
+    public static boolean isCamelEnabledForRoles() {
+        return rolePMClassName != null && rolePMClassName.equals(CamelRoleProvisioningManager.class.getName());
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
index ecc323e..29359f8 100644
--- a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
@@ -18,33 +18,58 @@
  */
 package org.apache.syncope.core.services;
 
+import static org.apache.syncope.core.services.AbstractServiceImpl.OPTIONS_ALLOW;
+
 import java.util.List;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
 import org.apache.syncope.common.services.RouteService;
 import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.types.RESTHeaders;
+import org.apache.syncope.common.types.SubjectType;
+import org.apache.syncope.core.provisioning.camel.CamelDetector;
 import org.apache.syncope.core.rest.controller.RouteController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class RouteServiceImpl extends AbstractServiceImpl implements RouteService {
+    
+    @Override
+    public Response getOptions(final SubjectType kind) {
+        String key;
+        String value;
+        if (kind == SubjectType.USER) {
+            key = RESTHeaders.CAMEL_USER_PROVISIONING_MANAGER;
+            value = Boolean.toString(CamelDetector.isCamelEnabledForUsers());
+        } else {
+            key = RESTHeaders.CAMEL_ROLE_PROVISIONING_MANAGER;
+            value = Boolean.toString(CamelDetector.isCamelEnabledForRoles());
+        }
+        Response.ResponseBuilder builder = Response.ok().header(HttpHeaders.ALLOW, OPTIONS_ALLOW);
+        if (key != null && value != null) {
+            builder.header(key, value);
+        }
+        return builder.build();
+    }
 
     @Autowired
     private RouteController controller;
 
     @Override
-    public List<RouteTO> getRoutes() {
+    public List<RouteTO> getRoutes(SubjectType kind) {
 
         return controller.listRoutes();
     }
 
     @Override
-    public RouteTO getRoute(Long id) {
+    public RouteTO getRoute(SubjectType kind, Long id) {
 
         return controller.readRoute(id);
     }
 
     @Override
-    public void importRoute(Long id, RouteTO route) {
+    public void importRoute(SubjectType kind,Long id, RouteTO route) {
         controller.updateRoute(route);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/b19ff851/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
index a8e49bf..de6c3cd 100644
--- a/core/src/main/resources/provisioning.properties
+++ b/core/src/main/resources/provisioning.properties
@@ -15,5 +15,5 @@
 # specific language governing permissions and limitations
 # under the License.
 
-userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
-roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file
+userProvisioningManager=org.apache.syncope.core.provisioning.DefaultUserProvisioningManager
+roleProvisioningManager=org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager
\ No newline at end of file


[32/53] [abbrv] syncope git commit: Merge remote-tracking branch 'upstream/master'

Posted by il...@apache.org.
Merge remote-tracking branch 'upstream/master'


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

Branch: refs/heads/master
Commit: d8ec8da83e0f807e89e830540e756470aa231e51
Parents: dff89c0 08893dc
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 30 16:44:05 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 30 16:44:05 2014 +0100

----------------------------------------------------------------------
 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/d8ec8da8/pom.xml
----------------------------------------------------------------------


[44/53] [abbrv] syncope git commit: Merge branch 'master' into 2_0_X

Posted by il...@apache.org.
Merge branch 'master' into 2_0_X


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

Branch: refs/heads/2_0_X
Commit: ed49626ca17747a97f72bfa2130ee1c3eeb60767
Parents: 3596642 1d58c50
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 11:16:48 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 11:16:48 2015 +0100

----------------------------------------------------------------------
 .../syncope/installer/utilities/FileSystemUtils.java      | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
----------------------------------------------------------------------



[48/53] [abbrv] syncope git commit: Merge upstream/master

Posted by il...@apache.org.
Merge upstream/master


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

Branch: refs/heads/master
Commit: d388f2464d145bd780bb8b2de76b63c52e459c62
Parents: ec34515 1d58c50
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Jan 5 11:58:26 2015 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Jan 5 11:58:26 2015 +0100

----------------------------------------------------------------------
 .../syncope/installer/utilities/FileSystemUtils.java | 10 +---------
 pom.xml                                              | 15 +++++++++++++--
 src/site/site.xml                                    |  3 ---
 3 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/d388f246/pom.xml
----------------------------------------------------------------------
diff --cc pom.xml
index 641e123,9891ca9..1fe0129
--- a/pom.xml
+++ b/pom.xml
@@@ -323,10 -335,9 +334,10 @@@ under the License
      <activiti.version>5.16.4</activiti.version>
  
      <aspectj.version>1.8.4</aspectj.version>
--
 -    <cxf.version>3.0.3</cxf.version>	
++    
 +    <cxf.version>3.0.3</cxf.version>
 +    <camel.version>2.14.1</camel.version>	
-     <spring.version>4.0.8.RELEASE</spring.version>
+     <spring.version>4.0.9.RELEASE</spring.version>
      <spring-security.version>3.2.5.RELEASE</spring-security.version>
      <jackson.version>2.4.4</jackson.version>
      <velocity.version>1.7</velocity.version>


[36/53] [abbrv] syncope git commit: Fixing deprecation errors during compilation

Posted by il...@apache.org.
Fixing deprecation errors  during compilation


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

Branch: refs/heads/master
Commit: ac4d6af48f8c08167db7051d69c011f650b48555
Parents: b19ff85
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 30 18:25:12 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 30 18:25:12 2014 +0100

----------------------------------------------------------------------
 .../core/provisioning/camel/CamelRoleProvisioningManager.java  | 4 ++--
 .../core/provisioning/camel/CamelUserProvisioningManager.java  | 5 +++--
 .../syncope/core/provisioning/camel/SyncopeCamelContext.java   | 6 +++---
 .../camel/processors/DefaultUserUpdatePropagation.java         | 2 --
 4 files changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
index 33856a9..9b121a4 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -68,7 +68,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelRoleProvisioningManager.class);
 
-    private DefaultCamelContext camelContext;
+    private SpringCamelContext camelContext;
 
     private RoutesDefinition routes;
 
@@ -95,7 +95,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
         camelContext.stop();
     }
 
-    public CamelContext getContext() {
+    public SpringCamelContext getContext() {
         //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
         //return context.getBean("camel-context", DefaultCamelContext.class);        
         return contextFactory.getContext(routeDAO);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index d30c624..01b057a 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -40,6 +40,7 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
@@ -59,7 +60,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelUserProvisioningManager.class);
 
-    private DefaultCamelContext camelContext;
+    private SpringCamelContext camelContext;
 
     private RoutesDefinition routes;
 
@@ -98,7 +99,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         camelContext.stop();
     }
 
-    public CamelContext getContext() {
+    public SpringCamelContext getContext() {
         //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
         //return context.getBean("camel-context", DefaultCamelContext.class);                    
         return contextFactory.getContext(routeDAO);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index c529dcf..6d3e77d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -48,15 +48,15 @@ public class SyncopeCamelContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(SyncopeCamelContext.class);
 
-    private CamelContext camelContext = null;
+    private SpringCamelContext camelContext = null;
 
     public SyncopeCamelContext() {
     }
 
-    public CamelContext getContext(RouteDAO routeDAO) {
+    public SpringCamelContext getContext(RouteDAO routeDAO) {
 
         if (camelContext == null) {
-            camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());
+            camelContext = new  SpringCamelContext(ApplicationContextProvider.getApplicationContext());
         }
         if (camelContext.getRouteDefinitions().isEmpty()) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index a94bea5..c9b498e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -24,11 +24,9 @@ import java.util.List;
 import java.util.Map;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.syncope.common.mod.AttributeMod;
 import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
-import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.propagation.PropagationByResource;
 import org.apache.syncope.core.propagation.PropagationException;


[26/53] [abbrv] syncope git commit: Restoring default travis.xml

Posted by il...@apache.org.
Restoring default travis.xml


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

Branch: refs/heads/master
Commit: b2ba422f21b0998731bff084d71f908b0e4dc5f3
Parents: 7aa0db3
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 23 12:34:12 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 23 12:34:12 2014 +0100

----------------------------------------------------------------------
 .travis.yml | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b2ba422f/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 1eeba36..e9245f1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,23 +1,24 @@
 # Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
+# 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
+# the License.  You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+#     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.
+
 language: java
 jdk:
-- openjdk6
+  - openjdk6
 # default install is mvn install --quiet -DskipTests=true
 install: mvn --show-version --quiet -P skipTests
 #invoker.streamLogs: we cannot access to log files through Travis web ui, so display everything in the console
 script: mvn --show-version --quiet clean install -Dinvoker.streamLogs=true
 notifications:
-webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi
+  webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi


[02/53] [abbrv] syncope git commit: Initial running version, in order to fix #1

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
new file mode 100644
index 0000000..2cf1e6f
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -0,0 +1,76 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.mod.StatusMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserStatusPropagation implements Processor{
+    
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserStatusPropagation.class);
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange){
+        
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
+        
+        SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
+        StatusMod statusMod = exchange.getProperty("statusMod", StatusMod.class);
+        
+        Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
+        resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+                user, statusMod.getType() != StatusMod.ModType.SUSPEND, resourcesToBeExcluded);
+        PropagationReporter propReporter =
+                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propReporter.onPrimaryResourceFailure(tasks);
+        }
+        
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), propReporter.getStatuses());
+        exchange.getOut().setBody(result); 
+    }    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
new file mode 100644
index 0000000..6fdec75
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -0,0 +1,78 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.persistence.dao.UserDAO;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.UserDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserUpdateInSyncPropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdateInSyncPropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    @Autowired
+    protected UserDataBinder binder;
+    @Autowired
+    protected UserDAO userDAO;
+    
+    @Override
+    public void process(Exchange exchange){
+                 
+            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();            
+
+            Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
+                              
+            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                    getBean(PropagationReporter.class);
+
+            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResource);
+                
+            try {
+                    taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                    LOG.error("Error propagation primary resource", e);
+                    propagationReporter.onPrimaryResourceFailure(tasks);
+            }
+            
+            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+            exchange.getOut().setBody(result);            
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
new file mode 100644
index 0000000..880912e
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -0,0 +1,120 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.mod.AttributeMod;
+import org.apache.syncope.common.mod.MembershipMod;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.common.to.UserTO;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.propagation.PropagationByResource;
+import org.apache.syncope.core.propagation.PropagationException;
+import org.apache.syncope.core.propagation.PropagationReporter;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.rest.data.UserDataBinder;
+import org.apache.syncope.core.util.ApplicationContextProvider;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserUpdatePropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    @Autowired
+    protected UserDataBinder binder;
+    
+    @Override
+    public void process(Exchange exchange){
+                 
+            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();            
+            UserMod actual = exchange.getProperty("actual", UserMod.class);
+            boolean removeMemberships = exchange.getProperty("removeMemberships", boolean.class);
+            
+            // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
+            /*for (Long membershipId : actual.getMembershipsToRemove()) {
+                if (!binder.fillMembershipVirtual(
+                        null,
+                        null,
+                        membershipId,
+                        Collections.<String>emptySet(),
+                        Collections.<AttributeMod>emptySet(),
+                        true).isEmpty()) {
+
+                    removeMemberships = true;
+                }
+            }*/
+            
+            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
+            if (tasks.isEmpty()) {
+                // SYNCOPE-459: take care of user virtual attributes ...
+                final PropagationByResource propByResVirAttr = binder.fillVirtual(
+                        updated.getResult().getKey().getId(),
+                        actual.getVirAttrsToRemove(),
+                        actual.getVirAttrsToUpdate());
+                // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
+                // not required, take care also of membership virtual attributes
+                boolean addOrUpdateMemberships = false;
+                for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
+                    if (!binder.fillMembershipVirtual(
+                            updated.getResult().getKey().getId(),
+                            membershipMod.getRole(),
+                            null,
+                            membershipMod.getVirAttrsToRemove(),
+                            membershipMod.getVirAttrsToUpdate(),
+                            false).isEmpty()) {
+
+                        addOrUpdateMemberships = true;
+                    }
+                }
+                tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
+                        ? propagationManager.getUserUpdateTaskIds(updated, false, null)
+                        : Collections.<PropagationTask>emptyList());
+            }
+
+            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                    getBean(PropagationReporter.class);
+
+            if (!tasks.isEmpty()) {
+                try {
+                    taskExecutor.execute(tasks, propagationReporter);
+                } catch (PropagationException e) {
+                    LOG.error("Error propagation primary resource", e);
+                    propagationReporter.onPrimaryResourceFailure(tasks);
+                }
+            }
+            
+            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+            exchange.getOut().setBody(result);            
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
new file mode 100644
index 0000000..2d08b93
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -0,0 +1,64 @@
+/*
+ * 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.camel.processors;
+
+import java.util.AbstractMap.SimpleEntry;
+import java.util.List;
+import java.util.Map;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DefaultUserWFSuspendPropagation implements Processor{
+
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultUserWFSuspendPropagation.class);
+    
+    @Autowired
+    protected PropagationManager propagationManager;
+    @Autowired
+    protected PropagationTaskExecutor taskExecutor;
+    
+    @Override
+    public void process(Exchange exchange){
+                 
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();            
+        Boolean suspend = exchange.getProperty("suspend", Boolean.class);
+
+        if (suspend) {
+            UserMod userMod = new UserMod();
+            userMod.setId(updated.getResult());
+
+            final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+                    new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+                            new SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
+                            updated.getPropByRes(), updated.getPerformedTasks()));
+
+            taskExecutor.execute(tasks);
+        }
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
new file mode 100644
index 0000000..7e4c18e
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -0,0 +1,72 @@
+/*
+ * 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.camel.processors;
+
+import java.util.Map;
+import org.apache.camel.Processor;
+import org.apache.camel.Exchange;
+import org.apache.syncope.common.mod.UserMod;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
+import org.apache.syncope.core.persistence.dao.UserDAO;
+import org.apache.syncope.core.workflow.WorkflowResult;
+import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class UserStatusOnSync implements Processor{
+    
+    private static final Logger LOG = LoggerFactory.getLogger(UserStatusOnSync.class);
+    
+    @Autowired
+    protected UserDAO userDAO;
+    @Autowired
+    protected UserWorkflowAdapter uwfAdapter;
+    
+    @Override
+    public void process(Exchange exchange){
+        
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();                    
+          
+        Boolean enabled = exchange.getProperty("enabled", Boolean.class);
+        Long id = exchange.getProperty("id", Long.class);
+                
+        if (enabled != null) {
+             SyncopeUser user = userDAO.find(id);
+
+             WorkflowResult<Long> enableUpdate = null;
+             if (user.isSuspended() == null) {
+                 enableUpdate = uwfAdapter.activate(id, null);
+             } else if (enabled && user.isSuspended()) {
+                 enableUpdate = uwfAdapter.reactivate(id);
+             } else if (!enabled && !user.isSuspended()) {
+                 enableUpdate = uwfAdapter.suspend(id);
+             }
+
+             if (enableUpdate != null) {
+                 if (enableUpdate.getPropByRes() != null) {
+                     updated.getPropByRes().merge(enableUpdate.getPropByRes());
+                     updated.getPropByRes().purge();
+                 }
+                 updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
+             }
+       }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
new file mode 100644
index 0000000..adc1cb0
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/provisioning/ProvisioningManager.java
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import org.apache.syncope.common.mod.AbstractAttributableMod;
+import org.apache.syncope.common.to.AbstractAttributableTO;
+import org.apache.syncope.common.to.PropagationStatus;
+
+public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
+
+    public Map.Entry<Long, List<PropagationStatus>> create(T subject);
+
+    public Map.Entry<Long, List<PropagationStatus>> update(M subjectMod);
+
+    public List<PropagationStatus> delete(Long subjectId);
+
+    public Long unlink(M subjectMod);
+
+    public Long link(M subjectMod);
+
+    public List<PropagationStatus> deprovision(Long user, Collection<String> resources);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
index 22001e5..f7a2981 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import javax.annotation.Resource;
 import org.apache.commons.lang3.ArrayUtils;
@@ -34,6 +35,9 @@ import org.apache.syncope.core.persistence.dao.search.SearchCond;
 import org.apache.syncope.common.to.RoleTO;
 import org.apache.syncope.common.types.ClientExceptionType;
 import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.provisioning.ProvisioningManager;
+import org.apache.syncope.core.provisioning.RoleProvisioningManager;
 import org.apache.syncope.common.reqres.BulkAction;
 import org.apache.syncope.common.reqres.BulkActionResult;
 import org.apache.syncope.common.types.SubjectType;
@@ -53,8 +57,6 @@ import org.apache.syncope.core.rest.data.AttributableTransformer;
 import org.apache.syncope.core.rest.data.RoleDataBinder;
 import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.apache.syncope.core.util.EntitlementUtil;
-import org.apache.syncope.core.workflow.WorkflowResult;
-import org.apache.syncope.core.workflow.role.RoleWorkflowAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
@@ -83,9 +85,6 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
     protected RoleDataBinder binder;
 
     @Autowired
-    protected RoleWorkflowAdapter rwfAdapter;
-
-    @Autowired
     protected PropagationManager propagationManager;
 
     @Autowired
@@ -96,6 +95,9 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
 
     @Resource(name = "anonymousUser")
     private String anonymousUser;
+    
+    @Resource(name = "defaultRoleProvisioningManager")
+    protected RoleProvisioningManager provisioningManager;
 
     @PreAuthorize("hasAnyRole('ROLE_READ', T(org.apache.syncope.common.SyncopeConstants).ANONYMOUS_ENTITLEMENT)")
     @Transactional(readOnly = true)
@@ -240,22 +242,9 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         /*
          * Actual operations: workflow, propagation
          */
-        WorkflowResult<Long> created = rwfAdapter.create(actual);
-
-        EntitlementUtil.extendAuthContext(created.getResult());
-
-        List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created, actual.getVirAttrs());
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
-                PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
-
-        final RoleTO savedTO = binder.getRoleTO(created.getResult());
-        savedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        Map.Entry<Long, List<PropagationStatus>> created = provisioningManager.create(roleTO);
+        final RoleTO savedTO = binder.getRoleTO(created.getKey());
+        savedTO.getPropagationStatusTOs().addAll(created.getValue());
         return savedTO;
     }
 
@@ -269,23 +258,10 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         RoleMod actual = attrTransformer.transform(roleMod);
         LOG.debug("Transformed: {}", actual);
 
-        /*
-         * Actual operations: workflow, propagation
-         */
-        WorkflowResult<Long> updated = rwfAdapter.update(actual);
-
-        List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
-                actual.getVirAttrsToRemove(), actual.getVirAttrsToUpdate());
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
-                PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
-        final RoleTO updatedTO = binder.getRoleTO(updated.getResult());
-        updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(roleMod);
+        
+        final RoleTO updatedTO = binder.getRoleTO(updated.getKey());
+        updatedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return updatedTO;
     }
 
@@ -304,45 +280,12 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
             throw sce;
         }
 
-        final List<SyncopeRole> toBeDeprovisioned = new ArrayList<SyncopeRole>();
-
-        final SyncopeRole syncopeRole = roleDAO.find(roleId);
-
-        if (syncopeRole != null) {
-            final List<SyncopeRole> descendants = roleDAO.findDescendants(syncopeRole);
-            if (descendants != null) {
-                // among descendants there is also parent role syncopeRole (to delete)
-                toBeDeprovisioned.addAll(descendants);
-            }
-        }
-
-        final List<PropagationTask> tasks = new ArrayList<PropagationTask>();
-
-        for (SyncopeRole role : toBeDeprovisioned) {
-            // Generate propagation tasks for deleting users from role resources, if they are on those resources only
-            // because of the reason being deleted (see SYNCOPE-357)
-            for (WorkflowResult<Long> wfResult : binder.getUsersOnResourcesOnlyBecauseOfRole(role.getId())) {
-                tasks.addAll(propagationManager.getUserDeleteTaskIds(wfResult));
-            }
-
-            // Generate propagation tasks for deleting this role from resources
-            tasks.addAll(propagationManager.getRoleDeleteTaskIds(role.getId()));
-        }
-
+        List<PropagationStatus> statuses = provisioningManager.delete(roleId);
+        
         RoleTO roleTO = new RoleTO();
         roleTO.setId(roleId);
 
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
-                PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
-        roleTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
-
-        rwfAdapter.delete(roleId);
+        roleTO.getPropagationStatusTOs().addAll(statuses);
 
         return roleTO;
     }
@@ -374,7 +317,9 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         final RoleMod roleMod = new RoleMod();
         roleMod.setId(roleId);
         roleMod.getResourcesToRemove().addAll(resources);
-        return binder.getRoleTO(rwfAdapter.update(roleMod).getResult());
+        final Long updatedResult = provisioningManager.unlink(roleMod);
+ 
+        return binder.getRoleTO(updatedResult);
     }
 
     @PreAuthorize("hasRole('ROLE_UPDATE')")
@@ -384,7 +329,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         final RoleMod roleMod = new RoleMod();
         roleMod.setId(roleId);
         roleMod.getResourcesToAdd().addAll(resources);
-        return binder.getRoleTO(rwfAdapter.update(roleMod).getResult());
+        return binder.getRoleTO(provisioningManager.link(roleMod));
     }
 
     @PreAuthorize("hasRole('ROLE_UPDATE')")
@@ -414,22 +359,10 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
     public RoleTO deprovision(final Long roleId, final Collection<String> resources) {
         final SyncopeRole role = binder.getRoleFromId(roleId);
 
-        final Set<String> noPropResourceName = role.getResourceNames();
-        noPropResourceName.removeAll(resources);
-
-        final List<PropagationTask> tasks =
-                propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
-                PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
+        List<PropagationStatus> statuses = provisioningManager.deprovision(roleId, resources);
 
         final RoleTO updatedTO = binder.getRoleTO(role);
-        updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        updatedTO.getPropagationStatusTOs().addAll(statuses);
         return updatedTO;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
new file mode 100644
index 0000000..117d10f
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.syncope.core.rest.controller;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.apache.syncope.core.persistence.dao.NotFoundException;
+import org.apache.syncope.core.persistence.dao.RouteDAO;
+import org.apache.syncope.core.provisioning.camel.SyncopeCamelContext;
+import org.apache.syncope.core.rest.data.RouteDataBinder;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+@Component
+public class RouteController extends AbstractTransactionalController<RouteTO>{
+    
+    private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RouteDataBinder.class);
+    
+    @Autowired
+    private RouteDAO routeDao;
+    
+    @Autowired
+    private RouteDataBinder binder;
+    
+    @Autowired
+    private SyncopeCamelContext context;
+    
+    
+    @PreAuthorize("hasRole('ROUTE_LIST')")
+    @Transactional(readOnly = true)
+    public List<RouteTO> listRoutes(){
+        List<RouteTO> routes = new ArrayList<RouteTO>();
+        Iterator it = routeDao.findAll().iterator();
+        while(it.hasNext()){
+            routes.add(binder.getRouteTO((CamelRoute) it.next()));
+        }
+        return routes;
+    }
+    
+    @PreAuthorize("hasRole('ROUTE_READ')")
+    @Transactional(readOnly = true)
+    public RouteTO readRoute(Long id){
+        CamelRoute route = routeDao.find(id);
+        if (route==null) 
+            throw new NotFoundException("Route with id="+id);
+        
+        return binder.getRouteTO(route);
+    }
+    
+    @PreAuthorize("hasRole('ROUTE_UPDATE')")
+    public void updateRoute(RouteTO routeTO){
+
+        CamelRoute route = routeDao.find(routeTO.getId());
+        if (route==null) 
+            throw new NotFoundException("Route with id="+route.getId());
+        route.setRouteContent(routeTO.getRouteContent());
+        routeDao.save(route);       
+        LOG.info("UPDATING ROUTE WITH ID {} ", routeTO.getId());
+        LOG.info("NEW ROUTE CONTENT {} ", routeTO.getRouteContent());
+        context.reloadContext(routeDao, routeTO.getId());
+    }   
+    
+    @Override
+    protected RouteTO resolveReference(Method method, Object... args) throws UnresolvedReferenceException {
+        throw new UnresolvedReferenceException();
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index be426b7..d8fa5f8 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -18,15 +18,19 @@
  */
 package org.apache.syncope.core.rest.controller;
 
+import java.io.FileNotFoundException;
+import java.io.PrintStream;
 import java.lang.reflect.Method;
 import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.annotation.Resource;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.syncope.common.mod.UserMod;
@@ -41,7 +45,10 @@ import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.common.mod.AttributeMod;
 import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.types.SubjectType;
+import org.apache.syncope.common.to.PropagationStatus;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
+import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
 import org.apache.syncope.core.persistence.dao.SubjectSearchDAO;
@@ -55,6 +62,7 @@ import org.apache.syncope.core.propagation.PropagationException;
 import org.apache.syncope.core.propagation.PropagationReporter;
 import org.apache.syncope.core.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager;
 import org.apache.syncope.core.rest.data.AttributableTransformer;
 import org.apache.syncope.core.rest.data.UserDataBinder;
 import org.apache.syncope.core.util.ApplicationContextProvider;
@@ -92,9 +100,6 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     protected UserDataBinder binder;
 
     @Autowired
-    protected UserWorkflowAdapter uwfAdapter;
-
-    @Autowired
     protected PropagationManager propagationManager;
 
     @Autowired
@@ -102,6 +107,12 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
 
     @Autowired
     protected AttributableTransformer attrTransformer;
+    
+    @Autowired
+    protected UserWorkflowAdapter uwfAdapter;
+    
+    @Resource(name = "defaultUserProvisioningManager")
+    protected UserProvisioningManager provisioningManager;
 
     @Transactional(readOnly = true)
     public boolean isSelfRegAllowed() {
@@ -215,24 +226,11 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         UserTO actual = attrTransformer.transform(userTO);
         LOG.debug("Transformed: {}", actual);
 
-        /*
-         * Actual operations: workflow, propagation, notification
-         */
-        WorkflowResult<Map.Entry<Long, Boolean>> created = uwfAdapter.create(actual, storePassword);
-
-        List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
-                created, actual.getPassword(), actual.getVirAttrs(), actual.getMemberships());
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
+        Map.Entry<Long, List<PropagationStatus>>
+                created = provisioningManager.create(actual,storePassword);
 
-        final UserTO savedTO = binder.getUserTO(created.getResult().getKey());
-        savedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        final UserTO savedTO = binder.getUserTO(created.getKey());
+        savedTO.getPropagationStatusTOs().addAll(created.getValue());
         return savedTO;
     }
 
@@ -254,7 +252,8 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         // AttributableMod transformation (if configured)
         UserMod actual = attrTransformer.transform(userMod);
         LOG.debug("Transformed: {}", actual);
-
+        
+        //CAMEL
         // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
         boolean removeMemberships = false;
         for (Long membershipId : actual.getMembershipsToRemove()) {
@@ -269,8 +268,9 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
                 removeMemberships = true;
             }
         }
+        
         //Actual operations: workflow, propagation, notification
-        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(actual);
+        /*WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(actual);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
         if (tasks.isEmpty()) {
@@ -312,25 +312,29 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         }
 
         final UserTO updatedTO = binder.getUserTO(updated.getResult().getKey().getId());
-        updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        updatedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());*/
+        Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual,removeMemberships);
+
+        final UserTO updatedTO = binder.getUserTO(updated.getKey());
+        updatedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return updatedTO;
     }
 
-    protected WorkflowResult<Long> setStatusOnWfAdapter(final SyncopeUser user, final StatusMod statusMod) {
-        WorkflowResult<Long> updated;
+     protected Map.Entry<Long, List<PropagationStatus>> setStatusOnWfAdapter(final SyncopeUser user, final StatusMod statusMod) {
+        Map.Entry<Long, List<PropagationStatus>> updated;
 
         switch (statusMod.getType()) {
             case SUSPEND:
-                updated = uwfAdapter.suspend(user.getId());
+                updated = provisioningManager.suspend(user, statusMod);
                 break;
 
             case REACTIVATE:
-                updated = uwfAdapter.reactivate(user.getId());
+                updated = provisioningManager.reactivate(user, statusMod);
                 break;
 
             case ACTIVATE:
             default:
-                updated = uwfAdapter.activate(user.getId(), statusMod.getToken());
+                updated = provisioningManager.activate(user, statusMod);
                 break;
 
         }
@@ -343,30 +347,10 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     public UserTO status(final StatusMod statusMod) {
         SyncopeUser user = binder.getUserFromId(statusMod.getId());
 
-        WorkflowResult<Long> updated;
-        if (statusMod.isOnSyncope()) {
+        Map.Entry<Long, List<PropagationStatus>>
             updated = setStatusOnWfAdapter(user, statusMod);
-        } else {
-            updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
-        }
-
-        // Resources to exclude from propagation
-        Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
-        resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
-
-        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
-                user, statusMod.getType() != StatusMod.ModType.SUSPEND, resourcesToBeExcluded);
-        PropagationReporter propReporter =
-                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propReporter.onPrimaryResourceFailure(tasks);
-        }
-
-        final UserTO savedTO = binder.getUserTO(updated.getResult());
-        savedTO.getPropagationStatusTOs().addAll(propReporter.getStatuses());
+        final UserTO savedTO = binder.getUserTO(updated.getKey());
+        savedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return savedTO;
     }
 
@@ -435,23 +419,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
             throw sce;
         }
 
-        // Note here that we can only notify about "delete", not any other
-        // task defined in workflow process definition: this because this
-        // information could only be available after uwfAdapter.delete(), which
-        // will also effectively remove user from db, thus making virtually
-        // impossible by NotificationManager to fetch required user information
-        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(userId);
-
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
-
-        uwfAdapter.delete(userId);
+        List<PropagationStatus> statuses = provisioningManager.delete(userId);
 
         final UserTO deletedTO;
         SyncopeUser deleted = userDAO.find(userId);
@@ -461,7 +429,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         } else {
             deletedTO = binder.getUserTO(userId);
         }
-        deletedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        deletedTO.getPropagationStatusTOs().addAll(statuses);
 
         return deletedTO;
     }
@@ -526,7 +494,9 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         final UserMod userMod = new UserMod();
         userMod.setId(userId);
         userMod.getResourcesToRemove().addAll(resources);
-        return binder.getUserTO(uwfAdapter.update(userMod).getResult().getKey().getId());
+        Long updatedId = provisioningManager.unlink(userMod);
+
+        return binder.getUserTO(updatedId);
     }
 
     @PreAuthorize("hasRole('USER_UPDATE')")
@@ -536,7 +506,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         final UserMod userMod = new UserMod();
         userMod.setId(userId);
         userMod.getResourcesToAdd().addAll(resources);
-        return binder.getUserTO(uwfAdapter.update(userMod).getResult().getKey().getId());
+        return binder.getUserTO(provisioningManager.link(userMod));
     }
 
     @PreAuthorize("hasRole('USER_UPDATE')")
@@ -576,24 +546,12 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Transactional(rollbackFor = { Throwable.class })
     @Override
     public UserTO deprovision(final Long userId, final Collection<String> resources) {
-        final SyncopeUser user = binder.getUserFromId(userId);
-
-        final Set<String> noPropResourceName = user.getResourceNames();
-        noPropResourceName.removeAll(resources);
-
-        final List<PropagationTask> tasks =
-                propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
-        final PropagationReporter propagationReporter =
-                ApplicationContextProvider.getApplicationContext().getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
+        final SyncopeUser user = binder.getUserFromId(userId);        
+        
+        List<PropagationStatus> statuses = provisioningManager.deprovision(userId, resources);
 
         final UserTO updatedUserTO = binder.getUserTO(user);
-        updatedUserTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
+        updatedUserTO.getPropagationStatusTOs().addAll(statuses);
         return updatedUserTO;
     }
 
@@ -646,4 +604,18 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
 
         throw new UnresolvedReferenceException();
     }
+    
+    public PrintStream getDefinition() throws FileNotFoundException{
+        /*String result = "";
+        if(provisioningManager instanceof CamelUserProvisioningManager){
+            List l = ((CamelUserProvisioningManager)provisioningManager).getRoutes();
+            Iterator<CamelRoute> it = l.iterator();
+            
+            while(it.hasNext()){
+                result += it.next().getRouteContent();
+            }                        
+        }
+        return new PrintStream(result);*/
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
new file mode 100644
index 0000000..c1016e6
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.syncope.core.rest.data;
+
+
+import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.common.util.BeanUtils;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RouteDataBinder {
+  
+    private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RouteDataBinder.class);
+    
+    public RouteTO getRouteTO(CamelRoute route){        
+              
+        RouteTO routeTO = new RouteTO();
+        BeanUtils.copyProperties(route, routeTO);
+        return routeTO;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
new file mode 100644
index 0000000..1c44765
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
@@ -0,0 +1,52 @@
+/*
+ * 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.services;
+
+import java.util.List;
+import org.apache.syncope.common.services.RouteService;
+import org.apache.syncope.common.to.RouteTO;
+import org.apache.syncope.core.rest.controller.RouteController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RouteServiceImpl extends AbstractServiceImpl implements RouteService{
+
+    @Autowired
+    private RouteController controller;
+    
+    @Override
+    public List<RouteTO> getRoutes() {
+        
+        return  controller.listRoutes();
+    }
+    
+    @Override
+    public RouteTO getRoute(Long id){
+        
+        return controller.readRoute(id);
+    }
+
+    @Override
+    public void importRoute(Long id, RouteTO route) {
+        controller.updateRoute(route);
+    }
+    
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
index 8fd0416..fa88e7c 100644
--- a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
@@ -113,4 +113,14 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
             controller.importRoleDefinition(contentType, definition);
         }
     }
+
+    @Override
+    public Response getRoute(Long id) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public Response getRoutes() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
index adf7c8d..b356e64 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.sync.impl;
 
+import javax.annotation.Resource;
 import org.apache.syncope.core.sync.SyncProfile;
 import org.apache.syncope.core.audit.AuditManager;
 import org.apache.syncope.core.connid.ConnObjectUtil;
@@ -25,6 +26,8 @@ import org.apache.syncope.core.notification.NotificationManager;
 import org.apache.syncope.core.persistence.beans.AbstractSyncTask;
 import org.apache.syncope.core.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.provisioning.RoleProvisioningManager;
+import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.rest.data.RoleDataBinder;
 import org.apache.syncope.core.rest.data.UserDataBinder;
 import org.apache.syncope.core.sync.AbstractSyncActions;
@@ -99,6 +102,12 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      * Sync profile.
      */
     protected SyncProfile<T, A> profile;
+    
+    @Resource(name = "defaultUserProvisioningManager")
+    protected UserProvisioningManager userProvisioningManager;
+    
+    @Resource(name = "defaultRoleProvisioningManager")
+    protected RoleProvisioningManager roleProvisioningManager;
 
     public void setProfile(final SyncProfile<T, A> profile) {
         this.profile = profile;

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
index 8eb3960..e544687 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
@@ -30,6 +30,7 @@ import org.apache.syncope.common.mod.RoleMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.AbstractSubjectTO;
 import org.apache.syncope.common.to.AttributeTO;
+import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.common.to.RoleTO;
 import org.apache.syncope.common.types.AttributableType;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
@@ -85,22 +86,12 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         RoleTO roleTO = RoleTO.class.cast(subjectTO);
 
-        WorkflowResult<Long> created = rwfAdapter.create(roleTO);
-        AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
-        if (roleOwner != null) {
-            roleOwnerMap.put(created.getResult(), roleOwner.getValues().iterator().next());
-        }
-
-        EntitlementUtil.extendAuthContext(created.getResult());
-
-        List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created,
-                roleTO.getVirAttrs(), Collections.singleton(profile.getSyncTask().getResource().getName()));
+        Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.createInSync
+                           (roleTO, roleOwnerMap, Collections.singleton(profile.getSyncTask().getResource().getName()));
 
-        taskExecutor.execute(tasks);
+        roleTO = roleDataBinder.getRoleTO(created.getKey());
 
-        roleTO = roleDataBinder.getRoleTO(created.getResult());
-
-        result.setId(created.getResult());
+        result.setId(created.getKey());
         result.setName(getName(subjectTO));
 
         return roleTO;
@@ -135,7 +126,9 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         RoleMod roleMod = RoleMod.class.cast(subjectMod);
 
-        final WorkflowResult<Long> updated = rwfAdapter.update(roleMod);
+        Map.Entry<Long, List<PropagationStatus>> updated = roleProvisioningManager.update(roleMod);
+                
+        //moved after role provisioning manager
         String roleOwner = null;
         for (AttributeMod attrMod : roleMod.getAttrsToUpdate()) {
             if (attrMod.getSchema().isEmpty()) {
@@ -143,17 +136,11 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
             }
         }
         if (roleOwner != null) {
-            roleOwnerMap.put(updated.getResult(), roleOwner);
+            roleOwnerMap.put(updated.getKey(), roleOwner);
         }
 
-        List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
-                roleMod.getVirAttrsToRemove(),
-                roleMod.getVirAttrsToUpdate(),
-                Collections.singleton(profile.getSyncTask().getResource().getName()));
-
-        taskExecutor.execute(tasks);
-
-        final RoleTO after = roleDataBinder.getRoleTO(updated.getResult());
+        final RoleTO after = roleDataBinder.getRoleTO(updated.getKey());
+        
         result.setName(getName(after));
 
         return after;
@@ -183,6 +170,6 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
             LOG.error("Could not propagate user " + id, e);
         }
 
-        rwfAdapter.delete(id);
+        roleProvisioningManager.delete(id); 
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
index a8cc00b..e5bdc06 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
@@ -29,6 +29,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.syncope.common.mod.AbstractSubjectMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.AbstractSubjectTO;
+import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.common.types.AttributableType;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
@@ -80,19 +81,13 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
         UserTO userTO = UserTO.class.cast(subjectTO);
 
         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        WorkflowResult<Map.Entry<Long, Boolean>> created =
-                uwfAdapter.create(userTO, true, enabled, true);
+        //Delegate User Workflow Creation and its Propagation to provisioning manager
+        Map.Entry<Long, List<PropagationStatus>>
+            created = userProvisioningManager.create(userTO, true, true, enabled,Collections.singleton(profile.getSyncTask().getResource().getName()));                             
 
-        List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(created,
-                userTO.getPassword(), userTO.getVirAttrs(),
-                Collections.singleton(profile.getSyncTask().getResource().getName()),
-                userTO.getMemberships());
+        userTO = userDataBinder.getUserTO(created.getKey());
 
-        taskExecutor.execute(tasks);
-
-        userTO = userDataBinder.getUserTO(created.getResult().getKey());
-
-        result.setId(created.getResult().getKey());
+        result.setId(created.getKey());
 
         return userTO;
     }
@@ -126,7 +121,7 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         final UserMod userMod = UserMod.class.cast(subjectMod);
 
-        WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
+        /*WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
         try {
             updated = uwfAdapter.update(userMod);
         } catch (Exception e) {
@@ -140,10 +135,10 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
                     new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false),
                     new PropagationByResource(),
                     new HashSet<String>());
-        }
+        }*/
 
         final Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        if (enabled != null) {
+        /*if (enabled != null) {
             SyncopeUser user = userDAO.find(before.getId());
 
             WorkflowResult<Long> enableUpdate = null;
@@ -168,9 +163,11 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
                 updated, updated.getResult().getKey().getPassword() != null,
                 Collections.singleton(profile.getSyncTask().getResource().getName()));
 
-        taskExecutor.execute(tasks);
+        taskExecutor.execute(tasks);*/
+                 
+        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.updateInSync(userMod, before.getId(), result,enabled, Collections.singleton(profile.getSyncTask().getResource().getName()));        
 
-        return userDataBinder.getUserTO(updated.getResult().getKey().getId());
+        return userDataBinder.getUserTO(updated.getKey());
     }
 
     @Override
@@ -191,8 +188,8 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
     @Override
     protected void delete(final Long id) {
         try {
-            taskExecutor.execute(
-                    propagationManager.getUserDeleteTaskIds(id, profile.getSyncTask().getResource().getName()));
+            userProvisioningManager.
+                    delete(id,Collections.<String>singleton(profile.getSyncTask().getResource().getName()));
         } catch (Exception e) {
             // A propagation failure doesn't imply a synchronization failure.
             // The propagation exception status will be reported into the propagation task execution.

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/RouteManager.java b/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
new file mode 100644
index 0000000..67ebd82
--- /dev/null
+++ b/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
@@ -0,0 +1,39 @@
+/*
+ * 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.util;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.core.persistence.beans.CamelRoute;
+
+
+public class RouteManager {
+    private static List<CamelRoute> routelist;
+    
+    public static void addElement(CamelRoute route){
+        if(routelist == null) routelist= new ArrayList<CamelRoute>();
+        routelist.add(route);
+    }
+    
+    public static List<CamelRoute> getRoutes(){
+        if(routelist == null) routelist= new ArrayList<CamelRoute>();
+        return routelist;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
index 7b1ee15..ef4a46d 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowUserSuspender.java
@@ -21,12 +21,14 @@ package org.apache.syncope.core.workflow;
 import java.util.AbstractMap.SimpleEntry;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Resource;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
 import org.apache.syncope.core.policy.UserSuspender;
 import org.apache.syncope.core.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.propagation.impl.PropagationManager;
+import org.apache.syncope.core.provisioning.UserProvisioningManager;
 import org.apache.syncope.core.workflow.user.UserWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,14 +40,8 @@ public class WorkflowUserSuspender implements UserSuspender {
 
     private static final Logger LOG = LoggerFactory.getLogger(WorkflowUserSuspender.class);
 
-    @Autowired
-    private UserWorkflowAdapter uwfAdapter;
-
-    @Autowired
-    private PropagationManager propagationManager;
-
-    @Autowired
-    private PropagationTaskExecutor taskExecutor;
+    @Resource(name = "defaultUserProvisioningManager")
+    protected UserProvisioningManager provisioningManager;
 
     @Override
     public void suspend(final SyncopeUser user, final boolean suspend) {
@@ -55,21 +51,8 @@ public class WorkflowUserSuspender implements UserSuspender {
             // reduce failed logins number to avoid multiple request
             user.setFailedLogins(user.getFailedLogins() - 1);
 
-            // disable user
-            final WorkflowResult<Long> updated = uwfAdapter.suspend(user);
-
-            // propagate suspension if and only if it is required by policy
-            if (suspend) {
-                UserMod userMod = new UserMod();
-                userMod.setId(updated.getResult());
-
-                final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
-                        new WorkflowResult<Map.Entry<UserMod, Boolean>>(
-                                new SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
-                                updated.getPropByRes(), updated.getPerformedTasks()));
-
-                taskExecutor.execute(tasks);
-            }
+            // disable user and propagate suspension if and only if it is required by policy          
+            provisioningManager.innerSuspend(user, suspend);
         } catch (Exception e) {
             LOG.error("Error during user suspension", e);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
index 9425f17..f059a9a 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
@@ -19,9 +19,7 @@
 package org.apache.syncope.core.workflow.user;
 
 import java.util.Map;
-import java.util.Map.Entry;
 import org.apache.syncope.common.mod.UserMod;
-import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
 import org.apache.syncope.core.persistence.dao.UserDAO;
 import org.apache.syncope.core.rest.controller.UnauthorizedRoleException;
@@ -61,13 +59,6 @@ public abstract class AbstractUserWorkflowAdapter implements UserWorkflowAdapter
         return null;
     }
 
-    @Override
-    public WorkflowResult<Entry<Long, Boolean>> create(final UserTO userTO, final boolean storePassword)
-            throws UnauthorizedRoleException, WorkflowException {
-
-        return create(userTO, false, storePassword);
-    }
-
     protected abstract WorkflowResult<Long> doActivate(SyncopeUser user, String token) throws WorkflowException;
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
index 1ffc4c7..8713261 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
@@ -228,4 +228,9 @@ public class NoOpUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
+
+    @Override
+    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws UnauthorizedRoleException, WorkflowException {
+        return create(userTO, false, true);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/5b3b124a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
index f6cc322..460b73b 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
@@ -883,4 +883,9 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
         return new WorkflowResult<UserMod>(userMod, propByRes, postTasks);
     }
+
+    @Override
+    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws UnauthorizedRoleException, WorkflowException {
+        return create(userTO, false, storePassword);
+    }
 }


[21/53] [abbrv] syncope git commit: Code formatting with netbeans

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index 92b3cfb..d30c624 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -55,7 +55,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-
 public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelUserProvisioningManager.class);
@@ -70,7 +69,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     @Autowired
     protected RouteDAO routeDAO;
-    
+
     @Autowired
     protected SyncopeCamelContext contextFactory;
 
@@ -90,7 +89,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
         return content.toString();
     }
-    
+
     public void startContext() throws Exception {
         getContext().start();
     }
@@ -170,15 +169,15 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
         return create(userTO, true, false, null, Collections.<String>emptySet());
     }
-    
-    
+
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
 
         return create(userTO, storePassword, false, null, Collections.<String>emptySet());
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword,
+            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
         String uri = "direct:createPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
@@ -209,13 +208,12 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod) {
         return update(userMod, false);
     }
-    
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
         String uri = "direct:updatePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("removeMemberships", removeMemberships);
 
@@ -227,10 +225,9 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
 
-        return o.getIn().getBody(Map.Entry.class);    
+        return o.getIn().getBody(Map.Entry.class);
     }
 
-
     @Override
     public List<PropagationStatus> delete(final Long userId) {
 
@@ -286,7 +283,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         if (statusMod.isOnSyncope()) {
             sendMessage("direct:activateUser", user.getId(), props);
         } else {
-            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().
+                    toLowerCase());
             sendMessage("direct:statusUser", updated, props);
         }
 
@@ -311,7 +309,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         if (statusMod.isOnSyncope()) {
             sendMessage("direct:reactivateUser", user.getId(), props);
         } else {
-            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().
+                    toLowerCase());
             sendMessage("direct:statusUser", updated, props);
         }
 
@@ -337,7 +336,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         if (statusMod.isOnSyncope()) {
             sendMessage("direct:suspendUser", user.getId(), props);
         } else {
-            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
+            WorkflowResult<Long> updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().
+                    toLowerCase());
             sendMessage("direct:statusUser", updated, props);
         }
 
@@ -389,7 +389,8 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result, Boolean enabled, Set<String> excludedResources) {
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result,
+            Boolean enabled, Set<String> excludedResources) {
 
         String uri = "direct:updateSyncPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
@@ -456,7 +457,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     public void confirmPasswordReset(SyncopeUser user, final String token, final String password) {
         String uri = "direct:confirmPwdResetPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("user", user);
         props.put("userId", user.getId());

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index 6381649..c529dcf 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel;
 
 import java.io.ByteArrayInputStream;
@@ -44,38 +43,39 @@ import org.springframework.stereotype.Component;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
-
 @Component
-public class SyncopeCamelContext{
+public class SyncopeCamelContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(SyncopeCamelContext.class);
 
-    private CamelContext camelContext = null;                   
-    
-    public SyncopeCamelContext() { 
+    private CamelContext camelContext = null;
+
+    public SyncopeCamelContext() {
     }
-    
-    public CamelContext getContext(RouteDAO routeDAO){
 
-        if(camelContext == null) camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());              
-        if(camelContext.getRouteDefinitions().isEmpty()){            
-            
+    public CamelContext getContext(RouteDAO routeDAO) {
+
+        if (camelContext == null) {
+            camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());
+        }
+        if (camelContext.getRouteDefinitions().isEmpty()) {
+
             List<CamelRoute> crl = routeDAO.findAll();
-            LOG.info("{} route(s) are going to be loaded ", crl.size());                
+            LOG.info("{} route(s) are going to be loaded ", crl.size());
             loadContext(routeDAO, crl);
-                
+
             try {
                 camelContext.start();
             } catch (Exception ex) {
                 LOG.error("Error during staring camel context {}", ex);
             }
         }
-        
+
         return camelContext;
     }
-    
-    public void loadContext(RouteDAO routeDAO, List<CamelRoute> crl){
-        
+
+    public void loadContext(RouteDAO routeDAO, List<CamelRoute> crl) {
+
         try {
             DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             JAXBContext jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES);
@@ -84,7 +84,8 @@ public class SyncopeCamelContext{
 
             for (int s = 0; s < crl.size(); s++) {
 
-                InputStream is = new ByteArrayInputStream( URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").getBytes());
+                InputStream is = new ByteArrayInputStream(URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").
+                        getBytes());
                 Document doc = dBuilder.parse(is);
                 doc.getDocumentElement().normalize();
                 Node routeEl = doc.getElementsByTagName("route").item(0);
@@ -96,42 +97,44 @@ public class SyncopeCamelContext{
         } catch (Exception ex) {
             LOG.error("Error during loading camel context {}", ex);
         }
-    
+
     }
-    
-    public void reloadContext(RouteDAO routeDAO){
-        
+
+    public void reloadContext(RouteDAO routeDAO) {
+
         List<CamelRoute> crl = routeDAO.findAll();
-        if(camelContext == null) getContext(routeDAO);
-        else {            
-            if( ! camelContext.getRouteDefinitions().isEmpty()){                    
-                for (Iterator<RouteDefinition> it = camelContext.getRouteDefinitions().iterator(); it.hasNext(); ) {
+        if (camelContext == null) {
+            getContext(routeDAO);
+        } else {
+            if (!camelContext.getRouteDefinitions().isEmpty()) {
+                for (Iterator<RouteDefinition> it = camelContext.getRouteDefinitions().iterator(); it.hasNext();) {
                     RouteDefinition ard = it.next();
-                    it.remove();                       
-                }                    
+                    it.remove();
+                }
             }
 
             loadContext(routeDAO, crl);
         }
     }
-    
-    public void reloadContext(RouteDAO routeDAO, Long routeId){
-        
-        if(camelContext == null) getContext(routeDAO);
-        else {            
-            if( ! camelContext.getRouteDefinitions().isEmpty()){
-                                
+
+    public void reloadContext(RouteDAO routeDAO, Long routeId) {
+
+        if (camelContext == null) {
+            getContext(routeDAO);
+        } else {
+            if (!camelContext.getRouteDefinitions().isEmpty()) {
+
                 camelContext.getRouteDefinitions().remove(routeId.intValue());
                 List<CamelRoute> crl = new ArrayList<CamelRoute>();
                 crl.add(routeDAO.find(routeId));
                 loadContext(routeDAO, crl);
             }
-                
+
         }
-            
+
     }
-    
-    public List<RouteDefinition> getDefinitions(){
+
+    public List<RouteDefinition> getDefinitions() {
         return camelContext.getRouteDefinitions();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
index 2c34090..2af3d37 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -41,22 +40,23 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleCreatePropagation  implements Processor{
+public class DefaultRoleCreatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
         RoleTO subject = exchange.getProperty("subject", RoleTO.class);
-        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
-                
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+
         EntitlementUtil.extendAuthContext(created.getResult());
 
         List<PropagationTask> tasks = propagationManager.getRoleCreateTaskIds(created, subject.getVirAttrs());
@@ -68,11 +68,11 @@ public class DefaultRoleCreatePropagation  implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), propagationReporter.getStatuses());
-        
+
         exchange.getOut().setBody(result);
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
index c216c41..d796d6d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -2,23 +2,22 @@ package org.apache.syncope.core.provisioning.camel.processors;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * 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
+ * with the License. You may obtain a copy of the License at
  *
- *   http://www.apache.org/licenses/LICENSE-2.0
+ * 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
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
-
 import java.util.AbstractMap;
 import java.util.Collections;
 import java.util.List;
@@ -41,25 +40,25 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleCreateSyncPropagation implements Processor{
+public class DefaultRoleCreateSyncPropagation implements Processor {
 
-        
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreateSyncPropagation.class);
-    
+
     @Override
-    public void process(Exchange exchange){    
-        
+    public void process(Exchange exchange) {
+
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
-        
+
         RoleTO actual = exchange.getProperty("subject", RoleTO.class);
         Map<Long, String> roleOwnerMap = exchange.getProperty("roleOwnerMap", Map.class);
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
-        
+
         AttributeTO roleOwner = actual.getAttrMap().get(StringUtils.EMPTY);
 
         if (roleOwner != null) {
@@ -72,10 +71,10 @@ public class DefaultRoleCreateSyncPropagation implements Processor{
                 actual.getVirAttrs(), excludedResource);
 
         taskExecutor.execute(tasks);
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), Collections.<PropagationStatus>emptyList());
-        
+
         exchange.getOut().setBody(result);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
index 6523b76..1c00131 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeletePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.ArrayList;
@@ -40,25 +39,30 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleDeletePropagation implements Processor{
+public class DefaultRoleDeletePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleDeletePropagation.class);
+
     @Autowired
     protected RoleWorkflowAdapter rwfAdapter;
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
-    protected PropagationTaskExecutor taskExecutor;    
+    protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected RoleDAO roleDAO;
+
     @Autowired
     protected RoleDataBinder binder;
-    
+
     @Override
     public void process(Exchange exchange) throws Exception {
-        
+
         Long subjectId = exchange.getIn().getBody(Long.class);
-        
+
         final List<SyncopeRole> toBeDeprovisioned = new ArrayList<SyncopeRole>();
 
         final SyncopeRole syncopeRole = roleDAO.find(subjectId);
@@ -92,11 +96,9 @@ public class DefaultRoleDeletePropagation implements Processor{
         } catch (PropagationException e) {
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
-        }      
-        
+        }
+
         exchange.setProperty("statuses", propagationReporter.getStatuses());
     }
-    
-    
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
index 77e9e73..a7c35fb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.HashSet;
@@ -38,29 +37,32 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleDeprovisionPropagation implements Processor{
+public class DefaultRoleDeprovisionPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected RoleDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         Long roleId = exchange.getIn().getBody(Long.class);
         List<String> resources = exchange.getProperty("resources", List.class);
-        
+
         final SyncopeRole role = binder.getRoleFromId(roleId);
-        
+
         final Set<String> noPropResourceName = role.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
-        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
+
+        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(
+                resources), noPropResourceName);
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -69,8 +71,8 @@ public class DefaultRoleDeprovisionPropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         exchange.getOut().setBody(propagationReporter.getStatuses());
-    }    
-    
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
index 30fe08d..90d37dd 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -40,25 +40,27 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultRoleUpdatePropagation implements Processor{
+public class DefaultRoleUpdatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();            
-        RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);   
+    public void process(Exchange exchange) {
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
+        RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
-        
+
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
-                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(),excludedResource);
+                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(), excludedResource);
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -67,11 +69,11 @@ public class DefaultRoleUpdatePropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult(), propagationReporter.getStatuses());
-        
+
         exchange.getOut().setBody(result);
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
index 3ffa5b6..f3d9d74 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserConfirmPwdResetPropagation.java
@@ -35,17 +35,18 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserConfirmPwdResetPropagation implements Processor{
+public class DefaultUserConfirmPwdResetPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserConfirmPwdResetPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
+    public void process(Exchange exchange) {
         SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
@@ -56,6 +57,6 @@ public class DefaultUserConfirmPwdResetPropagation implements Processor{
         } catch (PropagationException e) {
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
-        }                
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
index 3d2b18d..82ba0ab 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -40,24 +39,25 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserCreatePropagation implements Processor{
+public class DefaultUserCreatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserCreatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-      
-        if((exchange.getIn().getBody() instanceof WorkflowResult)){
-            
-            WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();            
+    public void process(Exchange exchange) {
+
+        if ((exchange.getIn().getBody() instanceof WorkflowResult)) {
+
+            WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();
             UserTO actual = exchange.getProperty("actual", UserTO.class);
             Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
-            
+
             List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
                     created, actual.getPassword(), actual.getVirAttrs(), excludedResource, actual.getMemberships());
             PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
@@ -68,11 +68,12 @@ public class DefaultUserCreatePropagation implements Processor{
                 LOG.error("Error propagation primary resource {}", e);
                 propagationReporter.onPrimaryResourceFailure(tasks);
             }
-            
-            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(created.getResult().getKey(), propagationReporter.getStatuses());         
+
+            Map.Entry<Long, List<PropagationStatus>> result =
+                    new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(created.getResult().getKey(),
+                            propagationReporter.getStatuses());
             exchange.getOut().setBody(result);
-        }               
+        }
     }
-    
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
index b8fa699..3f80459 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.List;
@@ -35,28 +34,30 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserDeletePropagation implements Processor{
-    
+public class DefaultUserDeletePropagation implements Processor {
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeletePropagation.class);
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
     public void process(Exchange exchange) throws Exception {
-        
-        Long userId = (Long) exchange.getIn().getBody();       
+
+        Long userId = (Long) exchange.getIn().getBody();
         LOG.info("UserId {} ", userId);
-        
-        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
-        
+
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+
         // Note here that we can only notify about "delete", not any other
         // task defined in workflow process definition: this because this
         // information could only be available after uwfAdapter.delete(), which
         // will also effectively remove user from db, thus making virtually
         // impossible by NotificationManager to fetch required user information
-        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(userId,excludedResource);
+        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(userId, excludedResource);
 
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
@@ -66,8 +67,8 @@ public class DefaultUserDeletePropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         exchange.setProperty("statuses", propagationReporter.getStatuses());
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
index 2d2eba9..a529dea 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -37,28 +37,30 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserDeprovisionPropagation implements Processor{
+public class DefaultUserDeprovisionPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserDeprovisionPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         Long userId = exchange.getIn().getBody(Long.class);
         List<String> resources = exchange.getProperty("resources", List.class);
-        
-        final SyncopeUser user = binder.getUserFromId(userId);        
-        
+
+        final SyncopeUser user = binder.getUserFromId(userId);
+
         final Set<String> noPropResourceName = user.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
+
         final List<PropagationTask> tasks =
                 propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
         final PropagationReporter propagationReporter =
@@ -69,8 +71,8 @@ public class DefaultUserDeprovisionPropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         exchange.getOut().setBody(propagationReporter.getStatuses());
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
index 8bbc246..cc167d7 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -42,22 +41,24 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserStatusPropagation implements Processor{
-    
+public class DefaultUserStatusPropagation implements Processor {
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserStatusPropagation.class);
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
+    public void process(Exchange exchange) {
+
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
-        
+
         SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);
         StatusMod statusMod = exchange.getProperty("statusMod", StatusMod.class);
-        
+
         Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
         resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
 
@@ -71,8 +72,9 @@ public class DefaultUserStatusPropagation implements Processor{
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
         }
-        
-        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), propReporter.getStatuses());
-        exchange.getOut().setBody(result); 
-    }    
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult(), propReporter.getStatuses());
+        exchange.getOut().setBody(result);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
index 48eb3d9..a931a5b 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -42,39 +41,44 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserUpdateInSyncPropagation implements Processor{
+public class DefaultUserUpdateInSyncPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdateInSyncPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
+
     @Autowired
     protected UserDAO userDAO;
-    
+
     @Override
-    public void process(Exchange exchange){
-                 
-            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();            
+    public void process(Exchange exchange) {
+
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
+
+        Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
+
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
+
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated, updated.getResult().getKey().
+                getPassword() != null, excludedResource);
 
-            Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);            
-                              
-            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                    getBean(PropagationReporter.class);
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
 
-            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResource);
-                
-            try {
-                    taskExecutor.execute(tasks, propagationReporter);
-            } catch (PropagationException e) {
-                    LOG.error("Error propagation primary resource", e);
-                    propagationReporter.onPrimaryResourceFailure(tasks);
-            }
-            
-            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
-            exchange.getOut().setBody(result);            
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        exchange.getOut().setBody(result);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index c8ffe34..a94bea5 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap;
@@ -45,78 +44,81 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserUpdatePropagation implements Processor{
+public class DefaultUserUpdatePropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserUpdatePropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected UserDataBinder binder;
-    
+
     @Override
-    public void process(Exchange exchange){
-                 
-            WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();            
-            UserMod actual = exchange.getProperty("actual", UserMod.class);
-            boolean removeMemberships = exchange.getProperty("removeMemberships", boolean.class);
-            
-            // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
-            /*for (Long membershipId : actual.getMembershipsToRemove()) {
-                if (!binder.fillMembershipVirtual(
-                        null,
-                        null,
-                        membershipId,
-                        Collections.<String>emptySet(),
-                        Collections.<AttributeMod>emptySet(),
-                        true).isEmpty()) {
+    public void process(Exchange exchange) {
 
-                    removeMemberships = true;
-                }
-            }*/
-            
-            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
-            if (tasks.isEmpty()) {
-                // SYNCOPE-459: take care of user virtual attributes ...
-                final PropagationByResource propByResVirAttr = binder.fillVirtual(
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
+        UserMod actual = exchange.getProperty("actual", UserMod.class);
+        boolean removeMemberships = exchange.getProperty("removeMemberships", boolean.class);
+
+        // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
+            /* for (Long membershipId :
+         * actual.getMembershipsToRemove()) {
+         * if (!binder.fillMembershipVirtual(
+         * null,
+         * null,
+         * membershipId,
+         * Collections.<String>emptySet(),
+         * Collections.<AttributeMod>emptySet(),
+         * true).isEmpty()) {
+         *
+         * removeMemberships = true;
+         * }
+         * } */
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
+        if (tasks.isEmpty()) {
+            // SYNCOPE-459: take care of user virtual attributes ...
+            final PropagationByResource propByResVirAttr = binder.fillVirtual(
+                    updated.getResult().getKey().getId(),
+                    actual.getVirAttrsToRemove(),
+                    actual.getVirAttrsToUpdate());
+            // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
+            // not required, take care also of membership virtual attributes
+            boolean addOrUpdateMemberships = false;
+            for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
+                if (!binder.fillMembershipVirtual(
                         updated.getResult().getKey().getId(),
-                        actual.getVirAttrsToRemove(),
-                        actual.getVirAttrsToUpdate());
-                // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
-                // not required, take care also of membership virtual attributes
-                boolean addOrUpdateMemberships = false;
-                for (MembershipMod membershipMod : actual.getMembershipsToAdd()) {
-                    if (!binder.fillMembershipVirtual(
-                            updated.getResult().getKey().getId(),
-                            membershipMod.getRole(),
-                            null,
-                            membershipMod.getVirAttrsToRemove(),
-                            membershipMod.getVirAttrsToUpdate(),
-                            false).isEmpty()) {
+                        membershipMod.getRole(),
+                        null,
+                        membershipMod.getVirAttrsToRemove(),
+                        membershipMod.getVirAttrsToUpdate(),
+                        false).isEmpty()) {
 
-                        addOrUpdateMemberships = true;
-                    }
+                    addOrUpdateMemberships = true;
                 }
-                tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
-                        ? propagationManager.getUserUpdateTaskIds(updated, false, null)
-                        : Collections.<PropagationTask>emptyList());
             }
+            tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
+                    ? propagationManager.getUserUpdateTaskIds(updated, false, null)
+                    : Collections.<PropagationTask>emptyList());
+        }
 
-            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                    getBean(PropagationReporter.class);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
 
-            if (!tasks.isEmpty()) {
-                try {
-                    taskExecutor.execute(tasks, propagationReporter);
-                } catch (PropagationException e) {
-                    LOG.error("Error propagation primary resource", e);
-                    propagationReporter.onPrimaryResourceFailure(tasks);
-                }
+        if (!tasks.isEmpty()) {
+            try {
+                taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                LOG.error("Error propagation primary resource", e);
+                propagationReporter.onPrimaryResourceFailure(tasks);
             }
-            
-            Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
-            exchange.getOut().setBody(result);            
+        }
+
+        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+                updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        exchange.getOut().setBody(result);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
index e20c84e..88cd160 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.AbstractMap.SimpleEntry;
@@ -35,19 +34,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class DefaultUserWFSuspendPropagation implements Processor{
+public class DefaultUserWFSuspendPropagation implements Processor {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserWFSuspendPropagation.class);
-    
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Override
-    public void process(Exchange exchange){
-                 
-        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();            
+    public void process(Exchange exchange) {
+
+        WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
         Boolean suspend = exchange.getProperty("suspend", Boolean.class);
 
         if (suspend) {
@@ -62,5 +62,5 @@ public class DefaultUserWFSuspendPropagation implements Processor{
             taskExecutor.execute(tasks);
         }
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
index b2acdfb..7cb7dfa 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel.processors;
 
 import java.util.Map;
@@ -33,42 +32,43 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class UserStatusOnSync implements Processor{
-    
+public class UserStatusOnSync implements Processor {
+
     private static final Logger LOG = LoggerFactory.getLogger(UserStatusOnSync.class);
-    
+
     @Autowired
     protected UserDAO userDAO;
+
     @Autowired
     protected UserWorkflowAdapter uwfAdapter;
-    
+
     @Override
-    public void process(Exchange exchange){
-        
-        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();                    
-          
+    public void process(Exchange exchange) {
+
+        WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
+
         Boolean enabled = exchange.getProperty("enabled", Boolean.class);
         Long id = exchange.getProperty("id", Long.class);
-                
+
         if (enabled != null) {
-             SyncopeUser user = userDAO.find(id);
+            SyncopeUser user = userDAO.find(id);
 
-             WorkflowResult<Long> enableUpdate = null;
-             if (user.isSuspended() == null) {
-                 enableUpdate = uwfAdapter.activate(id, null);
-             } else if (enabled && user.isSuspended()) {
-                 enableUpdate = uwfAdapter.reactivate(id);
-             } else if (!enabled && !user.isSuspended()) {
-                 enableUpdate = uwfAdapter.suspend(id);
-             }
+            WorkflowResult<Long> enableUpdate = null;
+            if (user.isSuspended() == null) {
+                enableUpdate = uwfAdapter.activate(id, null);
+            } else if (enabled && user.isSuspended()) {
+                enableUpdate = uwfAdapter.reactivate(id);
+            } else if (!enabled && !user.isSuspended()) {
+                enableUpdate = uwfAdapter.suspend(id);
+            }
 
-             if (enableUpdate != null) {
-                 if (enableUpdate.getPropByRes() != null) {
-                     updated.getPropByRes().merge(enableUpdate.getPropByRes());
-                     updated.getPropByRes().purge();
-                 }
-                 updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
-             }
-       }
+            if (enableUpdate != null) {
+                if (enableUpdate.getPropByRes() != null) {
+                    updated.getPropByRes().merge(enableUpdate.getPropByRes());
+                    updated.getPropByRes().purge();
+                }
+                updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/quartz/package-info.java b/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
index 9447e7d..e2121f2 100644
--- a/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/quartz/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.quartz;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java b/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
index 146b23d..e22fa92 100644
--- a/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
+++ b/core/src/main/java/org/apache/syncope/core/report/ReportletConfClass.java
@@ -25,7 +25,7 @@ import java.lang.annotation.Target;
 
 import org.apache.syncope.common.report.ReportletConf;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 public @interface ReportletConfClass {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java b/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
index 992df5f..d6e5e4c 100644
--- a/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
+++ b/core/src/main/java/org/apache/syncope/core/report/cocoon/TextSerializer.java
@@ -98,4 +98,4 @@ public class TextSerializer extends XMLSerializer {
         serializer.setMethod(TXT);
         return serializer;
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
index a4e53b8..b02bef8 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java
@@ -217,7 +217,7 @@ public class LoggerController extends AbstractTransactionalController<LoggerTO>
             final String packageSearchPath =
                     ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
                     + ClassUtils.convertClassNameToResourcePath(
-                    SystemPropertyUtils.resolvePlaceholders(this.getClass().getPackage().getName()))
+                            SystemPropertyUtils.resolvePlaceholders(this.getClass().getPackage().getName()))
                     + "/" + "**/*.class";
 
             final Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
@@ -239,7 +239,7 @@ public class LoggerController extends AbstractTransactionalController<LoggerTO>
                     }
                 }
             }
-            
+
             //SYNCOPE-608
             final EventCategoryTO authenticationControllerEvents = new EventCategoryTO();
             authenticationControllerEvents.setCategory("AuthenticationController");

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
index 701dc5b..3a0f9d6 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RoleController.java
@@ -95,7 +95,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
 
     @Resource(name = "anonymousUser")
     private String anonymousUser;
-    
+
     @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager provisioningManager;
 
@@ -259,7 +259,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         LOG.debug("Transformed: {}", actual);
 
         Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(roleMod);
-        
+
         final RoleTO updatedTO = binder.getRoleTO(updated.getKey());
         updatedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return updatedTO;
@@ -281,7 +281,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         }
 
         List<PropagationStatus> statuses = provisioningManager.delete(roleId);
-        
+
         RoleTO roleTO = new RoleTO();
         roleTO.setId(roleId);
 
@@ -318,7 +318,7 @@ public class RoleController extends AbstractSubjectController<RoleTO, RoleMod> {
         roleMod.setId(roleId);
         roleMod.getResourcesToRemove().addAll(resources);
         final Long updatedResult = provisioningManager.unlink(roleMod);
- 
+
         return binder.getRoleTO(updatedResult);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
index 117d10f..f905f2c 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/RouteController.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.rest.controller;
 
 import java.lang.reflect.Method;
@@ -36,57 +35,58 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 @Component
-public class RouteController extends AbstractTransactionalController<RouteTO>{
-    
+public class RouteController extends AbstractTransactionalController<RouteTO> {
+
     private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RouteDataBinder.class);
-    
+
     @Autowired
     private RouteDAO routeDao;
-    
+
     @Autowired
     private RouteDataBinder binder;
-    
+
     @Autowired
     private SyncopeCamelContext context;
-    
-    
+
     @PreAuthorize("hasRole('ROUTE_LIST')")
     @Transactional(readOnly = true)
-    public List<RouteTO> listRoutes(){
+    public List<RouteTO> listRoutes() {
         List<RouteTO> routes = new ArrayList<RouteTO>();
         Iterator it = routeDao.findAll().iterator();
-        while(it.hasNext()){
+        while (it.hasNext()) {
             routes.add(binder.getRouteTO((CamelRoute) it.next()));
         }
         return routes;
     }
-    
+
     @PreAuthorize("hasRole('ROUTE_READ')")
     @Transactional(readOnly = true)
-    public RouteTO readRoute(Long id){
+    public RouteTO readRoute(Long id) {
         CamelRoute route = routeDao.find(id);
-        if (route==null) 
-            throw new NotFoundException("Route with id="+id);
-        
+        if (route == null) {
+            throw new NotFoundException("Route with id=" + id);
+        }
+
         return binder.getRouteTO(route);
     }
-    
+
     @PreAuthorize("hasRole('ROUTE_UPDATE')")
-    public void updateRoute(RouteTO routeTO){
+    public void updateRoute(RouteTO routeTO) {
 
         CamelRoute route = routeDao.find(routeTO.getId());
-        if (route==null) 
-            throw new NotFoundException("Route with id="+route.getId());
+        if (route == null) {
+            throw new NotFoundException("Route with id=" + route.getId());
+        }
         route.setRouteContent(routeTO.getRouteContent());
-        routeDao.save(route);       
+        routeDao.save(route);
         LOG.info("UPDATING ROUTE WITH ID {} ", routeTO.getId());
         LOG.info("NEW ROUTE CONTENT {} ", routeTO.getRouteContent());
         context.reloadContext(routeDao, routeTO.getId());
-    }   
-    
+    }
+
     @Override
     protected RouteTO resolveReference(Method method, Object... args) throws UnresolvedReferenceException {
         throw new UnresolvedReferenceException();
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
index 0a30a86..0607a5f 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserController.java
@@ -96,7 +96,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
 
     @Autowired
     protected AttributableTransformer attrTransformer;
-    
+
     @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager provisioningManager;
 
@@ -212,8 +212,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         UserTO actual = attrTransformer.transform(userTO);
         LOG.debug("Transformed: {}", actual);
 
-        Map.Entry<Long, List<PropagationStatus>>
-                created = provisioningManager.create(actual,storePassword);
+        Map.Entry<Long, List<PropagationStatus>> created = provisioningManager.create(actual, storePassword);
 
         final UserTO savedTO = binder.getUserTO(created.getKey());
         savedTO.getPropagationStatusTOs().addAll(created.getValue());
@@ -238,7 +237,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
         // AttributableMod transformation (if configured)
         UserMod actual = attrTransformer.transform(userMod);
         LOG.debug("Transformed: {}", actual);
-        
+
         //CAMEL
         // SYNCOPE-501: check if there are memberships to be removed with virtual attributes assigned
         boolean removeMemberships = false;
@@ -254,15 +253,16 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
                 removeMemberships = true;
             }
         }
-        
-        Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual,removeMemberships);
+
+        Map.Entry<Long, List<PropagationStatus>> updated = provisioningManager.update(actual, removeMemberships);
 
         final UserTO updatedTO = binder.getUserTO(updated.getKey());
         updatedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return updatedTO;
     }
 
-     protected Map.Entry<Long, List<PropagationStatus>> setStatusOnWfAdapter(final SyncopeUser user, final StatusMod statusMod) {
+    protected Map.Entry<Long, List<PropagationStatus>> setStatusOnWfAdapter(final SyncopeUser user,
+            final StatusMod statusMod) {
         Map.Entry<Long, List<PropagationStatus>> updated;
 
         switch (statusMod.getType()) {
@@ -289,8 +289,7 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     public UserTO status(final StatusMod statusMod) {
         SyncopeUser user = binder.getUserFromId(statusMod.getId());
 
-        Map.Entry<Long, List<PropagationStatus>>
-            updated = setStatusOnWfAdapter(user, statusMod);
+        Map.Entry<Long, List<PropagationStatus>> updated = setStatusOnWfAdapter(user, statusMod);
         final UserTO savedTO = binder.getUserTO(updated.getKey());
         savedTO.getPropagationStatusTOs().addAll(updated.getValue());
         return savedTO;
@@ -477,8 +476,8 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
     @Transactional(rollbackFor = { Throwable.class })
     @Override
     public UserTO deprovision(final Long userId, final Collection<String> resources) {
-        final SyncopeUser user = binder.getUserFromId(userId);        
-        
+        final SyncopeUser user = binder.getUserFromId(userId);
+
         List<PropagationStatus> statuses = provisioningManager.deprovision(userId, resources);
 
         final UserTO updatedUserTO = binder.getUserTO(user);
@@ -535,18 +534,18 @@ public class UserController extends AbstractSubjectController<UserTO, UserMod> {
 
         throw new UnresolvedReferenceException();
     }
-    
-    public PrintStream getDefinition() throws FileNotFoundException{
-        /*String result = "";
-        if(provisioningManager instanceof CamelUserProvisioningManager){
-            List l = ((CamelUserProvisioningManager)provisioningManager).getRoutes();
-            Iterator<CamelRoute> it = l.iterator();
-            
-            while(it.hasNext()){
-                result += it.next().getRouteContent();
-            }                        
-        }
-        return new PrintStream(result);*/
+
+    public PrintStream getDefinition() throws FileNotFoundException {
+        /* String result = "";
+         * if(provisioningManager instanceof CamelUserProvisioningManager){
+         * List l = ((CamelUserProvisioningManager)provisioningManager).getRoutes();
+         * Iterator<CamelRoute> it = l.iterator();
+         *
+         * while(it.hasNext()){
+         * result += it.next().getRouteContent();
+         * }
+         * }
+         * return new PrintStream(result); */
         return null;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
index cfcaee4..2d5a433 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java
@@ -52,9 +52,9 @@ public class ReportDataBinder {
      */
     private static final Logger LOG = LoggerFactory.getLogger(ReportDataBinder.class);
 
-    private static final String[] IGNORE_REPORT_PROPERTIES = {"id", "reportlets", "executions"};
+    private static final String[] IGNORE_REPORT_PROPERTIES = { "id", "reportlets", "executions" };
 
-    private static final String[] IGNORE_REPORT_EXECUTION_PROPERTIES = {"id", "report", "execResult"};
+    private static final String[] IGNORE_REPORT_EXECUTION_PROPERTIES = { "id", "report", "execResult" };
 
     @Autowired
     private ReportExecDAO reportExecDAO;
@@ -65,7 +65,7 @@ public class ReportDataBinder {
     @Autowired
     private ImplementationClassNamesLoader classNamesLoader;
 
-    @SuppressWarnings({"unchecked", "rawtypes"})
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     public Set<Class<Reportlet>> getAllReportletClasses() {
         Set<Class<Reportlet>> reportletClasses = new HashSet<Class<Reportlet>>();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
index c1016e6..824bd52 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/data/RouteDataBinder.java
@@ -16,10 +16,8 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.rest.data;
 
-
 import org.apache.syncope.common.to.RouteTO;
 import org.apache.syncope.common.util.BeanUtils;
 import org.apache.syncope.core.persistence.beans.CamelRoute;
@@ -28,11 +26,11 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class RouteDataBinder {
-  
+
     private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RouteDataBinder.class);
-    
-    public RouteTO getRouteTO(CamelRoute route){        
-              
+
+    public RouteTO getRouteTO(CamelRoute route) {
+
         RouteTO routeTO = new RouteTO();
         BeanUtils.copyProperties(route, routeTO);
         return routeTO;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java b/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
index bcc015d..e625533 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/utils/QueryResourceInfoComparator.java
@@ -55,8 +55,8 @@ public class QueryResourceInfoComparator extends OperationResourceInfoComparator
         return op1Counter == op2Counter
                 ? 0
                 : op1Counter < op2Counter
-                ? 1
-                : -1;
+                        ? 1
+                        : -1;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java b/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
index e8f0e67..f3a9edf 100644
--- a/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
+++ b/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
@@ -202,8 +202,8 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R
         if (iee != null) {
             ClientExceptionType exType =
                     iee.getEntityClassSimpleName().endsWith("Policy")
-                    ? ClientExceptionType.InvalidPolicy
-                    : ClientExceptionType.valueOf("Invalid" + iee.getEntityClassSimpleName());
+                            ? ClientExceptionType.InvalidPolicy
+                            : ClientExceptionType.valueOf("Invalid" + iee.getEntityClassSimpleName());
 
             ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
             builder.header(RESTHeaders.ERROR_CODE, exType.getHeaderValue());

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java b/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
index 5c95114..b0a6c8e 100644
--- a/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
+++ b/core/src/main/java/org/apache/syncope/core/security/AsymmetricCipher.java
@@ -35,6 +35,7 @@ import javax.crypto.Cipher;
 public class AsymmetricCipher {
 
     final private static String xform = "RSA/NONE/PKCS1Padding";
+
     final private static String algorithm = "RSA";
 
     public static byte[] encrypt(byte[] inpBytes, PublicKey key) throws Exception {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
index 4d5c09f..3c1b6fa 100644
--- a/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java
@@ -70,7 +70,7 @@ public class ConnectorServiceImpl extends AbstractServiceImpl implements Connect
             final boolean includeSpecial) {
 
         connInstanceTO.setId(connInstanceId);
-        
+
         List<String> schemaNames = controller.getSchemaNames(connInstanceTO, includeSpecial);
         List<SchemaTO> result = new ArrayList<SchemaTO>(schemaNames.size());
         for (String name : schemaNames) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
index 2fc947c..020414d 100644
--- a/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java
@@ -96,7 +96,7 @@ public class PolicyServiceImpl extends AbstractServiceImpl implements PolicyServ
     @Override
     public <T extends AbstractPolicyTO> void update(final Long policyId, final T policyTO) {
         policyTO.setId(policyId);
-        
+
         switch (policyTO.getType()) {
             case ACCOUNT:
             case GLOBAL_ACCOUNT:

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
index 1c44765..ecc323e 100644
--- a/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/RouteServiceImpl.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.services;
 
 import java.util.List;
@@ -27,20 +26,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
-public class RouteServiceImpl extends AbstractServiceImpl implements RouteService{
+public class RouteServiceImpl extends AbstractServiceImpl implements RouteService {
 
     @Autowired
     private RouteController controller;
-    
+
     @Override
     public List<RouteTO> getRoutes() {
-        
-        return  controller.listRoutes();
+
+        return controller.listRoutes();
     }
-    
+
     @Override
-    public RouteTO getRoute(Long id){
-        
+    public RouteTO getRoute(Long id) {
+
         return controller.readRoute(id);
     }
 
@@ -48,5 +47,5 @@ public class RouteServiceImpl extends AbstractServiceImpl implements RouteServic
     public void importRoute(Long id, RouteTO route) {
         controller.updateRoute(route);
     }
-    
-}
\ No newline at end of file
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
index fa88e7c..7ab3691 100644
--- a/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/services/WorkflowServiceImpl.java
@@ -61,8 +61,8 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
     public Response exportDefinition(final SubjectType kind) {
         final MediaType accept =
                 messageContext.getHttpHeaders().getAcceptableMediaTypes().contains(MediaType.APPLICATION_JSON_TYPE)
-                ? MediaType.APPLICATION_JSON_TYPE
-                : MediaType.APPLICATION_XML_TYPE;
+                        ? MediaType.APPLICATION_JSON_TYPE
+                        : MediaType.APPLICATION_XML_TYPE;
 
         StreamingOutput sout = new StreamingOutput() {
 
@@ -104,8 +104,8 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
     public void importDefinition(final SubjectType kind, final String definition) {
         final MediaType contentType =
                 messageContext.getHttpHeaders().getMediaType().equals(MediaType.APPLICATION_JSON_TYPE)
-                ? MediaType.APPLICATION_JSON_TYPE
-                : MediaType.APPLICATION_XML_TYPE;
+                        ? MediaType.APPLICATION_JSON_TYPE
+                        : MediaType.APPLICATION_XML_TYPE;
 
         if (kind == SubjectType.USER) {
             controller.importUserDefinition(contentType, definition);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java b/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
index 42548d1..0a809be 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
@@ -162,7 +162,8 @@ public interface SyncActions extends AbstractSyncActions<AbstractSyncopeResultHa
      * Action to be executed after each local user / role synchronization.
      *
      * @param profile profile of the synchronization being executed.
-     * @param delta retrieved synchronization information (may be modified by 'beforeProvision/beforeUpdate/beforeDelete')
+     * @param delta retrieved synchronization information (may be modified by
+     * 'beforeProvision/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

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java b/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
index 5ebca8a..7f1986a 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/SyncResult.java
@@ -28,9 +28,12 @@ import org.apache.syncope.common.types.ResourceOperation;
 import org.apache.syncope.common.types.TraceLevel;
 
 public class SyncResult {
+
     public enum Status {
+
         SUCCESS,
         FAILURE
+
     }
 
     private String message;
@@ -115,8 +118,8 @@ public class SyncResult {
             // All
             return String.format("%s %s (id/name): %d/%s %s", operation, status, id, name,
                     StringUtils.isBlank(message)
-                    ? ""
-                    : "with message: " + message);
+                            ? ""
+                            : "with message: " + message);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
index f8cb658..7036ab7 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
@@ -114,7 +114,6 @@ public abstract class AbstractSubjectPushResultHandler extends AbstractSyncopeRe
         String operation = null;
 
         // Try to read remote object (user / group) BEFORE any actual operation
-
         final String accountId = MappingUtil.getAccountIdValue(
                 subject, profile.getSyncTask().getResource(), getMapping().getAccountIdItem());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
index cabeb4f..26ff30b 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncJob.java
@@ -316,7 +316,7 @@ public abstract class AbstractSyncJob<T extends AbstractSyncTask, A extends Abst
             } catch (Exception e) {
                 final String msg = String.
                         format("Connector instance bean for resource %s and connInstance %s not found",
-                        syncTask.getResource(), syncTask.getResource().getConnector());
+                                syncTask.getResource(), syncTask.getResource().getConnector());
 
                 throw new JobExecutionException(msg, e);
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
index 78ada92..0c27004 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSyncopeResultHandler.java
@@ -43,7 +43,7 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      * Logger.
      */
     protected static final Logger LOG = LoggerFactory.getLogger(AbstractSyncopeResultHandler.class);
-    
+
     /**
      * User data binder.
      */
@@ -102,10 +102,10 @@ public abstract class AbstractSyncopeResultHandler<T extends AbstractSyncTask, A
      * Sync profile.
      */
     protected SyncProfile<T, A> profile;
-    
+
     @Resource(name = "userProvisioningManager")
     protected UserProvisioningManager userProvisioningManager;
-    
+
     @Resource(name = "roleProvisioningManager")
     protected RoleProvisioningManager roleProvisioningManager;
 


[17/53] [abbrv] syncope git commit: Code formatting with netbeans

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java b/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
index 65f43cc..2304fa4 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
@@ -66,7 +66,7 @@ public class LDAPPasswordSyncActions extends DefaultSyncActions {
 
         return delta;
     }
-    
+
     @Transactional(readOnly = true)
     @Override
     public <T extends AbstractAttributableTO, K extends AbstractAttributableMod> SyncDelta beforeUpdate(
@@ -74,15 +74,15 @@ public class LDAPPasswordSyncActions extends DefaultSyncActions {
             final SyncDelta delta,
             final T subject,
             final K subjectMod) throws JobExecutionException {
-        
+
         if (subjectMod instanceof UserMod) {
-            String modPassword = ((UserMod)subjectMod).getPassword();
+            String modPassword = ((UserMod) subjectMod).getPassword();
             parseEncodedPassword(modPassword);
         }
-        
+
         return delta;
     }
-    
+
     private void parseEncodedPassword(String password) {
         if (password != null && password.startsWith("{")) {
             int closingBracketIndex = password.indexOf('}');

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
index e544687..4e83e66 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/RoleSyncResultHandler.java
@@ -86,8 +86,8 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         RoleTO roleTO = RoleTO.class.cast(subjectTO);
 
-        Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.createInSync
-                           (roleTO, roleOwnerMap, Collections.singleton(profile.getSyncTask().getResource().getName()));
+        Map.Entry<Long, List<PropagationStatus>> created = roleProvisioningManager.createInSync(roleTO, roleOwnerMap,
+                Collections.singleton(profile.getSyncTask().getResource().getName()));
 
         roleTO = roleDataBinder.getRoleTO(created.getKey());
 
@@ -127,7 +127,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         RoleMod roleMod = RoleMod.class.cast(subjectMod);
 
         Map.Entry<Long, List<PropagationStatus>> updated = roleProvisioningManager.update(roleMod);
-                
+
         //moved after role provisioning manager
         String roleOwner = null;
         for (AttributeMod attrMod : roleMod.getAttrsToUpdate()) {
@@ -140,7 +140,7 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
         }
 
         final RoleTO after = roleDataBinder.getRoleTO(updated.getKey());
-        
+
         result.setName(getName(after));
 
         return after;
@@ -170,6 +170,6 @@ public class RoleSyncResultHandler extends AbstractSubjectSyncResultHandler {
             LOG.error("Could not propagate user " + id, e);
         }
 
-        roleProvisioningManager.delete(id); 
+        roleProvisioningManager.delete(id);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
index e5bdc06..6802726 100644
--- a/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/sync/impl/UserSyncResultHandler.java
@@ -82,8 +82,8 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
         //Delegate User Workflow Creation and its Propagation to provisioning manager
-        Map.Entry<Long, List<PropagationStatus>>
-            created = userProvisioningManager.create(userTO, true, true, enabled,Collections.singleton(profile.getSyncTask().getResource().getName()));                             
+        Map.Entry<Long, List<PropagationStatus>> created = userProvisioningManager.create(userTO, true, true, enabled,
+                Collections.singleton(profile.getSyncTask().getResource().getName()));
 
         userTO = userDataBinder.getUserTO(created.getKey());
 
@@ -121,51 +121,51 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
 
         final UserMod userMod = UserMod.class.cast(subjectMod);
 
-        /*WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
-        try {
-            updated = uwfAdapter.update(userMod);
-        } catch (Exception e) {
-            LOG.error("Update of user {} failed, trying to sync its status anyway (if configured)", before.getId(), e);
-
-            result.setStatus(SyncResult.Status.FAILURE);
-            result.setMessage("Update failed, trying to sync status anyway (if configured)\n"
-                    + ExceptionUtils.getRootCauseMessage(e));
-
-            updated = new WorkflowResult<Map.Entry<UserMod, Boolean>>(
-                    new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false),
-                    new PropagationByResource(),
-                    new HashSet<String>());
-        }*/
-
+        /* WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
+         * try {
+         * updated = uwfAdapter.update(userMod);
+         * } catch (Exception e) {
+         * LOG.error("Update of user {} failed, trying to sync its status anyway (if configured)", before.getId(), e);
+         *
+         * result.setStatus(SyncResult.Status.FAILURE);
+         * result.setMessage("Update failed, trying to sync status anyway (if configured)\n"
+         * + ExceptionUtils.getRootCauseMessage(e));
+         *
+         * updated = new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+         * new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, false),
+         * new PropagationByResource(),
+         * new HashSet<String>());
+         * } */
         final Boolean enabled = syncUtilities.readEnabled(delta.getObject(), profile.getSyncTask());
-        /*if (enabled != null) {
-            SyncopeUser user = userDAO.find(before.getId());
-
-            WorkflowResult<Long> enableUpdate = null;
-            if (user.isSuspended() == null) {
-                enableUpdate = uwfAdapter.activate(before.getId(), null);
-            } else if (enabled && user.isSuspended()) {
-                enableUpdate = uwfAdapter.reactivate(before.getId());
-            } else if (!enabled && !user.isSuspended()) {
-                enableUpdate = uwfAdapter.suspend(before.getId());
-            }
-
-            if (enableUpdate != null) {
-                if (enableUpdate.getPropByRes() != null) {
-                    updated.getPropByRes().merge(enableUpdate.getPropByRes());
-                    updated.getPropByRes().purge();
-                }
-                updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
-            }
-        }
-
-        final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
-                updated, updated.getResult().getKey().getPassword() != null,
-                Collections.singleton(profile.getSyncTask().getResource().getName()));
-
-        taskExecutor.execute(tasks);*/
-                 
-        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.updateInSync(userMod, before.getId(), result,enabled, Collections.singleton(profile.getSyncTask().getResource().getName()));        
+        /* if (enabled != null) {
+         * SyncopeUser user = userDAO.find(before.getId());
+         *
+         * WorkflowResult<Long> enableUpdate = null;
+         * if (user.isSuspended() == null) {
+         * enableUpdate = uwfAdapter.activate(before.getId(), null);
+         * } else if (enabled && user.isSuspended()) {
+         * enableUpdate = uwfAdapter.reactivate(before.getId());
+         * } else if (!enabled && !user.isSuspended()) {
+         * enableUpdate = uwfAdapter.suspend(before.getId());
+         * }
+         *
+         * if (enableUpdate != null) {
+         * if (enableUpdate.getPropByRes() != null) {
+         * updated.getPropByRes().merge(enableUpdate.getPropByRes());
+         * updated.getPropByRes().purge();
+         * }
+         * updated.getPerformedTasks().addAll(enableUpdate.getPerformedTasks());
+         * }
+         * }
+         *
+         * final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+         * updated, updated.getResult().getKey().getPassword() != null,
+         * Collections.singleton(profile.getSyncTask().getResource().getName()));
+         *
+         * taskExecutor.execute(tasks); */
+
+        Map.Entry<Long, List<PropagationStatus>> updated = userProvisioningManager.updateInSync(userMod, before.getId(),
+                result, enabled, Collections.singleton(profile.getSyncTask().getResource().getName()));
 
         return userDataBinder.getUserTO(updated.getKey());
     }
@@ -189,7 +189,7 @@ public class UserSyncResultHandler extends AbstractSubjectSyncResultHandler {
     protected void delete(final Long id) {
         try {
             userProvisioningManager.
-                    delete(id,Collections.<String>singleton(profile.getSyncTask().getResource().getName()));
+                    delete(id, Collections.<String>singleton(profile.getSyncTask().getResource().getName()));
         } catch (Exception e) {
             // A propagation failure doesn't imply a synchronization failure.
             // The propagation exception status will be reported into the propagation task execution.

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java b/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
index 138b0fe..0c148b1 100644
--- a/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
+++ b/core/src/main/java/org/apache/syncope/core/util/AttributeDeserializer.java
@@ -77,8 +77,8 @@ class AttributeDeserializer extends JsonDeserializer<Attribute> {
         return Uid.NAME.equals(name)
                 ? new Uid(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
                 : Name.NAME.equals(name)
-                ? new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
-                : AttributeBuilder.build(name, values);
+                        ? new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
+                        : AttributeBuilder.build(name, values);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java b/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
index ea54a90..ccf2e86 100644
--- a/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
+++ b/core/src/main/java/org/apache/syncope/core/util/ContentLoaderHandler.java
@@ -57,16 +57,16 @@ public class ContentLoaderHandler extends DefaultHandler {
         Map<String, Integer> colTypes = jdbcTemplate.query("SELECT * FROM " + tableName,
                 new ResultSetExtractor<Map<String, Integer>>() {
 
-            @Override
-            public Map<String, Integer> extractData(final ResultSet rs) throws SQLException, DataAccessException {
-                Map<String, Integer> colTypes = new HashMap<String, Integer>();
-                for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
-                    colTypes.put(rs.getMetaData().getColumnName(i).toUpperCase(),
-                            rs.getMetaData().getColumnType(i));
-                }
-                return colTypes;
-            }
-        });
+                    @Override
+                    public Map<String, Integer> extractData(final ResultSet rs) throws SQLException, DataAccessException {
+                        Map<String, Integer> colTypes = new HashMap<String, Integer>();
+                        for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
+                            colTypes.put(rs.getMetaData().getColumnName(i).toUpperCase(),
+                                    rs.getMetaData().getColumnType(i));
+                        }
+                        return colTypes;
+                    }
+                });
 
         Object[] parameters = new Object[attrs.getLength()];
         for (int i = 0; i < attrs.getLength(); i++) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/RouteManager.java b/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
index 67ebd82..397d7b0 100644
--- a/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
+++ b/core/src/main/java/org/apache/syncope/core/util/RouteManager.java
@@ -16,24 +16,27 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.util;
 
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.core.persistence.beans.CamelRoute;
 
-
 public class RouteManager {
+
     private static List<CamelRoute> routelist;
-    
-    public static void addElement(CamelRoute route){
-        if(routelist == null) routelist= new ArrayList<CamelRoute>();
+
+    public static void addElement(CamelRoute route) {
+        if (routelist == null) {
+            routelist = new ArrayList<CamelRoute>();
+        }
         routelist.add(route);
     }
-    
-    public static List<CamelRoute> getRoutes(){
-        if(routelist == null) routelist= new ArrayList<CamelRoute>();
+
+    public static List<CamelRoute> getRoutes() {
+        if (routelist == null) {
+            routelist = new ArrayList<CamelRoute>();
+        }
         return routelist;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java b/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
index 860a153..b11d0a5 100644
--- a/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
+++ b/core/src/main/java/org/apache/syncope/core/util/SecureRandomUtil.java
@@ -23,21 +23,21 @@ import java.security.SecureRandom;
 import org.apache.commons.lang3.RandomStringUtils;
 
 public class SecureRandomUtil {
-    
+
     private static final SecureRandom RANDOM = new SecureRandom();
 
     public static String generateRandomPassword(final int tokenLength) {
         return RandomStringUtils.random(tokenLength, 0, 0, true, false, null, RANDOM);
     }
-    
+
     public static String generateRandomLetter() {
         return RandomStringUtils.random(1, 0, 0, true, false, null, RANDOM);
     }
-    
+
     public static String generateRandomNumber() {
         return RandomStringUtils.random(1, 0, 0, false, true, null, RANDOM);
     }
-    
+
     public static String generateRandomSpecialCharacter(char[] characters) {
         return RandomStringUtils.random(1, 0, 0, false, false, characters, RANDOM);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java b/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
index 4e82401..30a0324 100644
--- a/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
+++ b/core/src/main/java/org/apache/syncope/core/util/SyncTokenDeserializer.java
@@ -42,19 +42,19 @@ class SyncTokenDeserializer extends JsonDeserializer<SyncToken> {
             value = node.isNull()
                     ? null
                     : node.isBoolean()
-                    ? node.asBoolean()
-                    : node.isDouble()
-                    ? node.asDouble()
-                    : node.isLong()
-                    ? node.asLong()
-                    : node.isInt()
-                    ? node.asInt()
-                    : node.asText();
-            
+                            ? node.asBoolean()
+                            : node.isDouble()
+                                    ? node.asDouble()
+                                    : node.isLong()
+                                            ? node.asLong()
+                                            : node.isInt()
+                                                    ? node.asInt()
+                                                    : node.asText();
+
             if (value instanceof String) {
-                byte[] bytes = ((String)value).getBytes();
+                byte[] bytes = ((String) value).getBytes();
                 if (Base64.isBase64(bytes)) {
-                   value = Base64.decode(bytes);
+                    value = Base64.decode(bytes);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java b/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
index 0e67f5e..2f033f2 100644
--- a/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
+++ b/core/src/main/java/org/apache/syncope/core/util/jexl/JexlUtil.java
@@ -134,8 +134,8 @@ public final class JexlUtil {
                         context.set(fieldName, fieldValue == null
                                 ? ""
                                 : (type.equals(Date.class)
-                                ? DataFormat.format((Date) fieldValue, false)
-                                : fieldValue));
+                                        ? DataFormat.format((Date) fieldValue, false)
+                                        : fieldValue));
 
                         LOG.debug("Add field {} with value {}", fieldName, fieldValue);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/package-info.java b/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
index 2821d3a..b459536 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.workflow;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
index cd40429..b222100 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/role/AbstractRoleWorkflowAdapter.java
@@ -30,7 +30,7 @@ import org.apache.syncope.core.workflow.WorkflowResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-@Transactional(rollbackFor = {Throwable.class})
+@Transactional(rollbackFor = { Throwable.class })
 public abstract class AbstractRoleWorkflowAdapter implements RoleWorkflowAdapter {
 
     @Autowired

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
index f059a9a..8fbc25c 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/AbstractUserWorkflowAdapter.java
@@ -117,7 +117,7 @@ public abstract class AbstractUserWorkflowAdapter implements UserWorkflowAdapter
         doRequestPasswordReset(dataBinder.getUserFromId(userId));
     }
 
-    protected abstract void doConfirmPasswordReset(SyncopeUser user, String token, String password) 
+    protected abstract void doConfirmPasswordReset(SyncopeUser user, String token, String password)
             throws WorkflowException;
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
index 8713261..2157301 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java
@@ -230,7 +230,8 @@ public class NoOpUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     }
 
     @Override
-    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws UnauthorizedRoleException, WorkflowException {
+    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws
+            UnauthorizedRoleException, WorkflowException {
         return create(userTO, false, true);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
index c2844db..0d48227 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/UserWorkflowAdapter.java
@@ -152,7 +152,7 @@ public interface UserWorkflowAdapter extends WorkflowAdapter {
      * @throws UnauthorizedRoleException authorization exception
      * @throws WorkflowException workflow exception
      */
-    void confirmPasswordReset(Long userId, String token, String password) 
+    void confirmPasswordReset(Long userId, String token, String password)
             throws UnauthorizedRoleException, WorkflowException;
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
index 460b73b..adeb9f8 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java
@@ -885,7 +885,8 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     }
 
     @Override
-    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws UnauthorizedRoleException, WorkflowException {
+    public WorkflowResult<Map.Entry<Long, Boolean>> create(UserTO userTO, boolean storePassword) throws
+            UnauthorizedRoleException, WorkflowException {
         return create(userTO, false, storePassword);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
index c91e7e0..f670258 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeGroupManager.java
@@ -106,7 +106,7 @@ public class SyncopeGroupManager implements GroupIdentityManager, SyncopeSession
     public void updateGroup(final Group updatedGroup) {
         throw new UnsupportedOperationException();
     }
-    
+
     @Override
     public boolean isNewGroup(final Group group) {
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
index 42ea38c..9285ed9 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/SyncopeUserManager.java
@@ -121,7 +121,7 @@ public class SyncopeUserManager implements UserIdentityManager, SyncopeSession {
     public void updateUser(final User updatedUser) {
         throw new UnsupportedOperationException();
     }
-    
+
     @Override
     public Picture getUserPicture(final String string) {
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/persistenceContextEMFactory.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/persistenceContextEMFactory.xml b/core/src/main/resources/persistenceContextEMFactory.xml
index 3337dd3..8fe4864 100644
--- a/core/src/main/resources/persistenceContextEMFactory.xml
+++ b/core/src/main/resources/persistenceContextEMFactory.xml
@@ -37,8 +37,8 @@ under the License.
     <property name="jpaPropertyMap">
       <map>
         <!--<entry key="openjpa.Log" value="SQL=TRACE"/>
-        <entry key="openjpa.ConnectionFactoryProperties" 
-               value="PrintParameters=true, PrettyPrint=true, PrettyPrintLineLength=80"/>-->
+ <entry key="openjpa.ConnectionFactoryProperties" 
+        value="PrintParameters=true, PrettyPrint=true, PrettyPrintLineLength=80"/>-->
                 
         <entry key="openjpa.NontransactionalWrite" value="false"/>
         <entry key="openjpa.AutoDetach" value="close, commit, nontx-read, rollback"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/report/staticReportlet2fo.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/report/staticReportlet2fo.xsl b/core/src/main/resources/report/staticReportlet2fo.xsl
index 2b9a971..c123d51 100644
--- a/core/src/main/resources/report/staticReportlet2fo.xsl
+++ b/core/src/main/resources/report/staticReportlet2fo.xsl
@@ -23,62 +23,62 @@ under the License.
                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
                 version="1.0">
 
-    <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
+  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
 
-        <fo:block font-size="14pt" font-weight="bold" space-after="0.5cm">Reportlet: 
-            <xsl:value-of select="@name"/>
-        </fo:block>
+    <fo:block font-size="14pt" font-weight="bold" space-after="0.5cm">Reportlet: 
+      <xsl:value-of select="@name"/>
+    </fo:block>
 
-        <xsl:if test="string-length(string/text()) &gt; 0">
-            <fo:block font-size="11pt">String value: 
-                <xsl:value-of select="string/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(string/text()) &gt; 0">
+      <fo:block font-size="11pt">String value: 
+        <xsl:value-of select="string/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(long/text()) &gt; 0">
-            <fo:block font-size="11pt">Long value: 
-                <xsl:value-of select="long/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(long/text()) &gt; 0">
+      <fo:block font-size="11pt">Long value: 
+        <xsl:value-of select="long/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(double/text()) &gt; 0">
-            <fo:block font-size="11pt">Double value: 
-                <xsl:value-of select="double/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(double/text()) &gt; 0">
+      <fo:block font-size="11pt">Double value: 
+        <xsl:value-of select="double/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(date/text()) &gt; 0">
-            <fo:block font-size="11pt">Date value: 
-                <xsl:value-of select="date/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(date/text()) &gt; 0">
+      <fo:block font-size="11pt">Date value: 
+        <xsl:value-of select="date/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(enum/text()) &gt; 0">
-            <fo:block font-size="11pt">Enum value: 
-                <xsl:value-of select="enum/text()"/>
-            </fo:block>
-        </xsl:if>
+    <xsl:if test="string-length(enum/text()) &gt; 0">
+      <fo:block font-size="11pt">Enum value: 
+        <xsl:value-of select="enum/text()"/>
+      </fo:block>
+    </xsl:if>
 
-        <xsl:if test="string-length(list) &gt; 0">
-            <fo:block font-size="11pt">List values:</fo:block>
+    <xsl:if test="string-length(list) &gt; 0">
+      <fo:block font-size="11pt">List values:</fo:block>
             
-            <fo:list-block provisional-label-separation="4mm" provisional-distance-between-starts="2mm">
-                <xsl:for-each select="list/string">
-                    <xsl:if test="string-length(string/text()) &gt; 0">
-                        <fo:list-item>
-                            <fo:list-item-label end-indent="label-end()">
-                                <fo:block>&#x2022;</fo:block>
-                            </fo:list-item-label>
-                            <fo:list-item-body start-indent="body-start()">
-                                <fo:block>
-                                    <xsl:value-of select="text()"/>
-                                </fo:block>
-                            </fo:list-item-body>
-                        </fo:list-item>
-                    </xsl:if>
-                </xsl:for-each>
-            </fo:list-block>
-        </xsl:if>
+      <fo:list-block provisional-label-separation="4mm" provisional-distance-between-starts="2mm">
+        <xsl:for-each select="list/string">
+          <xsl:if test="string-length(string/text()) &gt; 0">
+            <fo:list-item>
+              <fo:list-item-label end-indent="label-end()">
+                <fo:block>&#x2022;</fo:block>
+              </fo:list-item-label>
+              <fo:list-item-body start-indent="body-start()">
+                <fo:block>
+                  <xsl:value-of select="text()"/>
+                </fo:block>
+              </fo:list-item-body>
+            </fo:list-item>
+          </xsl:if>
+        </xsl:for-each>
+      </fo:list-block>
+    </xsl:if>
         
-    </xsl:template>
+  </xsl:template>
 </xsl:stylesheet>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/report/staticReportlet2html.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/report/staticReportlet2html.xsl b/core/src/main/resources/report/staticReportlet2html.xsl
index 0fb7b28..da0ba85 100644
--- a/core/src/main/resources/report/staticReportlet2html.xsl
+++ b/core/src/main/resources/report/staticReportlet2html.xsl
@@ -22,53 +22,53 @@ under the License.
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 version="1.0">
 
-    <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
-        <h2>Reportlet: 
-            <xsl:value-of select="@name"/>
-        </h2>
+  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
+    <h2>Reportlet: 
+      <xsl:value-of select="@name"/>
+    </h2>
         
-        <xsl:if test="string-length(string/text()) &gt; 0">
-            <p>String value:                 
-                <xsl:value-of select="string/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(string/text()) &gt; 0">
+      <p>String value:                 
+        <xsl:value-of select="string/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(long/text()) &gt; 0">
-            <p>Long value: 
-                <xsl:value-of select="long/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(long/text()) &gt; 0">
+      <p>Long value: 
+        <xsl:value-of select="long/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(double/text()) &gt; 0">
-            <p>Double value: 
-                <xsl:value-of select="double/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(double/text()) &gt; 0">
+      <p>Double value: 
+        <xsl:value-of select="double/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(date/text()) &gt; 0">
-            <p>Date value: 
-                <xsl:value-of select="date/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(date/text()) &gt; 0">
+      <p>Date value: 
+        <xsl:value-of select="date/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(enum/text()) &gt; 0">
-            <p>Enum value: 
-                <xsl:value-of select="enum/text()"/>
-            </p>
-        </xsl:if>
+    <xsl:if test="string-length(enum/text()) &gt; 0">
+      <p>Enum value: 
+        <xsl:value-of select="enum/text()"/>
+      </p>
+    </xsl:if>
 
-        <xsl:if test="string-length(list) &gt; 0">
-            <p>List values:</p>
+    <xsl:if test="string-length(list) &gt; 0">
+      <p>List values:</p>
             
-            <ul>
-                <xsl:for-each select="list/string">
-                    <xsl:if test="string-length(string/text()) &gt; 0">
-                        <li>
-                            <xsl:value-of select="text()"/>
-                        </li>
-                    </xsl:if>
-                </xsl:for-each>
-            </ul>
-        </xsl:if>
-    </xsl:template>
+      <ul>
+        <xsl:for-each select="list/string">
+          <xsl:if test="string-length(string/text()) &gt; 0">
+            <li>
+              <xsl:value-of select="text()"/>
+            </li>
+          </xsl:if>
+        </xsl:for-each>
+      </ul>
+    </xsl:if>
+  </xsl:template>
 </xsl:stylesheet>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/report/userReportlet2html.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/report/userReportlet2html.xsl b/core/src/main/resources/report/userReportlet2html.xsl
index 3367169..751cb4c 100644
--- a/core/src/main/resources/report/userReportlet2html.xsl
+++ b/core/src/main/resources/report/userReportlet2html.xsl
@@ -157,9 +157,9 @@ under the License.
         </xsl:otherwise>
       </xsl:choose>
       <xsl:if test="string-length(resources) &gt; 0">
-          <xsl:call-template name="resources">
-              <xsl:with-param name="node" select="resources/resource"/>
-          </xsl:call-template>
+        <xsl:call-template name="resources">
+          <xsl:with-param name="node" select="resources/resource"/>
+        </xsl:call-template>
       </xsl:if>
       <hr/>
     </xsl:for-each>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/roleRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/roleRoute.xml b/core/src/main/resources/roleRoute.xml
index 80ff595..44cdfa4 100644
--- a/core/src/main/resources/roleRoute.xml
+++ b/core/src/main/resources/roleRoute.xml
@@ -24,151 +24,151 @@ under the License.
                            http://camel.apache.org/schema/spring
                            http://camel.apache.org/schema/spring/camel-spring.xsd">
  
+  <!--
+      The default routes define each task involved in user creation:
+      main operations consist in user workflow creation and its propagation.         
+  -->
+  <routeContext id="defaultRoleRoutes" xmlns="http://camel.apache.org/schema/spring"> 
     <!--
-        The default routes define each task involved in user creation:
-        main operations consist in user workflow creation and its propagation.         
+        CREATE ROLE
     -->
-    <routeContext id="defaultRoleRoutes" xmlns="http://camel.apache.org/schema/spring"> 
-<!--
-            CREATE ROLE
-        -->
         
-        <route id="createRole">
-          <from uri="direct:createRole"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreatePropagation" />
-            <to uri="direct:createRolePort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRolePort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <route id="createRole">
+      <from uri="direct:createRole"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreatePropagation" />
+        <to uri="direct:createRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRolePort"/>
+        </doCatch>
+      </doTry>
+    </route> 
                
-        <!--
-            CREATE ROLE SYNC
-        -->
-        <route id="createRoleSync">
-          <from uri="direct:createRoleSync"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreateSyncPropagation" />
-            <to uri="direct:createRoleSyncPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRoleSyncPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <!--
+        CREATE ROLE SYNC
+    -->
+    <route id="createRoleSync">
+      <from uri="direct:createRoleSync"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreateSyncPropagation" />
+        <to uri="direct:createRoleSyncPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRoleSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
          
-        <!--
-            UPDATE ROLE
-        -->
-        <route id="updateRole">
-            <from uri="direct:updateRole"/>
-            <setProperty propertyName="subjectMod">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="rwfAdapter" method="update(${body})"/>
-              <process ref="defaultRoleUpdatePropagation" />
-              <to uri="direct:updateRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE ROLE
+    -->
+    <route id="updateRole">
+      <from uri="direct:updateRole"/>
+      <setProperty propertyName="subjectMod">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <process ref="defaultRoleUpdatePropagation" />
+        <to uri="direct:updateRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
                
-        <!--
-            DELETE ROLE
-        -->
-        <route id="deleteRole">
-            <from uri="direct:deleteRole"/>
-            <doTry>
-              <process ref="defaultRoleDeletePropagation" />
-              <bean ref="rwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deleteRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deleteRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        DELETE ROLE
+    -->
+    <route id="deleteRole">
+      <from uri="direct:deleteRole"/>
+      <doTry>
+        <process ref="defaultRoleDeletePropagation" />
+        <bean ref="rwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deleteRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deleteRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkRole">
-            <from uri="direct:unlinkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:unlinkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkRole">
+      <from uri="direct:unlinkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:unlinkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkRole">
-            <from uri="direct:linkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:linkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkRole">
+      <from uri="direct:linkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:linkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            DEPROVISION ROLE
-        -->
-        <route id="deprovisionRole">
-            <from uri="direct:deprovisionRole"/>            
-              <process ref="defaultRoleDeprovisionPropagation" />
-              <to uri="direct:deprovisionRolePort"/>              
-        </route>
-</routeContext>
+    <!--
+        DEPROVISION ROLE
+    -->
+    <route id="deprovisionRole">
+      <from uri="direct:deprovisionRole"/>            
+      <process ref="defaultRoleDeprovisionPropagation" />
+      <to uri="direct:deprovisionRolePort"/>              
+    </route>
+  </routeContext>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/userRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/userRoute.xml b/core/src/main/resources/userRoute.xml
index e65ef2f..763996d 100644
--- a/core/src/main/resources/userRoute.xml
+++ b/core/src/main/resources/userRoute.xml
@@ -24,240 +24,240 @@ under the License.
                            http://camel.apache.org/schema/spring
                            http://camel.apache.org/schema/spring/camel-spring.xsd">
  
-    <!--
-        The default routes define each task involved in user creation:
-        main operations consist in user workflow creation and its propagation.         
-    -->
-    <routeContext id="defaultUserRoutes" xmlns="http://camel.apache.org/schema/spring">  	
-	<route id="createUser">
-          <from uri="direct:createUser"/>
-          <setProperty propertyName="actual">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="uwfAdapter" 
-                  method="create(${body},${property.disablePwdPolicyCheck},
+  <!--
+      The default routes define each task involved in user creation:
+      main operations consist in user workflow creation and its propagation.         
+  -->
+  <routeContext id="defaultUserRoutes" xmlns="http://camel.apache.org/schema/spring">  	
+    <route id="createUser">
+      <from uri="direct:createUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" 
+              method="create(${body},${property.disablePwdPolicyCheck},
                                  ${property.enabled},${property.storePassword})"/>
-            <process ref="defaultUserCreatePropagation" />
-            <to uri="direct:createPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+        <process ref="defaultUserCreatePropagation" />
+        <to uri="direct:createPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
-        <!--
-            The propagation route deals with propagation of created user. In this
-            case we used a custom processor to perform this task: it means that
-            a custom java class contains the propagation strategy.
-        -->
+    <!--
+        The propagation route deals with propagation of created user. In this
+        case we used a custom processor to perform this task: it means that
+        a custom java class contains the propagation strategy.
+    -->
        
-        <!--
-            UPDATE USER
-        -->
-        <route id="updateUser">
-            <from uri="direct:updateUser"/>
-            <setProperty propertyName="actual">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <process ref="defaultUserUpdatePropagation" />
-              <to uri="direct:updatePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updatePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE USER
+    -->
+    <route id="updateUser">
+      <from uri="direct:updateUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <process ref="defaultUserUpdatePropagation" />
+        <to uri="direct:updatePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updatePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
 
                 
-        <!--
-            UPDATE SYNC USER
-        -->
-        <route id="updateSyncUser">
-            <from uri="direct:updateSyncUser"/>            
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <to uri="direct:syncUserStatus"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateSyncPort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE SYNC USER
+    -->
+    <route id="updateSyncUser">
+      <from uri="direct:updateSyncUser"/>            
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <to uri="direct:syncUserStatus"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <route id="syncUserStatus">
-            <from uri="direct:syncUserStatus"/>
-                <process ref="userStatusOnSync" />
-                <process ref="defaultUserUpdateSyncPropagation" />
-            <to uri="direct:updateSyncPort"/>
-        </route>
-        <!--
-            DELETE USER
-        -->
-        <route id="deleteUser">
-            <from uri="direct:deleteUser"/>
-            <doTry>
-              <process ref="defaultUserDeletePropagation" />
-              <bean ref="uwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deletePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deletePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <route id="syncUserStatus">
+      <from uri="direct:syncUserStatus"/>
+      <process ref="userStatusOnSync" />
+      <process ref="defaultUserUpdateSyncPropagation" />
+      <to uri="direct:updateSyncPort"/>
+    </route>
+    <!--
+        DELETE USER
+    -->
+    <route id="deleteUser">
+      <from uri="direct:deleteUser"/>
+      <doTry>
+        <process ref="defaultUserDeletePropagation" />
+        <bean ref="uwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deletePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deletePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkUser">
-            <from uri="direct:unlinkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:unlinkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkUser">
+      <from uri="direct:unlinkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:unlinkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkUser">
-            <from uri="direct:linkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:linkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkUser">
+      <from uri="direct:linkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:linkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!-- 
-            ACTIVATE USER
-        -->
-        <route id="activateUser">
-            <from uri="direct:activateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            REACTIVATE USER
-        -->
-        <route id="reactivateUser">
-            <from uri="direct:reactivateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="reactivate(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            SUSPEND USER
-        -->
-        <route id="suspendUser">
-            <from uri="direct:suspendUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <!-- 
+        ACTIVATE USER
+    -->
+    <route id="activateUser">
+      <from uri="direct:activateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        REACTIVATE USER
+    -->
+    <route id="reactivateUser">
+      <from uri="direct:reactivateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="reactivate(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        SUSPEND USER
+    -->
+    <route id="suspendUser">
+      <from uri="direct:suspendUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
         
-        <!-- 
-            STATUS PROPAGATION
-        -->
+    <!-- 
+        STATUS PROPAGATION
+    -->
         
-        <route id="statusUser">
-            <from uri="direct:statusUser"/>            
-              <process ref="defaultUserStatusPropagation" />
-            <to uri="direct:statusPort"/>              
-        </route>
+    <route id="statusUser">
+      <from uri="direct:statusUser"/>            
+      <process ref="defaultUserStatusPropagation" />
+      <to uri="direct:statusPort"/>              
+    </route>
         
         
-        <!--
-            DEPROVISION USER
-        -->
-        <route id="deprovisionUser">
-            <from uri="direct:deprovisionUser"/>            
-              <process ref="defaultUserDeprovisionPropagation" />
-              <to uri="direct:deprovisionPort"/>              
-        </route>
+    <!--
+        DEPROVISION USER
+    -->
+    <route id="deprovisionUser">
+      <from uri="direct:deprovisionUser"/>            
+      <process ref="defaultUserDeprovisionPropagation" />
+      <to uri="direct:deprovisionPort"/>              
+    </route>
 
 
 
-        <route id="suspendUserWF">
-            <from uri="direct:suspendUserWF"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <process ref="defaultUserWFSuspendPropagation"/>
-                <to uri="direct:suspendWFPort"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:suspendWFPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <route id="suspendUserWF">
+      <from uri="direct:suspendUserWF"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <process ref="defaultUserWFSuspendPropagation"/>
+        <to uri="direct:suspendWFPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:suspendWFPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
 
-</routeContext>
+  </routeContext>
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/resources/wadl2html/index.xsl
----------------------------------------------------------------------
diff --git a/core/src/main/resources/wadl2html/index.xsl b/core/src/main/resources/wadl2html/index.xsl
index d7b4e98..e238b99 100644
--- a/core/src/main/resources/wadl2html/index.xsl
+++ b/core/src/main/resources/wadl2html/index.xsl
@@ -48,50 +48,50 @@
 
         <link rel="stylesheet" href="{$contextPath}/webjars/jquery-ui/${jquery-ui.version}/themes/base/minified/jquery-ui.min.css"/>
         <style>
-body {
-  font-family: "Verdana,Arial,sans-serif";
-  font-size: 0.9em;
-}
+          body {
+          font-family: "Verdana,Arial,sans-serif";
+          font-size: 0.9em;
+          }
 
-table {
-  font-family: "Verdana,Arial,sans-serif";
-  font-size: 0.9em;
-  border-width: 1px;
-  border-color: #666666;
-  border-collapse: collapse;
-}
-table th {
-  border-width: 1px;
-  padding: 8px;
-  border-style: solid;
-  border-color: #666666;
-  background-color: #dedede;
-}
-td {
-  border-width: 1px;
-  padding: 8px;
-  border-style: solid;
-  border-color: #666666;
-  background-color: #ffffff;
-  vertical-align: top;
-}
+          table {
+          font-family: "Verdana,Arial,sans-serif";
+          font-size: 0.9em;
+          border-width: 1px;
+          border-color: #666666;
+          border-collapse: collapse;
+          }
+          table th {
+          border-width: 1px;
+          padding: 8px;
+          border-style: solid;
+          border-color: #666666;
+          background-color: #dedede;
+          }
+          td {
+          border-width: 1px;
+          padding: 8px;
+          border-style: solid;
+          border-color: #666666;
+          background-color: #ffffff;
+          vertical-align: top;
+          }
 
-.methods {
-  padding: 5px;
-}
+          .methods {
+          padding: 5px;
+          }
 
-.representation-label {
-  font-weight: bold;
-  width: 80px;
-}
+          .representation-label {
+          font-weight: bold;
+          width: 80px;
+          }
 
-.ui-widget { font-size: 0.9em; }
-.ui-tabs-vertical { width: 60em; }
-.ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 15em; }
-.ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }
-.ui-tabs-vertical .ui-tabs-nav li a { display:block; }
-.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }
-.ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}
+          .ui-widget { font-size: 0.9em; }
+          .ui-tabs-vertical { width: 60em; }
+          .ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 15em; }
+          .ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }
+          .ui-tabs-vertical .ui-tabs-nav li a { display:block; }
+          .ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }
+          .ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}
         </style>
         
         <script src="{$contextPath}/webjars/jquery/${jquery.version}/jquery.min.js">

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
index fcc9dc8..ff0c099 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
@@ -79,7 +79,6 @@ public class DerSchemaTest extends AbstractDAOTest {
         assertNull("delete did not work", actual);
 
         // ------------- //
-
         RDerSchema rderiveddata = derSchemaDAO.find("rderiveddata", RDerSchema.class);
         assertNotNull(rderiveddata);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
index 87bf75b..86e725c 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/SecurityQuestionTest.java
@@ -52,7 +52,7 @@ public class SecurityQuestionTest extends AbstractDAOTest {
     public void save() {
         SecurityQuestion securityQuestion = new SecurityQuestion();
         securityQuestion.setContent("What is your favorite pet's name?");
-        
+
         SecurityQuestion actual = securityQuestionDAO.save(securityQuestion);
         assertNotNull(actual);
         assertNotNull(actual.getId());

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
index ef0c4a8..efae722 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
@@ -77,7 +77,6 @@ public class VirSchemaTest extends AbstractDAOTest {
         assertNull("delete did not work", actual);
 
         // ------------- //
-
         RVirSchema rvirtualdata = virSchemaDAO.find("rvirtualdata", RVirSchema.class);
         assertNotNull(rvirtualdata);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
index d1063f5..4dbf804 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java
@@ -709,13 +709,13 @@ public class ConnectorTestITCase extends AbstractTest {
 
     @Test
     public void issueSYNCOPE605() {
-        
+
         ConnInstanceTO connectorInstanceTO = connectorService.read(103L);
         assertTrue(connectorInstanceTO.getCapabilities().isEmpty());
-        
+
         connectorInstanceTO.getCapabilities().add(ConnectorCapability.SEARCH);
         connectorService.update(connectorInstanceTO.getId(), connectorInstanceTO);
-        
+
         ConnInstanceTO updatedCapabilities = connectorService.read(connectorInstanceTO.getId());
         assertNotNull(updatedCapabilities.getCapabilities());
         assertTrue(updatedCapabilities.getCapabilities().size() == 1);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
index 7d7a433..3008350 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java
@@ -44,7 +44,7 @@ public class NotificationTestITCase extends AbstractTest {
         NotificationTO notificationTO = new NotificationTO();
         notificationTO.setTraceLevel(TraceLevel.SUMMARY);
         notificationTO.getEvents().add("create");
-        
+
         notificationTO.setUserAbout(SyncopeClient.getUserSearchConditionBuilder().
                 is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
index 18b1e3f..0100538 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
@@ -227,12 +227,12 @@ public class PolicyTestITCase extends AbstractTest {
     public void issueSYNCOPE553() {
         AccountPolicyTO policy = new AccountPolicyTO(false);
         policy.setDescription("SYNCOPE553");
-        
+
         final AccountPolicySpec accountPolicySpec = new AccountPolicySpec();
         accountPolicySpec.setMinLength(3);
         accountPolicySpec.setMaxLength(8);
         policy.setSpecification(accountPolicySpec);
-        
+
         policy = createPolicy(policy);
         assertNotNull(policy);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
index 77f4c66..e4b915f 100644
--- a/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
+++ b/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
@@ -507,7 +507,7 @@ public class ResourceTestITCase extends AbstractTest {
         item.setExtAttrName("cn");
         item.setPurpose(MappingPurpose.BOTH);
         mapping.setAccountIdItem(item);
-            
+
         item = new MappingItemTO();
         item.setIntMappingType(IntMappingType.RoleOwnerSchema);
         item.setExtAttrName("owner");


[27/53] [abbrv] syncope git commit: Merge branch 'master' of https://github.com/Tirasa/SyncopeCamel

Posted by il...@apache.org.
Merge branch 'master' of https://github.com/Tirasa/SyncopeCamel


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

Branch: refs/heads/master
Commit: 55dfac7706a7a80e62254d749bf0af340b22eaed
Parents: b2ba422 fe8eeb2
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 23 12:34:16 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 23 12:34:16 2014 +0100

----------------------------------------------------------------------
 installer/pom.xml                               |  20 +++
 .../installer/containers/jboss/JBoss.java       |  12 +-
 .../org/apache/syncope/installer/enums/DBs.java |   3 +
 .../installer/files/ConsoleProperties.java      |  31 ++++
 .../syncope/installer/files/CoreWebXml.java     |  76 ++------
 .../installer/files/GlassfishCoreWebXml.java    |  38 +---
 .../files/JBossDeploymentStructureXml.java      |  40 +----
 .../syncope/installer/files/ParentPom.java      | 176 +------------------
 .../files/PersistenceContextEMFactoryXml.java   |  47 +----
 .../installer/files/PersistenceProperties.java  |  27 +--
 .../installer/processes/ArchetypeProcess.java   |  41 +++--
 .../installer/processes/BaseProcess.java        |  54 ++++++
 .../installer/processes/ContainerProcess.java   | 171 ++++++++++++++----
 .../installer/processes/PersistenceProcess.java |  25 ++-
 .../installer/utilities/FileSystemUtils.java    |  45 +++++
 .../syncope/installer/utilities/MavenUtils.java |  31 +---
 .../src/main/resources/configuration.properties |  31 ++++
 .../main/resources/izpack/ProcessPanel.Spec.xml |  40 +++--
 installer/src/main/resources/izpack/install.xml |   6 +-
 .../main/resources/izpack/userInputLang.xml_eng |   4 +
 .../main/resources/izpack/userInputLang.xml_ita |   4 +
 .../src/main/resources/izpack/userInputSpec.xml |  20 ++-
 installer/src/main/resources/modelerPom.xml     | 116 ++++++++++++
 23 files changed, 589 insertions(+), 469 deletions(-)
----------------------------------------------------------------------



[50/53] [abbrv] syncope git commit: restoring original POM name / desc

Posted by il...@apache.org.
restoring original POM name / desc


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

Branch: refs/heads/master
Commit: 01ac2bd7dd4cb2116b7ee5e6b7502f066527c08b
Parents: d388f24
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 14:14:01 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 14:14:01 2015 +0100

----------------------------------------------------------------------
 pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/01ac2bd7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1fe0129..30673a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,8 @@ under the License.
 
   <modelVersion>4.0.0</modelVersion>
 
-  <name>PoC for integrating Apache Camel in Apache Syncope</name>
+  <name>Apache Syncope</name>
+  <description>Apache Syncope parent POM</description>
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>


[51/53] [abbrv] syncope git commit: White noise - This closes #2

Posted by il...@apache.org.
White noise - This closes #2


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

Branch: refs/heads/2_0_X
Commit: a90a48ad5dc9dd5667713a159e555ba1ac6b8741
Parents: 01ac2bd
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 14:33:32 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 14:33:32 2015 +0100

----------------------------------------------------------------------
 core/src/main/resources/provisioning.properties | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/a90a48ad/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
index a8e49bf..b55bd06 100644
--- a/core/src/main/resources/provisioning.properties
+++ b/core/src/main/resources/provisioning.properties
@@ -14,6 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
 userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
-roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file
+roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager


[35/53] [abbrv] syncope git commit: Fixing deprecation errors during compilation

Posted by il...@apache.org.
Fixing deprecation errors  during compilation


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

Branch: refs/heads/2_0_X
Commit: ac4d6af48f8c08167db7051d69c011f650b48555
Parents: b19ff85
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 30 18:25:12 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 30 18:25:12 2014 +0100

----------------------------------------------------------------------
 .../core/provisioning/camel/CamelRoleProvisioningManager.java  | 4 ++--
 .../core/provisioning/camel/CamelUserProvisioningManager.java  | 5 +++--
 .../syncope/core/provisioning/camel/SyncopeCamelContext.java   | 6 +++---
 .../camel/processors/DefaultUserUpdatePropagation.java         | 2 --
 4 files changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
index 33856a9..9b121a4 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -68,7 +68,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelRoleProvisioningManager.class);
 
-    private DefaultCamelContext camelContext;
+    private SpringCamelContext camelContext;
 
     private RoutesDefinition routes;
 
@@ -95,7 +95,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
         camelContext.stop();
     }
 
-    public CamelContext getContext() {
+    public SpringCamelContext getContext() {
         //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
         //return context.getBean("camel-context", DefaultCamelContext.class);        
         return contextFactory.getContext(routeDAO);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index d30c624..01b057a 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -40,6 +40,7 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
@@ -59,7 +60,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelUserProvisioningManager.class);
 
-    private DefaultCamelContext camelContext;
+    private SpringCamelContext camelContext;
 
     private RoutesDefinition routes;
 
@@ -98,7 +99,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
         camelContext.stop();
     }
 
-    public CamelContext getContext() {
+    public SpringCamelContext getContext() {
         //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
         //return context.getBean("camel-context", DefaultCamelContext.class);                    
         return contextFactory.getContext(routeDAO);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index c529dcf..6d3e77d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -48,15 +48,15 @@ public class SyncopeCamelContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(SyncopeCamelContext.class);
 
-    private CamelContext camelContext = null;
+    private SpringCamelContext camelContext = null;
 
     public SyncopeCamelContext() {
     }
 
-    public CamelContext getContext(RouteDAO routeDAO) {
+    public SpringCamelContext getContext(RouteDAO routeDAO) {
 
         if (camelContext == null) {
-            camelContext = new SpringCamelContext(ApplicationContextProvider.getApplicationContext());
+            camelContext = new  SpringCamelContext(ApplicationContextProvider.getApplicationContext());
         }
         if (camelContext.getRouteDefinitions().isEmpty()) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ac4d6af4/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index a94bea5..c9b498e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -24,11 +24,9 @@ import java.util.List;
 import java.util.Map;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.syncope.common.mod.AttributeMod;
 import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
-import org.apache.syncope.common.to.UserTO;
 import org.apache.syncope.core.persistence.beans.PropagationTask;
 import org.apache.syncope.core.propagation.PropagationByResource;
 import org.apache.syncope.core.propagation.PropagationException;


[28/53] [abbrv] syncope git commit: Merge branch 'master' of https://github.com/Tirasa/SyncopeCamel

Posted by il...@apache.org.
Merge branch 'master' of https://github.com/Tirasa/SyncopeCamel


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

Branch: refs/heads/2_0_X
Commit: 55dfac7706a7a80e62254d749bf0af340b22eaed
Parents: b2ba422 fe8eeb2
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 23 12:34:16 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 23 12:34:16 2014 +0100

----------------------------------------------------------------------
 installer/pom.xml                               |  20 +++
 .../installer/containers/jboss/JBoss.java       |  12 +-
 .../org/apache/syncope/installer/enums/DBs.java |   3 +
 .../installer/files/ConsoleProperties.java      |  31 ++++
 .../syncope/installer/files/CoreWebXml.java     |  76 ++------
 .../installer/files/GlassfishCoreWebXml.java    |  38 +---
 .../files/JBossDeploymentStructureXml.java      |  40 +----
 .../syncope/installer/files/ParentPom.java      | 176 +------------------
 .../files/PersistenceContextEMFactoryXml.java   |  47 +----
 .../installer/files/PersistenceProperties.java  |  27 +--
 .../installer/processes/ArchetypeProcess.java   |  41 +++--
 .../installer/processes/BaseProcess.java        |  54 ++++++
 .../installer/processes/ContainerProcess.java   | 171 ++++++++++++++----
 .../installer/processes/PersistenceProcess.java |  25 ++-
 .../installer/utilities/FileSystemUtils.java    |  45 +++++
 .../syncope/installer/utilities/MavenUtils.java |  31 +---
 .../src/main/resources/configuration.properties |  31 ++++
 .../main/resources/izpack/ProcessPanel.Spec.xml |  40 +++--
 installer/src/main/resources/izpack/install.xml |   6 +-
 .../main/resources/izpack/userInputLang.xml_eng |   4 +
 .../main/resources/izpack/userInputLang.xml_ita |   4 +
 .../src/main/resources/izpack/userInputSpec.xml |  20 ++-
 installer/src/main/resources/modelerPom.xml     | 116 ++++++++++++
 23 files changed, 589 insertions(+), 469 deletions(-)
----------------------------------------------------------------------



[22/53] [abbrv] syncope git commit: Code formatting with netbeans

Posted by il...@apache.org.
Code formatting with netbeans


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

Branch: refs/heads/master
Commit: 7aa0db378d8ab7931c78d570c6f5968e2967bc7b
Parents: b7d6578
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 17:48:14 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 17:48:14 2014 +0100

----------------------------------------------------------------------
 core/pom.xml                                    |  14 +-
 .../syncope/core/init/CamelRouteLoader.java     |  74 ++--
 .../init/ImplementationClassNamesLoader.java    |   1 -
 .../core/init/SpringContextInitializer.java     |   4 +-
 .../core/persistence/SQLSchemaGenerator.java    |  25 +-
 .../persistence/beans/AbstractAttrValue.java    |  33 +-
 .../persistence/beans/AbstractBaseBean.java     |   2 +-
 .../core/persistence/beans/CamelRoute.java      |   4 +-
 .../persistence/beans/ExternalResource.java     |   2 +-
 .../core/persistence/beans/Notification.java    |   5 +-
 .../core/persistence/beans/package-info.java    |   1 -
 .../core/persistence/dao/ConnectorRegistry.java |   2 +-
 .../core/persistence/dao/impl/RouteDAOImpl.java |   3 +-
 .../entity/AbstractSyncTaskCheck.java           |   2 +-
 .../entity/AbstractSyncTaskValidator.java       |   4 +-
 .../validation/entity/AttrCheck.java            |   2 +-
 .../validation/entity/AttrValueCheck.java       |   2 +-
 .../validation/entity/ConnInstanceCheck.java    |   2 +-
 .../entity/ExternalResourceCheck.java           |   2 +-
 .../validation/entity/NotificationCheck.java    |   4 +-
 .../validation/entity/PolicyCheck.java          |   2 +-
 .../validation/entity/PropagationTaskCheck.java |   2 +-
 .../validation/entity/ReportCheck.java          |   2 +-
 .../validation/entity/SchedTaskCheck.java       |   2 +-
 .../validation/entity/SchemaCheck.java          |   2 +-
 .../validation/entity/SchemaNameCheck.java      |   2 +-
 .../validation/entity/SyncopeRoleCheck.java     |   2 +-
 .../validation/entity/SyncopeUserCheck.java     |   3 +-
 .../syncope/core/policy/PolicyEvaluator.java    |   5 +-
 .../syncope/core/policy/PolicyPattern.java      |   1 +
 .../core/propagation/PropagationReporter.java   |   2 +-
 .../impl/DBPasswordPropagationActions.java      |  16 +-
 .../impl/PriorityPropagationTaskExecutor.java   |   8 +-
 .../propagation/impl/PropagationManager.java    |   8 +-
 .../syncope/core/propagation/package-info.java  |   1 -
 .../DefaultRoleProvisioningManager.java         |  56 +--
 .../DefaultUserProvisioningManager.java         | 159 +++----
 .../core/provisioning/ProvisioningManager.java  |   2 +-
 .../provisioning/RoleProvisioningManager.java   |  14 +-
 .../provisioning/UserProvisioningManager.java   |  31 +-
 .../camel/CamelRoleProvisioningManager.java     |  68 +--
 .../camel/CamelUserProvisioningManager.java     |  33 +-
 .../provisioning/camel/SyncopeCamelContext.java |  81 ++--
 .../DefaultRoleCreatePropagation.java           |  22 +-
 .../DefaultRoleCreateSyncPropagation.java       |  31 +-
 .../DefaultRoleDeletePropagation.java           |  24 +-
 .../DefaultRoleDeprovisionPropagation.java      |  28 +-
 .../DefaultRoleUpdatePropagation.java           |  24 +-
 .../DefaultUserConfirmPwdResetPropagation.java  |  11 +-
 .../DefaultUserCreatePropagation.java           |  31 +-
 .../DefaultUserDeletePropagation.java           |  25 +-
 .../DefaultUserDeprovisionPropagation.java      |  24 +-
 .../DefaultUserStatusPropagation.java           |  26 +-
 .../DefaultUserUpdateInSyncPropagation.java     |  48 +-
 .../DefaultUserUpdatePropagation.java           | 116 ++---
 .../DefaultUserWFSuspendPropagation.java        |  16 +-
 .../camel/processors/UserStatusOnSync.java      |  54 +--
 .../syncope/core/quartz/package-info.java       |   1 -
 .../syncope/core/report/ReportletConfClass.java |   2 +-
 .../core/report/cocoon/TextSerializer.java      |   2 +-
 .../core/rest/controller/LoggerController.java  |   4 +-
 .../core/rest/controller/RoleController.java    |   8 +-
 .../core/rest/controller/RouteController.java   |  46 +-
 .../core/rest/controller/UserController.java    |  45 +-
 .../core/rest/data/ReportDataBinder.java        |   6 +-
 .../syncope/core/rest/data/RouteDataBinder.java |  10 +-
 .../rest/utils/QueryResourceInfoComparator.java |   4 +-
 .../rest/utils/RestServiceExceptionMapper.java  |   4 +-
 .../syncope/core/security/AsymmetricCipher.java |   1 +
 .../core/services/ConnectorServiceImpl.java     |   2 +-
 .../core/services/PolicyServiceImpl.java        |   2 +-
 .../syncope/core/services/RouteServiceImpl.java |  19 +-
 .../core/services/WorkflowServiceImpl.java      |   8 +-
 .../apache/syncope/core/sync/SyncActions.java   |   3 +-
 .../apache/syncope/core/sync/SyncResult.java    |   7 +-
 .../impl/AbstractSubjectPushResultHandler.java  |   1 -
 .../syncope/core/sync/impl/AbstractSyncJob.java |   2 +-
 .../sync/impl/AbstractSyncopeResultHandler.java |   6 +-
 .../core/sync/impl/LDAPPasswordSyncActions.java |  10 +-
 .../core/sync/impl/RoleSyncResultHandler.java   |  10 +-
 .../core/sync/impl/UserSyncResultHandler.java   |  94 ++--
 .../core/util/AttributeDeserializer.java        |   4 +-
 .../syncope/core/util/ContentLoaderHandler.java |  20 +-
 .../apache/syncope/core/util/RouteManager.java  |  19 +-
 .../syncope/core/util/SecureRandomUtil.java     |   8 +-
 .../core/util/SyncTokenDeserializer.java        |  22 +-
 .../apache/syncope/core/util/jexl/JexlUtil.java |   4 +-
 .../syncope/core/workflow/package-info.java     |   1 -
 .../role/AbstractRoleWorkflowAdapter.java       |   2 +-
 .../user/AbstractUserWorkflowAdapter.java       |   2 +-
 .../workflow/user/NoOpUserWorkflowAdapter.java  |   3 +-
 .../core/workflow/user/UserWorkflowAdapter.java |   2 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   3 +-
 .../user/activiti/SyncopeGroupManager.java      |   2 +-
 .../user/activiti/SyncopeUserManager.java       |   2 +-
 .../resources/persistenceContextEMFactory.xml   |   4 +-
 .../resources/report/staticReportlet2fo.xsl     |  98 ++---
 .../resources/report/staticReportlet2html.xsl   |  84 ++--
 .../resources/report/userReportlet2html.xsl     |   6 +-
 core/src/main/resources/roleRoute.xml           | 272 ++++++------
 core/src/main/resources/userRoute.xml           | 434 +++++++++----------
 core/src/main/resources/wadl2html/index.xsl     |  80 ++--
 .../core/persistence/dao/DerSchemaTest.java     |   1 -
 .../persistence/dao/SecurityQuestionTest.java   |   2 +-
 .../core/persistence/dao/VirSchemaTest.java     |   1 -
 .../syncope/core/rest/ConnectorTestITCase.java  |   6 +-
 .../core/rest/NotificationTestITCase.java       |   2 +-
 .../syncope/core/rest/PolicyTestITCase.java     |   4 +-
 .../syncope/core/rest/ResourceTestITCase.java   |   2 +-
 109 files changed, 1291 insertions(+), 1266 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 66b5a22..1628184 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -118,7 +118,7 @@ under the License.
       <artifactId>cxf-rt-rs-client</artifactId>
     </dependency>  
        
-     <dependency>
+    <dependency>
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-core</artifactId>
     </dependency>
@@ -127,14 +127,14 @@ under the License.
       <artifactId>camel-spring</artifactId>
     </dependency>
     <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.2.7</version>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.2.7</version>
     </dependency>
     <dependency>
-       <groupId>com.sun.xml.bind</groupId>
-       <artifactId>jaxb-impl</artifactId>
-       <version>2.2.7</version>
+      <groupId>com.sun.xml.bind</groupId>
+      <artifactId>jaxb-impl</artifactId>
+      <version>2.2.7</version>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java b/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
index aa6da28..5f63e0d 100644
--- a/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
+++ b/core/src/main/java/org/apache/syncope/core/init/CamelRouteLoader.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.init;
 
 import java.io.File;
@@ -47,60 +46,61 @@ import org.w3c.dom.NodeList;
 
 @Component
 public class CamelRouteLoader {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(CamelRouteLoader.class);
-    
+
     @Autowired
     private RouteDAO routeDAO;
-    
+
     @Autowired
     private DataSource dataSource;
-    
+
     @Transactional
-    public void load(){
-        
+    public void load() {
+
         //if(routeDAO.findAll().isEmpty()){
-            URL url = getClass().getResource("/camelRoute.xml");                                   
+        URL url = getClass().getResource("/camelRoute.xml");
+
+        File file = new File(url.getPath());
+        String query = "INSERT INTO CamelRoute(ID, NAME, ROUTECONTENT) VALUES (?, ?, ?)";
+        try {
+
+            DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+            Document doc = dBuilder.parse(file);
+            doc.getDocumentElement().normalize();
 
-            File file = new File(url.getPath());
-            String query= "INSERT INTO CamelRoute(ID, NAME, ROUTECONTENT) VALUES (?, ?, ?)";
-            try{
-                
-                DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-                Document doc = dBuilder.parse(file);
-                doc.getDocumentElement().normalize();
+            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-                JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+            NodeList listOfRoutes = doc.getElementsByTagName("route");
+            for (int s = 0; s < listOfRoutes.getLength(); s++) {
+                //getting the route node element
+                Node routeEl = listOfRoutes.item(s);
+                //crate an instance of CamelRoute Entity
+                CamelRoute route = new CamelRoute();
+                route.setName(((Element) routeEl).getAttribute("id"));
+                route.setRouteContent(nodeToString(listOfRoutes.item(s)));
 
-                NodeList listOfRoutes = doc.getElementsByTagName("route");
-                for(int s=0; s<listOfRoutes.getLength(); s++){
-                    //getting the route node element
-                    Node routeEl = listOfRoutes.item(s);
-                    //crate an instance of CamelRoute Entity
-                    CamelRoute route = new CamelRoute();                                 
-                    route.setName(((Element)routeEl).getAttribute("id"));        
-                    route.setRouteContent(nodeToString(listOfRoutes.item(s)));
-                    
-                    jdbcTemplate.update(query, new Object[]{s+1,((Element)routeEl).getAttribute("id"),  nodeToString(listOfRoutes.item(s))});
-                    LOG.info("Route Registration Successed");
-                }
-            } catch (DataAccessException e) {
-                LOG.error("While trying to perform {}", query, e);
-            } catch (Exception e) {
-                LOG.error("Route Registration failed {}",e.getMessage());
+                jdbcTemplate.update(query, new Object[] { s + 1, ((Element) routeEl).getAttribute("id"), nodeToString(
+                    listOfRoutes.item(s)) });
+                LOG.info("Route Registration Successed");
             }
+        } catch (DataAccessException e) {
+            LOG.error("While trying to perform {}", query, e);
+        } catch (Exception e) {
+            LOG.error("Route Registration failed {}", e.getMessage());
+        }
         //}
     }
-    
-  private String nodeToString(Node node) {
+
+    private String nodeToString(Node node) {
         StringWriter sw = new StringWriter();
-        try{
+        try {
             Transformer t = TransformerFactory.newInstance().newTransformer();
             t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
             t.transform(new DOMSource(node), new StreamResult(sw));
-        }catch (TransformerException te) {
+        } catch (TransformerException te) {
             System.out.println("nodeToString Transformer Exception");
         }
         return sw.toString();
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java b/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
index b7659b8..30c568e 100644
--- a/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
+++ b/core/src/main/java/org/apache/syncope/core/init/ImplementationClassNamesLoader.java
@@ -114,7 +114,6 @@ public class ImplementationClassNamesLoader {
                     }
 
                     // TODO: add push correlation rules management
-
                     if (interfaces.contains(PropagationActions.class) && !metadata.isAbstract()) {
                         classNames.get(Type.PROPAGATION_ACTIONS).add(metadata.getClassName());
                     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java b/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
index 115587d..dc99e34 100644
--- a/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
+++ b/core/src/main/java/org/apache/syncope/core/init/SpringContextInitializer.java
@@ -49,7 +49,7 @@ public class SpringContextInitializer implements InitializingBean {
 
     @Autowired
     private WorkflowAdapterLoader workflowAdapterLoader;
-    
+
     @Autowired
     private CamelRouteLoader routeLoader;
 
@@ -63,7 +63,7 @@ public class SpringContextInitializer implements InitializingBean {
         classNamesLoader.load();
 
         routeLoader.load();
-        
+
         workflowAdapterLoader.init();
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java b/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
index 342e347..8942cda 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/SQLSchemaGenerator.java
@@ -60,7 +60,7 @@ public final class SQLSchemaGenerator {
         }
 
         @SuppressWarnings("unchecked")
-        Iterator<File> itor = FileUtils.iterateFiles(baseDir, new String[] {"class"}, true);
+        Iterator<File> itor = FileUtils.iterateFiles(baseDir, new String[] { "class" }, true);
         List<File> entityClasses = new ArrayList<File>();
         while (itor.hasNext()) {
             entityClasses.add(itor.next());
@@ -127,7 +127,7 @@ public final class SQLSchemaGenerator {
         for (int i = 0; i < files.size(); i++) {
             File file = files.get(i);
 
-            args[ i] = file.getAbsolutePath();
+            args[i] = file.getAbsolutePath();
         }
         return args;
     }
@@ -140,7 +140,6 @@ public final class SQLSchemaGenerator {
             final String connectionProperties) {
 
         //extendRealmClasspath();
-
         Options opts = new Options();
         opts.put(OPTION_PROPERTIES_FILE, persistenceXmlFile);
         opts.put(OPTION_CONNECTION_DRIVER_NAME, connectionDriverName);
@@ -156,16 +155,16 @@ public final class SQLSchemaGenerator {
         boolean ok = Configurations.runAgainstAllAnchors(opts,
                 new Configurations.Runnable() {
 
-            @Override
-            public boolean run(final Options opts) throws IOException, SQLException {
-                JDBCConfiguration conf = new JDBCConfigurationImpl();
-                try {
-                    return MappingTool.run(conf, args, opts);
-                } finally {
-                    conf.close();
-                }
-            }
-        });
+                    @Override
+                    public boolean run(final Options opts) throws IOException, SQLException {
+                        JDBCConfiguration conf = new JDBCConfigurationImpl();
+                        try {
+                            return MappingTool.run(conf, args, opts);
+                        } finally {
+                            conf.close();
+                        }
+                    }
+                });
 
         if (!ok) {
             throw new IllegalStateException("The OpenJPA MappingTool detected an error!");

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
index 6ee527e..e3e71a1 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
@@ -195,21 +195,21 @@ public abstract class AbstractAttrValue extends AbstractBaseBean {
         return (T) (booleanValue != null
                 ? getBooleanValue()
                 : dateValue != null
-                ? getDateValue()
-                : doubleValue != null
-                ? getDoubleValue()
-                : longValue != null
-                ? getLongValue()
-                : binaryValue != null
-                ? getBinaryValue()
-                : stringValue);
+                        ? getDateValue()
+                        : doubleValue != null
+                                ? getDoubleValue()
+                                : longValue != null
+                                        ? getLongValue()
+                                        : binaryValue != null
+                                                ? getBinaryValue()
+                                                : stringValue);
     }
 
     public String getValueAsString() {
         final AttributeSchemaType type = getAttribute() == null || getAttribute().getSchema() == null
                 || getAttribute().getSchema().getType() == null
-                ? AttributeSchemaType.String
-                : getAttribute().getSchema().getType();
+                        ? AttributeSchemaType.String
+                        : getAttribute().getSchema().getType();
 
         return getValueAsString(type);
     }
@@ -228,22 +228,23 @@ public abstract class AbstractAttrValue extends AbstractBaseBean {
             case Long:
                 result = getAttribute() == null || getAttribute().getSchema() == null
                         || getAttribute().getSchema().getConversionPattern() == null
-                        ? getLongValue().toString()
-                        : DataFormat.format(getLongValue(), getAttribute().getSchema().getConversionPattern());
+                                ? getLongValue().toString()
+                                : DataFormat.format(getLongValue(), getAttribute().getSchema().getConversionPattern());
                 break;
 
             case Double:
                 result = getAttribute() == null || getAttribute().getSchema() == null
                         || getAttribute().getSchema().getConversionPattern() == null
-                        ? getDoubleValue().toString()
-                        : DataFormat.format(getDoubleValue(), getAttribute().getSchema().getConversionPattern());
+                                ? getDoubleValue().toString()
+                                : DataFormat.format(getDoubleValue(), getAttribute().getSchema().getConversionPattern());
                 break;
 
             case Date:
                 result = getAttribute() == null || getAttribute().getSchema() == null
                         || getAttribute().getSchema().getConversionPattern() == null
-                        ? DataFormat.format(getDateValue())
-                        : DataFormat.format(getDateValue(), false, getAttribute().getSchema().getConversionPattern());
+                                ? DataFormat.format(getDateValue())
+                                : DataFormat.format(getDateValue(), false, getAttribute().getSchema().
+                                        getConversionPattern());
                 break;
 
             case Binary:

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
index b8350b0..af2727a 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractBaseBean.java
@@ -73,7 +73,7 @@ public abstract class AbstractBaseBean implements Serializable {
             }
         }
 
-        return excludeFields.toArray(new String[]{});
+        return excludeFields.toArray(new String[] {});
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
index ad05f27..33fff55 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/CamelRoute.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.persistence.beans;
 
 import javax.persistence.Entity;
@@ -26,13 +25,12 @@ import javax.persistence.Lob;
 import javax.persistence.GenerationType;
 import javax.persistence.Column;
 
-
 @Entity
 public class CamelRoute {
 
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
-    @Column(name="id")
+    @Column(name = "id")
     private Long id;
 
     private String name;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
index 438f972..e35eefe 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
@@ -323,7 +323,7 @@ public class ExternalResource extends AbstractSysInfo {
         return StringUtils.isBlank(jsonConf)
                 ? Collections.<ConnConfProperty>emptySet()
                 : new HashSet<ConnConfProperty>(
-                Arrays.asList(POJOHelper.deserialize(jsonConf, ConnConfProperty[].class)));
+                        Arrays.asList(POJOHelper.deserialize(jsonConf, ConnConfProperty[].class)));
     }
 
     public void setConnInstanceConfiguration(final Set<ConnConfProperty> properties) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
index 6c1c466..f548b00 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/Notification.java
@@ -85,7 +85,7 @@ public class Notification extends AbstractBaseBean {
     @NotNull
     @Enumerated(EnumType.STRING)
     private TraceLevel traceLevel;
-    
+
     @Column(nullable = false)
     @Basic
     @Min(0)
@@ -168,7 +168,8 @@ public class Notification extends AbstractBaseBean {
     }
 
     public boolean addStaticRecipient(String staticRecipient) {
-        return staticRecipient != null && !staticRecipients.contains(staticRecipient) && staticRecipients.add(staticRecipient);
+        return staticRecipient != null && !staticRecipients.contains(staticRecipient) && staticRecipients.add(
+                staticRecipient);
     }
 
     public boolean removeStaticRecipient(String staticRecipient) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java b/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
index 3a78e58..eff4862 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/beans/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.persistence.beans;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java b/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
index d9c6845..3a783b9 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/dao/ConnectorRegistry.java
@@ -40,4 +40,4 @@ public interface ConnectorRegistry {
      * @param id Spring bean id
      */
     void unregisterConnector(String id);
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java b/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
index aaa0026..7d30a01 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RouteDAOImpl.java
@@ -37,7 +37,8 @@ public class RouteDAOImpl extends AbstractDAOImpl implements RouteDAO {
     @Transactional(readOnly = true)
     @Override
     public List<CamelRoute> findAll() {
-        TypedQuery<CamelRoute> query = entityManager.createQuery("SELECT e FROM " + CamelRoute.class.getSimpleName() + " e", CamelRoute.class);
+        TypedQuery<CamelRoute> query = entityManager.createQuery("SELECT e FROM " + CamelRoute.class.getSimpleName()
+                + " e", CamelRoute.class);
         return query.getResultList();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
index ac3821d..d7e172b 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = AbstractSyncTaskValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
index a53d815..9088a44 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractSyncTaskValidator.java
@@ -60,8 +60,8 @@ public class AbstractSyncTaskValidator extends AbstractValidator<AbstractSyncTas
                         isAssignable = object instanceof SyncTask
                                 ? SyncActions.class.isAssignableFrom(actionsClass)
                                 : object instanceof PushTask
-                                ? PushActions.class.isAssignableFrom(actionsClass)
-                                : false;
+                                        ? PushActions.class.isAssignableFrom(actionsClass)
+                                        : false;
                     } catch (Exception e) {
                         LOG.error("Invalid SyncActions specified", e);
                         isValid = false;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
index b569545..f0131dd 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = AttrValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
index a2e9740..b5efbca 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = AttrValueValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
index 6f3af39..172d44e 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target({ElementType.TYPE})
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = ConnInstanceValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
index 74c6984..59be7fb 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = ExternalResourceValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
index 844be3b..8c10eb8 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = NotificationValidator.class)
 @Documented
@@ -38,4 +38,4 @@ public @interface NotificationCheck {
     Class<?>[] groups() default {};
 
     Class<? extends Payload>[] payload() default {};
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
index 7d722b8..ef55fb1 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = PolicyValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
index 8896bc8..ac0a0de 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = PropagationTaskValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
index 1e32c14..9f00b67 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = ReportValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
index bcade2f..76f012a 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SchedTaskValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
index e6e1be5..e092ec9 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SchemaValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
index 5ae70e1..65def91 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SchemaNameValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
index 5586238..ae7e282 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleCheck.java
@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-@Target({ElementType.TYPE})
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SyncopeRoleValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
index 028ae4d..5a709b7 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserCheck.java
@@ -27,8 +27,7 @@ import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
-
-@Target( { ElementType.TYPE })
+@Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Constraint(validatedBy = SyncopeUserValidator.class)
 @Documented

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java b/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
index e378794..abf7b1d 100644
--- a/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
+++ b/core/src/main/java/org/apache/syncope/core/policy/PolicyEvaluator.java
@@ -52,7 +52,7 @@ public class PolicyEvaluator {
                 final PasswordPolicySpec ppSpec = policy.getSpecification(PasswordPolicySpec.class);
                 final PasswordPolicySpec evaluatedPPSpec = new PasswordPolicySpec();
 
-                BeanUtils.copyProperties(ppSpec, evaluatedPPSpec, new String[]{"schemasNotPermitted"});
+                BeanUtils.copyProperties(ppSpec, evaluatedPPSpec, new String[] { "schemasNotPermitted" });
 
                 for (String schema : ppSpec.getSchemasNotPermitted()) {
                     AbstractAttr attribute = attributable.getAttr(schema);
@@ -65,7 +65,6 @@ public class PolicyEvaluator {
                 }
 
                 // Password history verification and update
-
                 if (!(attributable instanceof SyncopeUser)) {
                     LOG.error("Cannot check previous passwords. attributable is not a user object: {}",
                             attributable.getClass().getName());
@@ -83,7 +82,7 @@ public class PolicyEvaluator {
                 final AccountPolicySpec spec = policy.getSpecification(AccountPolicySpec.class);
                 final AccountPolicySpec accountPolicy = new AccountPolicySpec();
 
-                BeanUtils.copyProperties(spec, accountPolicy, new String[]{"schemasNotPermitted"});
+                BeanUtils.copyProperties(spec, accountPolicy, new String[] { "schemasNotPermitted" });
 
                 for (String schema : spec.getSchemasNotPermitted()) {
                     AbstractAttr attribute = attributable.getAttr(schema);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java b/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
index 30065c4..e1e0890 100644
--- a/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
+++ b/core/src/main/java/org/apache/syncope/core/policy/PolicyPattern.java
@@ -43,4 +43,5 @@ public class PolicyPattern {
     public static final Pattern FIRST_NON_ALPHANUMERIC = Pattern.compile("\\W.*");
 
     public static final Pattern LAST_NON_ALPHANUMERIC = Pattern.compile(".*\\W");
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java b/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
index 0ff432d..e8c985d 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/PropagationReporter.java
@@ -44,7 +44,7 @@ public interface PropagationReporter {
 
     /**
      * Report propagation status after executions in case blocking failure (e.g. on primary resources).
-     * 
+     *
      * @param tasks propagation tasks performed before failure
      */
     void onPrimaryResourceFailure(List<PropagationTask> tasks);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java b/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
index 7157907..9ccb146 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/impl/DBPasswordPropagationActions.java
@@ -46,7 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
  * cipher algorithm property of the DB Connector.
  */
 public class DBPasswordPropagationActions extends DefaultPropagationActions {
-    
+
     private static final String CLEARTEXT = "CLEARTEXT";
 
     @Autowired
@@ -59,12 +59,12 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
 
         if (AttributableType.USER == task.getSubjectType()) {
             SyncopeUser user = userDAO.find(task.getSubjectId());
-            
+
             if (user != null && user.getPassword() != null) {
                 Attribute missing = AttributeUtil.find(
                         PropagationTaskExecutor.MANDATORY_MISSING_ATTR_NAME,
                         task.getAttributes());
-                
+
                 ConnInstance connInstance = task.getResource().getConnector();
                 if (missing != null && missing.getValue() != null && missing.getValue().size() == 1
                         && missing.getValue().get(0).equals(OperationalAttributes.PASSWORD_NAME)
@@ -86,7 +86,7 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
             }
         }
     }
-    
+
     private String getCipherAlgorithm(ConnInstance connInstance) {
         String cipherAlgorithm = CLEARTEXT;
         for (Iterator<ConnConfProperty> propertyIterator = connInstance.getConfiguration().iterator();
@@ -101,21 +101,21 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
         }
         return cipherAlgorithm;
     }
-    
+
     private boolean cipherAlgorithmMatches(String connectorAlgorithm, CipherAlgorithm userAlgorithm) {
         if (userAlgorithm == null) {
             return false;
         }
-    
+
         if (connectorAlgorithm.equals(userAlgorithm.name())) {
             return true;
         }
-        
+
         // Special check for "SHA" (user sync'd from LDAP)
         if ("SHA1".equals(connectorAlgorithm) && "SHA".equals(userAlgorithm.name())) {
             return true;
         }
-        
+
         return false;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java b/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
index b6734f7..8fd4f18 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/impl/PriorityPropagationTaskExecutor.java
@@ -75,7 +75,7 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
                     null,
                     result,
                     reporter instanceof DefaultPropagationReporter
-                    ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
+                            ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
                     tasks);
 
             auditManager.audit(
@@ -85,7 +85,7 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
                     null,
                     result,
                     reporter instanceof DefaultPropagationReporter
-                    ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
+                            ? ((DefaultPropagationReporter) reporter).getStatuses() : null,
                     tasks);
         }
     }
@@ -112,8 +112,8 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec
             return prop1 > prop2
                     ? 1
                     : prop1 == prop2
-                    ? 0
-                    : -1;
+                            ? 0
+                            : -1;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java b/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
index fcd7110..169c4e8 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/impl/PropagationManager.java
@@ -388,8 +388,8 @@ public class PropagationManager {
         PropagationByResource localPropByRes = binder.fillVirtual(subject, vAttrsToBeRemoved == null
                 ? Collections.<String>emptySet()
                 : vAttrsToBeRemoved, vAttrsToBeUpdated == null
-                ? Collections.<AttributeMod>emptySet()
-                : vAttrsToBeUpdated, AttributableUtil.getInstance(subject));
+                        ? Collections.<AttributeMod>emptySet()
+                        : vAttrsToBeUpdated, AttributableUtil.getInstance(subject));
 
         // SYNCOPE-458 fill membership virtual attributes
         if (subject instanceof SyncopeUser) {
@@ -402,8 +402,8 @@ public class PropagationManager {
                                 ? Collections.<String>emptySet()
                                 : membershipMod.getVirAttrsToRemove(),
                                 membershipMod.getVirAttrsToUpdate() == null ? Collections.<AttributeMod>emptySet()
-                                : membershipMod.getVirAttrsToUpdate(), AttributableUtil.getInstance(
-                                AttributableType.MEMBERSHIP));
+                                        : membershipMod.getVirAttrsToUpdate(), AttributableUtil.getInstance(
+                                        AttributableType.MEMBERSHIP));
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/propagation/package-info.java b/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
index 7331a06..92d1db5 100644
--- a/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
+++ b/core/src/main/java/org/apache/syncope/core/propagation/package-info.java
@@ -17,4 +17,3 @@
  * under the License.
  */
 package org.apache.syncope.core.propagation;
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
index f376641..5986b8e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning;
 
 import java.util.AbstractMap;
@@ -48,20 +47,25 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.apache.commons.lang3.StringUtils;
 
-public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
+public class DefaultRoleProvisioningManager implements RoleProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleProvisioningManager.class);
+
     @Autowired
     protected RoleWorkflowAdapter rwfAdapter;
+
     @Autowired
     protected PropagationManager propagationManager;
+
     @Autowired
-    protected PropagationTaskExecutor taskExecutor;    
+    protected PropagationTaskExecutor taskExecutor;
+
     @Autowired
     protected RoleDAO roleDAO;
+
     @Autowired
     protected RoleDataBinder binder;
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject) {
         return create(subject, Collections.<String>emptySet());
@@ -69,7 +73,7 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
 
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject, Set<String> excludedResources) {
-        
+
         WorkflowResult<Long> created = rwfAdapter.create(subject);
 
         EntitlementUtil.extendAuthContext(created.getResult());
@@ -86,15 +90,16 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
 
         final RoleTO savedTO = binder.getRoleTO(created.getResult());
         savedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), propagationReporter.getStatuses());
         return result;
     }
-    
+
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,Set<String> excludedResources) throws PropagationException{
-        
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,
+            Set<String> excludedResources) throws PropagationException {
+
         WorkflowResult<Long> created = rwfAdapter.create((RoleTO) roleTO);
         AttributeTO roleOwner = roleTO.getAttrMap().get(StringUtils.EMPTY);
         if (roleOwner != null) {
@@ -107,21 +112,21 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
                 roleTO.getVirAttrs(), excludedResources);
 
         taskExecutor.execute(tasks);
-        
+
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), null);
         return result;
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod) {
-        
+
         return update(subjectMod, Collections.<String>emptySet());
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
-                
+
         WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
 
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
@@ -135,7 +140,6 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
 
-        
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult(), propagationReporter.getStatuses());
         return result;
@@ -179,13 +183,12 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
 
-        try{
+        try {
             rwfAdapter.delete(subjectId);
+        } catch (RuntimeException e) {
+            throw e;
         }
-        catch(RuntimeException e){
-            throw  e;
-        }
-        
+
         return propagationReporter.getStatuses();
     }
 
@@ -194,15 +197,16 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
         WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
         return updated.getResult();
     }
-    
+
     @Override
-    public List<PropagationStatus> deprovision(final Long roleId, final Collection<String> resources){
+    public List<PropagationStatus> deprovision(final Long roleId, final Collection<String> resources) {
         final SyncopeRole role = binder.getRoleFromId(roleId);
-        
+
         final Set<String> noPropResourceName = role.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
-        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(resources), noPropResourceName);
+
+        final List<PropagationTask> tasks = propagationManager.getRoleDeleteTaskIds(roleId, new HashSet<String>(
+                resources), noPropResourceName);
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -218,5 +222,5 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
     public Long link(RoleMod subjectMod) {
         return rwfAdapter.update(subjectMod).getResult();
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
index 070c6aa..ff0544f 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -47,7 +47,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-public class DefaultUserProvisioningManager implements UserProvisioningManager{
+public class DefaultUserProvisioningManager implements UserProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultUserProvisioningManager.class);
 
@@ -59,47 +59,48 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Autowired
     protected PropagationTaskExecutor taskExecutor;
-    
+
     @Autowired
-    protected UserDataBinder binder;    
+    protected UserDataBinder binder;
 
     @Autowired
-    protected UserDAO userDAO;   
+    protected UserDAO userDAO;
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO){
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO) {
         return create(userTO, true, false, null, Collections.<String>emptySet());
     }
-    
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
-        /*WorkflowResult<Map.Entry<Long, Boolean>> created;
-        try {
-            created = uwfAdapter.create(userTO,storePassword);
-        } catch (RuntimeException e) {
-            throw e;
-        }
-
-        List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
-                created, userTO.getPassword(), userTO.getVirAttrs(), userTO.getMemberships());
 
-        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
-        }
-
-        Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
-                created.getResult().getKey(), propagationReporter.getStatuses());
-        return result;*/
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
+        /* WorkflowResult<Map.Entry<Long, Boolean>> created;
+         * try {
+         * created = uwfAdapter.create(userTO,storePassword);
+         * } catch (RuntimeException e) {
+         * throw e;
+         * }
+         *
+         * List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
+         * created, userTO.getPassword(), userTO.getVirAttrs(), userTO.getMemberships());
+         *
+         * PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+         * getBean(PropagationReporter.class);
+         * try {
+         * taskExecutor.execute(tasks, propagationReporter);
+         * } catch (PropagationException e) {
+         * LOG.error("Error propagation primary resource", e);
+         * propagationReporter.onPrimaryResourceFailure(tasks);
+         * }
+         *
+         * Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
+         * created.getResult().getKey(), propagationReporter.getStatuses());
+         * return result; */
         return create(userTO, storePassword, false, null, Collections.<String>emptySet());
     }
-    
+
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
-                WorkflowResult<Map.Entry<Long, Boolean>> created;
+    public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword,
+            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
+        WorkflowResult<Map.Entry<Long, Boolean>> created;
         try {
             created = uwfAdapter.create(userTO, disablePwdPolicyCheck, enabled, storePassword);
         } catch (RuntimeException e) {
@@ -126,7 +127,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
     public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod) {
         return update(userMod, false);
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
@@ -174,9 +175,9 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult().getKey().getId(), propagationReporter.getStatuses());
-        return result;    
+        return result;
     }
-       
+
     @Override
     public List<PropagationStatus> delete(final Long userId) {
 
@@ -185,7 +186,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Override
     public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources) {
-        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(subjectId,excludedResources);
+        List<PropagationTask> tasks = propagationManager.getUserDeleteTaskIds(subjectId, excludedResources);
 
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
@@ -205,7 +206,6 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         return propagationReporter.getStatuses();
     }
 
-    
     @Override
     public Long unlink(UserMod userMod) {
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = uwfAdapter.update(userMod);
@@ -216,7 +216,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
     public Long link(UserMod subjectMod) {
         return uwfAdapter.update(subjectMod).getResult().getKey().getId();
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod) {
         WorkflowResult<Long> updated;
@@ -225,7 +225,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } else {
             updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
         }
-  
+
         List<PropagationStatus> statuses = propagateStatus(user, statusMod);
         return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
     }
@@ -238,7 +238,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } else {
             updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
         }
-        
+
         List<PropagationStatus> statuses = propagateStatus(user, statusMod);
         return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
     }
@@ -251,13 +251,13 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } else {
             updated = new WorkflowResult<Long>(user.getId(), null, statusMod.getType().name().toLowerCase());
         }
-        
+
         List<PropagationStatus> statuses = propagateStatus(user, statusMod);
         return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult(), statuses);
     }
-    
-    public List<PropagationStatus> propagateStatus(SyncopeUser user, StatusMod statusMod){
-                
+
+    public List<PropagationStatus> propagateStatus(SyncopeUser user, StatusMod statusMod) {
+
         Set<String> resourcesToBeExcluded = new HashSet<String>(user.getResourceNames());
         resourcesToBeExcluded.removeAll(statusMod.getResourceNames());
 
@@ -271,19 +271,19 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         return propReporter.getStatuses();
-        
+
     }
 
     @Override
     public List<PropagationStatus> deprovision(Long userId, Collection<String> resources) {
-        
-        final SyncopeUser user = binder.getUserFromId(userId);        
-        
+
+        final SyncopeUser user = binder.getUserFromId(userId);
+
         final Set<String> noPropResourceName = user.getResourceNames();
         noPropResourceName.removeAll(resources);
-        
+
         final List<PropagationTask> tasks =
                 propagationManager.getUserDeleteTaskIds(userId, new HashSet<String>(resources), noPropResourceName);
         final PropagationReporter propagationReporter =
@@ -294,14 +294,14 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
-        
+
         return propagationReporter.getStatuses();
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, 
-                                               final SyncResult result, Boolean enabled, Set<String> excludedResources){
-        
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod, final Long id,
+            final SyncResult result, Boolean enabled, Set<String> excludedResources) {
+
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
         try {
             updated = uwfAdapter.update(userMod);
@@ -337,40 +337,41 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
             }
         }
 
-            PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
-                    getBean(PropagationReporter.class);
+        PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
+                getBean(PropagationReporter.class);
 
-            List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResources);
-               
-            try {
-                    taskExecutor.execute(tasks, propagationReporter);
-            } catch (PropagationException e) {
-                    LOG.error("Error propagation primary resource", e);
-                    propagationReporter.onPrimaryResourceFailure(tasks);
-            }
+        List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated, updated.getResult().getKey().
+                getPassword() != null, excludedResources);
 
-            
-            return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
+        try {
+            taskExecutor.execute(tasks, propagationReporter);
+        } catch (PropagationException e) {
+            LOG.error("Error propagation primary resource", e);
+            propagationReporter.onPrimaryResourceFailure(tasks);
+        }
+
+        return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(),
+                propagationReporter.getStatuses());
 
     }
 
     @Override
     public void innerSuspend(SyncopeUser user, boolean suspend) {
-        
-            final WorkflowResult<Long> updated = uwfAdapter.suspend(user);
 
-            // propagate suspension if and only if it is required by policy
-            if (suspend) {
-                UserMod userMod = new UserMod();
-                userMod.setId(updated.getResult());
+        final WorkflowResult<Long> updated = uwfAdapter.suspend(user);
+
+        // propagate suspension if and only if it is required by policy
+        if (suspend) {
+            UserMod userMod = new UserMod();
+            userMod.setId(updated.getResult());
 
-                final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
-                        new WorkflowResult<Map.Entry<UserMod, Boolean>>(
-                                new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
-                                updated.getPropByRes(), updated.getPerformedTasks()));
+            final List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(
+                    new WorkflowResult<Map.Entry<UserMod, Boolean>>(
+                            new AbstractMap.SimpleEntry<UserMod, Boolean>(userMod, Boolean.FALSE),
+                            updated.getPropByRes(), updated.getPerformedTasks()));
 
-                taskExecutor.execute(tasks);
-            }            
+            taskExecutor.execute(tasks);
+        }
     }
 
     @Override
@@ -380,7 +381,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Override
     public void confirmPasswordReset(SyncopeUser user, String token, String password) {
-            
+
         uwfAdapter.confirmPasswordReset(user.getId(), token, password);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(user, null, null);
@@ -391,6 +392,6 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         } catch (PropagationException e) {
             LOG.error("Error propagation primary resource", e);
             propReporter.onPrimaryResourceFailure(tasks);
-        }    
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
index adc1cb0..65f7f7d 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/ProvisioningManager.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.mod.AbstractAttributableMod;
 import org.apache.syncope.common.to.AbstractAttributableTO;
 import org.apache.syncope.common.to.PropagationStatus;
 
-public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod>{
+public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod> {
 
     public Map.Entry<Long, List<PropagationStatus>> create(T subject);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
index 594bf5e..53029ac 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/RoleProvisioningManager.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.syncope.core.provisioning;
 
 import java.util.List;
@@ -24,12 +23,13 @@ import org.apache.syncope.common.mod.RoleMod;
 import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.core.propagation.PropagationException;
 
-public interface RoleProvisioningManager extends ProvisioningManager<RoleTO, RoleMod>{
-    
+public interface RoleProvisioningManager extends ProvisioningManager<RoleTO, RoleMod> {
+
     public Map.Entry<Long, List<PropagationStatus>> create(final RoleTO roleTO, Set<String> excludedResources);
-    
-    public Map.Entry<Long, List<PropagationStatus>> createInSync(final RoleTO roleTO, Map<Long, String> roleOwnerMap,Set<String> excludedResources) throws PropagationException;
-    
+
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(final RoleTO roleTO, Map<Long, String> roleOwnerMap,
+            Set<String> excludedResources) throws PropagationException;
+
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources);
-    
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
index 32a4d18..c5b70a8 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/UserProvisioningManager.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.syncope.core.provisioning;
 
 import java.util.List;
@@ -27,28 +26,30 @@ import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
 import org.apache.syncope.core.sync.SyncResult;
 
-public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserMod>{
-    
+public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserMod> {
+
     public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod);
 
     public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod);
 
     public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod);
-    
+
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword);
-    
-    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled,Set<String> excludedResources);
-    
+
+    public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword,
+            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources);
+
     public Map.Entry<Long, List<PropagationStatus>> update(final UserMod userMod, final boolean removeMemberships);
-    
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, final SyncResult result, Boolean enabled, Set<String> excludedResources);
 
-    public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources);    
-    
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod, final Long id,
+            final SyncResult result, Boolean enabled, Set<String> excludedResources);
+
+    public List<PropagationStatus> delete(Long subjectId, Set<String> excludedResources);
+
     public void innerSuspend(SyncopeUser user, boolean suspend);
-    
+
     public void requestPasswordReset(final Long id);
-    
-    public void confirmPasswordReset(SyncopeUser user,final String token,final String password);
-    
+
+    public void confirmPasswordReset(SyncopeUser user, final String token, final String password);
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7aa0db37/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
index 4857d2f..33856a9 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.camel;
 
 import java.io.ByteArrayInputStream;
@@ -65,7 +64,7 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-public class CamelRoleProvisioningManager implements RoleProvisioningManager{
+public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(CamelRoleProvisioningManager.class);
 
@@ -76,7 +75,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
     protected Map<String, PollingConsumer> consumerMap;
 
     protected List<String> knownUri;
-    
+
     @Autowired
     protected RouteDAO routeDAO;
 
@@ -99,7 +98,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
     public CamelContext getContext() {
         //ApplicationContext context = ApplicationContextProvider.getApplicationContext();
         //return context.getBean("camel-context", DefaultCamelContext.class);        
-        return contextFactory.getContext(routeDAO);  
+        return contextFactory.getContext(routeDAO);
     }
 
     public void changeRoute(String routePath) {
@@ -125,12 +124,12 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
 
     protected void sendMessage(String uri, Object obj, Map<String, Object> properties) {
         Exchange exc = new DefaultExchange(getContext());
-        
+
         Iterator<Map.Entry<String, Object>> it = properties.entrySet().iterator();
         while (it.hasNext()) {
             Map.Entry<String, Object> property = it.next();
             exc.setProperty(property.getKey(), property.getValue());
-            LOG.info("Added property {}", property.getKey());            
+            LOG.info("Added property {}", property.getKey());
         }
 
         DefaultMessage m = new DefaultMessage();
@@ -158,22 +157,22 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
             return consumerMap.get(uri);
         }
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject) {
-        
-        return create(subject, Collections.<String>emptySet());        
+
+        return create(subject, Collections.<String>emptySet());
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO roleTO, Set<String> excludedResources) {
-        
+
         String uri = "direct:createRolePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("excludedResources", excludedResources);
-        
+
         sendMessage("direct:createRole", roleTO, props);
 
         Exchange o = pollingConsumer.receive();
@@ -184,44 +183,45 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
 
         return o.getIn().getBody(Map.Entry.class);
     }
-    
+
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap, Set<String> excludedResources) throws PropagationException {
-        
+    public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,
+            Set<String> excludedResources) throws PropagationException {
+
         String uri = "direct:createRoleSyncPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map<String, Object> props = new HashMap<String, Object>();        
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("roleOwnerMap", roleOwnerMap);
         props.put("excludedResources", excludedResources);
-           
+
         sendMessage("direct:createRoleSync", roleTO, props);
 
         Exchange o = pollingConsumer.receive();
 
-        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {            
+        if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
-        
+
         return o.getIn().getBody(Map.Entry.class);
     }
 
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod) {
-                
+
         return update(subjectMod, Collections.<String>emptySet());
     }
-    
+
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
 
         String uri = "direct:updateRolePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map<String, Object> props = new HashMap<String, Object>();
         props.put("excludedResources", excludedResources);
 
-        sendMessage("direct:updateRole",subjectMod, props);
+        sendMessage("direct:updateRole", subjectMod, props);
 
         Exchange o = pollingConsumer.receive();
 
@@ -229,12 +229,12 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
 
-        return o.getIn().getBody(Map.Entry.class);        
+        return o.getIn().getBody(Map.Entry.class);
     }
 
     @Override
     public List<PropagationStatus> delete(Long subjectId) {
-        
+
         String uri = "direct:deleteRolePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
@@ -267,9 +267,9 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
 
     @Override
     public Long link(RoleMod subjectMod) {
-        
+
         String uri = "direct:linkRolePort";
-        
+
         PollingConsumer pollingConsumer = getConsumer(uri);
 
         sendMessage("direct:linkRole", subjectMod);
@@ -280,28 +280,28 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager{
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
 
-        return o.getIn().getBody(Long.class);  
+        return o.getIn().getBody(Long.class);
     }
 
     @Override
     public List<PropagationStatus> deprovision(final Long roleId, Collection<String> resources) {
-                
+
         String uri = "direct:deprovisionRolePort";
-        
+
         PollingConsumer pollingConsumer = getConsumer(uri);
-        
+
         Map props = new HashMap<String, Object>();
         props.put("resources", resources);
 
         sendMessage("direct:deprovisionRole", roleId, props);
-        
+
         Exchange o = pollingConsumer.receive();
 
         if (o.getProperty(Exchange.EXCEPTION_CAUGHT) != null) {
             throw (RuntimeException) o.getProperty(Exchange.EXCEPTION_CAUGHT);
         }
-        
+
         return o.getIn().getBody(List.class);
     }
-   
+
 }


[07/53] [abbrv] syncope git commit: Travis file aligned

Posted by il...@apache.org.
Travis file aligned


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

Branch: refs/heads/2_0_X
Commit: 43c946295c410662a59db3c62890818f60ef92f9
Parents: 0da0281
Author: giacomolm <gi...@hotmail.it>
Authored: Thu Dec 18 10:51:54 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Thu Dec 18 10:51:54 2014 +0100

----------------------------------------------------------------------
 .travis.yml | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/43c94629/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index e9245f1..1eeba36 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,24 +1,23 @@
 # Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
+# 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
+# the License. You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# 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.
-
 language: java
 jdk:
-  - openjdk6
+- openjdk6
 # default install is mvn install --quiet -DskipTests=true
 install: mvn --show-version --quiet -P skipTests
 #invoker.streamLogs: we cannot access to log files through Travis web ui, so display everything in the console
 script: mvn --show-version --quiet clean install -Dinvoker.streamLogs=true
 notifications:
-  webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi
+webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi


[12/53] [abbrv] syncope git commit: Default Syncope provisioning manager correctly restored

Posted by il...@apache.org.
Default Syncope provisioning manager correctly restored


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

Branch: refs/heads/master
Commit: efe6c5ea6ebfe99f46435e13a6799c36557eae65
Parents: de130b7
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Dec 22 15:21:47 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Dec 22 15:21:47 2014 +0100

----------------------------------------------------------------------
 .../DefaultRoleProvisioningManager.java         |  23 +-
 .../DefaultUserProvisioningManager.java         |  55 +-
 core/src/main/resources/camelRoute.xml          | 816 +++++++++----------
 core/src/main/resources/coreContext.xml         |   4 +-
 4 files changed, 459 insertions(+), 439 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
index de9e1fc..f376641 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultRoleProvisioningManager.java
@@ -70,13 +70,7 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO subject, Set<String> excludedResources) {
         
-        WorkflowResult<Long> created;
-        try{
-            created = rwfAdapter.create(subject);
-        }
-        catch(RuntimeException e){
-            throw e;
-        }
+        WorkflowResult<Long> created = rwfAdapter.create(subject);
 
         EntitlementUtil.extendAuthContext(created.getResult());
 
@@ -89,6 +83,9 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
+
+        final RoleTO savedTO = binder.getRoleTO(created.getResult());
+        savedTO.getPropagationStatusTOs().addAll(propagationReporter.getStatuses());
         
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult(), propagationReporter.getStatuses());
@@ -125,17 +122,10 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
     @Override
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
                 
-        WorkflowResult<Long> updated;
-        
-        try{
-            updated = rwfAdapter.update(subjectMod);
-        }
-        catch(RuntimeException e){
-            throw e;
-        }
+        WorkflowResult<Long> updated = rwfAdapter.update(subjectMod);
 
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,
-                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate(),excludedResources);
+                subjectMod.getVirAttrsToRemove(), subjectMod.getVirAttrsToUpdate());
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().getBean(
                 PropagationReporter.class);
         try {
@@ -144,6 +134,7 @@ public class DefaultRoleProvisioningManager implements RoleProvisioningManager{
             LOG.error("Error propagation primary resource", e);
             propagationReporter.onPrimaryResourceFailure(tasks);
         }
+
         
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 updated.getResult(), propagationReporter.getStatuses());

http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
index 54f677c..070c6aa 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/DefaultUserProvisioningManager.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.syncope.common.mod.MembershipMod;
 import org.apache.syncope.common.mod.StatusMod;
 import org.apache.syncope.common.mod.UserMod;
 import org.apache.syncope.common.to.PropagationStatus;
@@ -67,11 +68,11 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO){
-        return create(userTO, true);
+        return create(userTO, true, false, null, Collections.<String>emptySet());
     }
     
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, boolean storePassword) {
-        WorkflowResult<Map.Entry<Long, Boolean>> created;
+        /*WorkflowResult<Map.Entry<Long, Boolean>> created;
         try {
             created = uwfAdapter.create(userTO,storePassword);
         } catch (RuntimeException e) {
@@ -92,20 +93,21 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
 
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
                 created.getResult().getKey(), propagationReporter.getStatuses());
-        return result;
+        return result;*/
+        return create(userTO, storePassword, false, null, Collections.<String>emptySet());
     }
     
     @Override
     public Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
                 WorkflowResult<Map.Entry<Long, Boolean>> created;
         try {
-            created = uwfAdapter.create(userTO,storePassword);
+            created = uwfAdapter.create(userTO, disablePwdPolicyCheck, enabled, storePassword);
         } catch (RuntimeException e) {
             throw e;
         }
 
         List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(
-                created, userTO.getPassword(), userTO.getVirAttrs(), excludedResources, null);
+                created, userTO.getPassword(), userTO.getVirAttrs(), excludedResources, userTO.getMemberships());
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
         try {
@@ -135,14 +137,39 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
         }
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated);
-
+        if (tasks.isEmpty()) {
+            // SYNCOPE-459: take care of user virtual attributes ...
+            final PropagationByResource propByResVirAttr = binder.fillVirtual(
+                    updated.getResult().getKey().getId(),
+                    userMod.getVirAttrsToRemove(),
+                    userMod.getVirAttrsToUpdate());
+            // SYNCOPE-501: update only virtual attributes (if any of them changed), password propagation is
+            // not required, take care also of membership virtual attributes
+            boolean addOrUpdateMemberships = false;
+            for (MembershipMod membershipMod : userMod.getMembershipsToAdd()) {
+                if (!binder.fillMembershipVirtual(
+                        updated.getResult().getKey().getId(),
+                        membershipMod.getRole(),
+                        null,
+                        membershipMod.getVirAttrsToRemove(),
+                        membershipMod.getVirAttrsToUpdate(),
+                        false).isEmpty()) {
+                    addOrUpdateMemberships = true;
+                }
+            }
+            tasks.addAll(!propByResVirAttr.isEmpty() || addOrUpdateMemberships || removeMemberships
+                    ? propagationManager.getUserUpdateTaskIds(updated, false, null)
+                    : Collections.<PropagationTask>emptyList());
+        }
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().
                 getBean(PropagationReporter.class);
-        try {
-            taskExecutor.execute(tasks, propagationReporter);
-        } catch (PropagationException e) {
-            LOG.error("Error propagation primary resource", e);
-            propagationReporter.onPrimaryResourceFailure(tasks);
+        if (!tasks.isEmpty()) {
+            try {
+                taskExecutor.execute(tasks, propagationReporter);
+            } catch (PropagationException e) {
+                LOG.error("Error propagation primary resource", e);
+                propagationReporter.onPrimaryResourceFailure(tasks);
+            }
         }
 
         Map.Entry<Long, List<PropagationStatus>> result = new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(
@@ -272,7 +299,8 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
     }
 
     @Override
-    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, final SyncResult result, Boolean enabled, Set<String> excludedResources){
+    public Map.Entry<Long, List<PropagationStatus>> updateInSync(final UserMod userMod,final Long id, 
+                                               final SyncResult result, Boolean enabled, Set<String> excludedResources){
         
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated;
         try {
@@ -313,13 +341,14 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager{
                     getBean(PropagationReporter.class);
 
             List<PropagationTask> tasks = propagationManager.getUserUpdateTaskIds(updated,updated.getResult().getKey().getPassword() != null,excludedResources);
-                
+               
             try {
                     taskExecutor.execute(tasks, propagationReporter);
             } catch (PropagationException e) {
                     LOG.error("Error propagation primary resource", e);
                     propagationReporter.onPrimaryResourceFailure(tasks);
             }
+
             
             return new AbstractMap.SimpleEntry<Long, List<PropagationStatus>>(updated.getResult().getKey().getId(), propagationReporter.getStatuses());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/resources/camelRoute.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/camelRoute.xml b/core/src/main/resources/camelRoute.xml
index e1ad071..260f01c 100644
--- a/core/src/main/resources/camelRoute.xml
+++ b/core/src/main/resources/camelRoute.xml
@@ -24,445 +24,445 @@ under the License.
                            http://camel.apache.org/schema/spring
                            http://camel.apache.org/schema/spring/camel-spring.xsd">
  
+  <!--
+      The default routes define each task involved in user creation:
+      main operations consist in user workflow creation and its propagation.         
+  -->
+  <routeContext id="defaultRoutes" xmlns="http://camel.apache.org/schema/spring">    
+        
     <!--
-        The default routes define each task involved in user creation:
-        main operations consist in user workflow creation and its propagation.         
+        CREATE USER
+        This is the entry point of the route and is involved in accepting
+        the UserTO. When it arrives, the user workflow is created. If the
+        creation is successfull, the result is sent to propagation, otherwise
+        if an exception was raised, the exception has to be returned to the
+        caller. The property actual allows to store the received UserTO in
+        order to use it later.
     -->
-    <routeContext id="defaultRoutes" xmlns="http://camel.apache.org/schema/spring">    
-        
-        <!--
-            CREATE USER
-            This is the entry point of the route and is involved in accepting
-            the UserTO. When it arrives, the user workflow is created. If the
-            creation is successfull, the result is sent to propagation, otherwise
-            if an exception was raised, the exception has to be returned to the
-            caller. The property actual allows to store the received UserTO in
-            order to use it later.
-        -->
         
-        <route id="createUser">
-          <from uri="direct:createUser"/>
-          <setProperty propertyName="actual">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="uwfAdapter" method="create(${body},${property.disablePwdPolicyCheck},
+    <route id="createUser">
+      <from uri="direct:createUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" method="create(${body},${property.disablePwdPolicyCheck},
                                  ${property.enabled},${property.storePassword})"/>
-            <process ref="defaultUserCreatePropagation" />
-            <to uri="direct:createPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+        <process ref="defaultUserCreatePropagation" />
+        <to uri="direct:createPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
-        <!--
-            The propagation route deals with propagation of created user. In this
-            case we used a custom processor to perform this task: it means that
-            a custom java class contains the propagation strategy.
-        -->
+    <!--
+        The propagation route deals with propagation of created user. In this
+        case we used a custom processor to perform this task: it means that
+        a custom java class contains the propagation strategy.
+    -->
        
-        <!--
-            UPDATE USER
-        -->
-        <route id="updateUser">
-            <from uri="direct:updateUser"/>
-            <setProperty propertyName="actual">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <process ref="defaultUserUpdatePropagation" />
-              <to uri="direct:updatePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updatePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE USER
+    -->
+    <route id="updateUser">
+      <from uri="direct:updateUser"/>
+      <setProperty propertyName="actual">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <process ref="defaultUserUpdatePropagation" />
+        <to uri="direct:updatePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updatePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
 
                 
-        <!--
-            UPDATE SYNC USER
-        -->
-        <route id="updateSyncUser">
-            <from uri="direct:updateSyncUser"/>            
-            <doTry>
-              <bean ref="uwfAdapter" method="update(${body})"/>
-              <to uri="direct:syncUserStatus"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateSyncPort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE SYNC USER
+    -->
+    <route id="updateSyncUser">
+      <from uri="direct:updateSyncUser"/>            
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <to uri="direct:syncUserStatus"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <route id="syncUserStatus">
-            <from uri="direct:syncUserStatus"/>
-                <process ref="userStatusOnSync" />
-                <process ref="defaultUserUpdateSyncPropagation" />
-            <to uri="direct:updateSyncPort"/>
-        </route>
-        <!--
-            DELETE USER
-        -->
-        <route id="deleteUser">
-            <from uri="direct:deleteUser"/>
-            <doTry>
-              <process ref="defaultUserDeletePropagation" />
-              <bean ref="uwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deletePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deletePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <route id="syncUserStatus">
+      <from uri="direct:syncUserStatus"/>
+      <process ref="userStatusOnSync" />
+      <process ref="defaultUserUpdateSyncPropagation" />
+      <to uri="direct:updateSyncPort"/>
+    </route>
+    <!--
+        DELETE USER
+    -->
+    <route id="deleteUser">
+      <from uri="direct:deleteUser"/>
+      <doTry>
+        <process ref="defaultUserDeletePropagation" />
+        <bean ref="uwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deletePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deletePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkUser">
-            <from uri="direct:unlinkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:unlinkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkUser">
+      <from uri="direct:unlinkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:unlinkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkUser">
-            <from uri="direct:linkUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult.getKey}</simple>
-                </setBody>
-                <to uri="direct:linkPort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkPort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkUser">
+      <from uri="direct:linkUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult.getKey}</simple>
+        </setBody>
+        <to uri="direct:linkPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkPort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!-- 
-            ACTIVATE USER
-        -->
-        <route id="activateUser">
-            <from uri="direct:activateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            REACTIVATE USER
-        -->
-        <route id="reactivateUser">
-            <from uri="direct:reactivateUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="reactivate(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>    
-        </route>
-        <!-- 
-            SUSPEND USER
-        -->
-        <route id="suspendUser">
-            <from uri="direct:suspendUser"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <to uri="direct:statusUser"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:statusPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <!-- 
+        ACTIVATE USER
+    -->
+    <route id="activateUser">
+      <from uri="direct:activateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="activate(${body}, ${property.token})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        REACTIVATE USER
+    -->
+    <route id="reactivateUser">
+      <from uri="direct:reactivateUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="reactivate(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>    
+    </route>
+    <!-- 
+        SUSPEND USER
+    -->
+    <route id="suspendUser">
+      <from uri="direct:suspendUser"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <to uri="direct:statusUser"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:statusPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
         
-        <!-- 
-            STATUS PROPAGATION
-        -->
+    <!-- 
+        STATUS PROPAGATION
+    -->
         
-        <route id="statusUser">
-            <from uri="direct:statusUser"/>            
-              <process ref="defaultUserStatusPropagation" />
-            <to uri="direct:statusPort"/>              
-        </route>
+    <route id="statusUser">
+      <from uri="direct:statusUser"/>            
+      <process ref="defaultUserStatusPropagation" />
+      <to uri="direct:statusPort"/>              
+    </route>
         
         
-        <!--
-            DEPROVISION USER
-        -->
-        <route id="deprovisionUser">
-            <from uri="direct:deprovisionUser"/>            
-              <process ref="defaultUserDeprovisionPropagation" />
-              <to uri="direct:deprovisionPort"/>              
-        </route>
+    <!--
+        DEPROVISION USER
+    -->
+    <route id="deprovisionUser">
+      <from uri="direct:deprovisionUser"/>            
+      <process ref="defaultUserDeprovisionPropagation" />
+      <to uri="direct:deprovisionPort"/>              
+    </route>
         
-        <!--
-            CREATE ROLE
-        -->
+    <!--
+        CREATE ROLE
+    -->
         
-        <route id="createRole">
-          <from uri="direct:createRole"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreatePropagation" />
-            <to uri="direct:createRolePort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRolePort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <route id="createRole">
+      <from uri="direct:createRole"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreatePropagation" />
+        <to uri="direct:createRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRolePort"/>
+        </doCatch>
+      </doTry>
+    </route> 
                
-        <!--
-            CREATE ROLE SYNC
-        -->
-        <route id="createRoleSync">
-          <from uri="direct:createRoleSync"/>
-          <setProperty propertyName="subject">
-            <simple>${body}</simple>
-          </setProperty>
-          <doTry>
-            <bean ref="rwfAdapter" method="create(${body})"/>
-            <process ref="defaultRoleCreateSyncPropagation" />
-            <to uri="direct:createRoleSyncPort"/>
-            <doCatch>        
-                <exception>java.lang.RuntimeException</exception>
-                <handled>
-                    <constant>false</constant>
-                </handled>
-                <to uri="direct:createRoleSyncPort"/>
-            </doCatch>
-          </doTry>
-        </route> 
+    <!--
+        CREATE ROLE SYNC
+    -->
+    <route id="createRoleSync">
+      <from uri="direct:createRoleSync"/>
+      <setProperty propertyName="subject">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="create(${body})"/>
+        <process ref="defaultRoleCreateSyncPropagation" />
+        <to uri="direct:createRoleSyncPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:createRoleSyncPort"/>
+        </doCatch>
+      </doTry>
+    </route> 
         
          
-        <!--
-            UPDATE ROLE
-        -->
-        <route id="updateRole">
-            <from uri="direct:updateRole"/>
-            <setProperty propertyName="subjectMod">
-                <simple>${body}</simple>
-            </setProperty>
-            <doTry>
-              <bean ref="rwfAdapter" method="update(${body})"/>
-              <process ref="defaultRoleUpdatePropagation" />
-              <to uri="direct:updateRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:updateRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        UPDATE ROLE
+    -->
+    <route id="updateRole">
+      <from uri="direct:updateRole"/>
+      <setProperty propertyName="subjectMod">
+        <simple>${body}</simple>
+      </setProperty>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <process ref="defaultRoleUpdatePropagation" />
+        <to uri="direct:updateRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:updateRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
                
-        <!--
-            DELETE ROLE
-        -->
-        <route id="deleteRole">
-            <from uri="direct:deleteRole"/>
-            <doTry>
-              <process ref="defaultRoleDeletePropagation" />
-              <bean ref="rwfAdapter" method="delete(${body})"/>
-              <setBody>
-                  <simple>${property.statuses}</simple>
-              </setBody>
-              <to uri="direct:deleteRolePort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:deleteRolePort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <!--
+        DELETE ROLE
+    -->
+    <route id="deleteRole">
+      <from uri="direct:deleteRole"/>
+      <doTry>
+        <process ref="defaultRoleDeletePropagation" />
+        <bean ref="rwfAdapter" method="delete(${body})"/>
+        <setBody>
+          <simple>${property.statuses}</simple>
+        </setBody>
+        <to uri="direct:deleteRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:deleteRolePort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-        <!-- 
-            UNLINK USER
-        -->
-        <route id="unlinkRole">
-            <from uri="direct:unlinkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:unlinkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:unlinkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <!-- 
+        UNLINK USER
+    -->
+    <route id="unlinkRole">
+      <from uri="direct:unlinkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:unlinkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:unlinkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            LINK USER
-        -->
+    <!--
+        LINK USER
+    -->
         
-        <route id="linkRole">
-            <from uri="direct:linkRole"/>
-            <doTry>
-                <bean ref="rwfAdapter" method="update(${body})"/>
-                <setBody>
-                   <simple>${body.getResult}</simple>
-                </setBody>
-                <to uri="direct:linkRolePort"/>
-                <doCatch>        
-                    <exception>java.lang.RuntimeException</exception>
-                    <handled>
-                        <constant>false</constant>
-                    </handled>
-                    <to uri="direct:linkRolePort"/>
-                </doCatch>
-            </doTry>            
-        </route>
+    <route id="linkRole">
+      <from uri="direct:linkRole"/>
+      <doTry>
+        <bean ref="rwfAdapter" method="update(${body})"/>
+        <setBody>
+          <simple>${body.getResult}</simple>
+        </setBody>
+        <to uri="direct:linkRolePort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:linkRolePort"/>
+        </doCatch>
+      </doTry>            
+    </route>
         
-        <!--
-            DEPROVISION ROLE
-        -->
-        <route id="deprovisionRole">
-            <from uri="direct:deprovisionRole"/>            
-              <process ref="defaultRoleDeprovisionPropagation" />
-              <to uri="direct:deprovisionRolePort"/>              
-        </route>
+    <!--
+        DEPROVISION ROLE
+    -->
+    <route id="deprovisionRole">
+      <from uri="direct:deprovisionRole"/>            
+      <process ref="defaultRoleDeprovisionPropagation" />
+      <to uri="direct:deprovisionRolePort"/>              
+    </route>
         
-        <!--
-            SUSPEND USER AFTER POLICY VIOLATION
-        -->
+    <!--
+        SUSPEND USER AFTER POLICY VIOLATION
+    -->
         
-        <route id="suspendUserWF">
-            <from uri="direct:suspendUserWF"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="suspend(${body})"/>
-                <process ref="defaultUserWFSuspendPropagation"/>
-                <to uri="direct:suspendWFPort"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:suspendWFPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
+    <route id="suspendUserWF">
+      <from uri="direct:suspendUserWF"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="suspend(${body})"/>
+        <process ref="defaultUserWFSuspendPropagation"/>
+        <to uri="direct:suspendWFPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:suspendWFPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
         
-        <!--
-            REQUEST PASSWORD RESET ROUTE
-        -->
+    <!--
+        REQUEST PASSWORD RESET ROUTE
+    -->
         
-        <route id="requestPwdReset">
-            <from uri="direct:requestPwdReset"/>
-            <doTry>
-                <bean ref="uwfAdapter" method="requestPasswordReset(${body})"/>
-                <to uri="direct:requestPwdResetPort"/>
-                <doCatch>        
-                   <exception>java.lang.RuntimeException</exception>
-                   <handled>
-                       <constant>false</constant>
-                   </handled>
-                   <to uri="direct:requestPwdResetPort"/>
-                </doCatch>
-            </doTry>  
-        </route>
-        <!--
-            CONFIRM PASSWORD RESET
-        -->
-        <route id="confirmPwdReset">
-            <from uri="direct:confirmPwdReset"/>
-            <doTry>
-              <bean ref="uwfAdapter" method="confirmPasswordReset(${property.userId},${property.token},${property.password})"/>
-              <process ref="defaultUserConfirmPwdResetPropagation" />
-              <to uri="direct:confirmPwdResetPort"/>
-              <doCatch>        
-                  <exception>java.lang.RuntimeException</exception>
-                  <handled>
-                      <constant>false</constant>
-                  </handled>
-                  <to uri="direct:confirmPwdResetPort"/>
-              </doCatch>
-            </doTry>
-        </route>
+    <route id="requestPwdReset">
+      <from uri="direct:requestPwdReset"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="requestPasswordReset(${body})"/>
+        <to uri="direct:requestPwdResetPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:requestPwdResetPort"/>
+        </doCatch>
+      </doTry>  
+    </route>
+    <!--
+        CONFIRM PASSWORD RESET
+    -->
+    <route id="confirmPwdReset">
+      <from uri="direct:confirmPwdReset"/>
+      <doTry>
+        <bean ref="uwfAdapter" method="confirmPasswordReset(${property.userId},${property.token},${property.password})"/>
+        <process ref="defaultUserConfirmPwdResetPropagation" />
+        <to uri="direct:confirmPwdResetPort"/>
+        <doCatch>        
+          <exception>java.lang.RuntimeException</exception>
+          <handled>
+            <constant>false</constant>
+          </handled>
+          <to uri="direct:confirmPwdResetPort"/>
+        </doCatch>
+      </doTry>
+    </route>
         
-    </routeContext>
-    <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
-    <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
-    <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
-    <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
-    <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
-    <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
-    <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
-    <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
-    <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
-    <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
-    <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
-    <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
-    <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
-    <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>            
+  </routeContext>
+  <bean id="defaultUserCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserCreatePropagation"/>
+  <bean id="defaultUserUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdatePropagation"/>    
+  <bean id="userStatusOnSync" class="org.apache.syncope.core.provisioning.camel.processors.UserStatusOnSync"/>
+  <bean id="defaultUserUpdateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserUpdateInSyncPropagation"/>
+  <bean id="defaultUserDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeletePropagation"/>    
+  <bean id="defaultUserDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserDeprovisionPropagation"/>    
+  <bean id="defaultUserWFSuspendPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserWFSuspendPropagation"/>
+  <bean id="defaultUserStatusPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserStatusPropagation"/>
+  <bean id="defaultUserConfirmPwdResetPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultUserConfirmPwdResetPropagation"/>
+  <bean id="defaultRoleCreatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreatePropagation"/>
+  <bean id="defaultRoleCreateSyncPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleCreateSyncPropagation"/>
+  <bean id="defaultRoleUpdatePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleUpdatePropagation"/>
+  <bean id="defaultRoleDeletePropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeletePropagation"/>    
+  <bean id="defaultRoleDeprovisionPropagation" class="org.apache.syncope.core.provisioning.camel.processors.DefaultRoleDeprovisionPropagation"/>            
 </beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/efe6c5ea/core/src/main/resources/coreContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index 3950689..e39ceed 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -76,8 +76,8 @@ under the License.
     <context:exclude-filter type="regex" expression=".*\.activiti\..*"/>
   </context:component-scan>
   
-  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager"/>
-  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager"/>
+  <bean id="defaultUserProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultUserProvisioningManager"/>
+  <bean id="defaultRoleProvisioningManager" class="org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager"/>
 
   <bean id="nonJPAdbInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
     <property name="dataSource" ref="dataSource"/>


[53/53] [abbrv] syncope git commit: Merge branch 'master' into 2_0_X

Posted by il...@apache.org.
Merge branch 'master' into 2_0_X


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

Branch: refs/heads/2_0_X
Commit: f6d48fd9ec9704f3ee9e971928da7fcd93e4411d
Parents: ed49626 a90a48a
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 5 14:33:46 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 5 14:33:46 2015 +0100

----------------------------------------------------------------------
 .../apache/syncope/client/SyncopeClient.java    |  26 +
 .../syncope/common/services/RouteService.java   |  71 +++
 .../common/services/WorkflowService.java        |   9 +
 .../org/apache/syncope/common/to/RouteTO.java   |  60 +++
 .../syncope/common/types/RESTHeaders.java       |  11 +
 .../apache/syncope/console/SyncopeSession.java  |   7 +
 .../syncope/console/pages/Configuration.java    | 133 +++++
 .../syncope/console/pages/RouteModalPage.java   |  90 ++++
 .../syncope/console/rest/RouteRestClient.java   |  63 +++
 console/src/main/resources/authorizations.xml   |  13 +
 .../syncope/console/pages/Configuration.html    | 403 ++++++++--------
 .../console/pages/Configuration.properties      |   1 +
 .../syncope/console/pages/RouteModalPage.html   |  49 ++
 .../console/pages/RouteModalPage.properties     |  18 +
 .../console/pages/RouteModalPage_it.properties  |  18 +
 .../pages/RouteModalPage_pt_BR.properties       |  18 +
 core/pom.xml                                    |  19 +
 .../syncope/core/init/CamelRouteLoader.java     | 106 ++++
 .../init/ImplementationClassNamesLoader.java    |   1 -
 .../core/init/SpringContextInitializer.java     |   5 +
 .../core/persistence/SQLSchemaGenerator.java    |  25 +-
 .../persistence/beans/AbstractAttrValue.java    |  33 +-
 .../persistence/beans/AbstractBaseBean.java     |   2 +-
 .../core/persistence/beans/CamelRoute.java      |  61 +++
 .../persistence/beans/ExternalResource.java     |   2 +-
 .../core/persistence/beans/Notification.java    |   5 +-
 .../core/persistence/beans/package-info.java    |   1 -
 .../core/persistence/dao/ConnectorRegistry.java |   2 +-
 .../syncope/core/persistence/dao/RouteDAO.java  |  34 ++
 .../core/persistence/dao/impl/RouteDAOImpl.java |  59 +++
 .../entity/AbstractSyncTaskCheck.java           |   2 +-
 .../entity/AbstractSyncTaskValidator.java       |   4 +-
 .../validation/entity/AttrCheck.java            |   2 +-
 .../validation/entity/AttrValueCheck.java       |   2 +-
 .../validation/entity/ConnInstanceCheck.java    |   2 +-
 .../entity/ExternalResourceCheck.java           |   2 +-
 .../validation/entity/NotificationCheck.java    |   4 +-
 .../validation/entity/PolicyCheck.java          |   2 +-
 .../validation/entity/PropagationTaskCheck.java |   2 +-
 .../validation/entity/ReportCheck.java          |   2 +-
 .../validation/entity/SchedTaskCheck.java       |   2 +-
 .../validation/entity/SchemaCheck.java          |   2 +-
 .../validation/entity/SchemaNameCheck.java      |   2 +-
 .../validation/entity/SyncopeRoleCheck.java     |   2 +-
 .../validation/entity/SyncopeUserCheck.java     |   3 +-
 .../syncope/core/policy/PolicyEvaluator.java    |   5 +-
 .../syncope/core/policy/PolicyPattern.java      |   1 +
 .../core/propagation/PropagationReporter.java   |   2 +-
 .../impl/DBPasswordPropagationActions.java      |  16 +-
 .../impl/PriorityPropagationTaskExecutor.java   |   8 +-
 .../propagation/impl/PropagationManager.java    |   8 +-
 .../syncope/core/propagation/package-info.java  |   1 -
 .../DefaultRoleProvisioningManager.java         | 226 +++++++++
 .../DefaultUserProvisioningManager.java         | 397 +++++++++++++++
 .../core/provisioning/ProvisioningManager.java  |  42 ++
 .../provisioning/RoleProvisioningManager.java   |  35 ++
 .../provisioning/UserProvisioningManager.java   |  55 +++
 .../core/provisioning/camel/CamelDetector.java  |  77 +++
 .../camel/CamelRoleProvisioningManager.java     | 293 +++++++++++
 .../camel/CamelUserProvisioningManager.java     | 482 +++++++++++++++++++
 .../provisioning/camel/SyncopeCamelContext.java | 139 ++++++
 .../DefaultRoleCreatePropagation.java           |  80 +++
 .../DefaultRoleCreateSyncPropagation.java       |  81 ++++
 .../DefaultRoleDeletePropagation.java           | 104 ++++
 .../DefaultRoleDeprovisionPropagation.java      |  79 +++
 .../DefaultRoleUpdatePropagation.java           |  81 ++++
 .../DefaultUserConfirmPwdResetPropagation.java  |  62 +++
 .../DefaultUserCreatePropagation.java           |  81 ++++
 .../DefaultUserDeletePropagation.java           |  75 +++
 .../DefaultUserDeprovisionPropagation.java      |  79 +++
 .../DefaultUserStatusPropagation.java           |  81 ++++
 .../DefaultUserUpdateInSyncPropagation.java     |  86 ++++
 .../DefaultUserUpdatePropagation.java           | 123 +++++
 .../DefaultUserWFSuspendPropagation.java        |  67 +++
 .../camel/processors/UserStatusOnSync.java      |  75 +++
 .../syncope/core/quartz/package-info.java       |   1 -
 .../syncope/core/report/ReportletConfClass.java |   2 +-
 .../core/report/cocoon/TextSerializer.java      |   2 +-
 .../core/rest/controller/LoggerController.java  |   4 +-
 .../core/rest/controller/RoleController.java    | 111 +----
 .../core/rest/controller/RouteController.java   |  92 ++++
 .../core/rest/controller/UserController.java    | 194 ++------
 .../core/rest/data/ReportDataBinder.java        |   6 +-
 .../syncope/core/rest/data/RouteDataBinder.java |  38 ++
 .../rest/utils/QueryResourceInfoComparator.java |   4 +-
 .../rest/utils/RestServiceExceptionMapper.java  |   4 +-
 .../syncope/core/security/AsymmetricCipher.java |   1 +
 .../core/services/ConnectorServiceImpl.java     |   2 +-
 .../core/services/PolicyServiceImpl.java        |   2 +-
 .../syncope/core/services/RouteServiceImpl.java |  76 +++
 .../core/services/WorkflowServiceImpl.java      |  18 +-
 .../apache/syncope/core/sync/SyncActions.java   |   3 +-
 .../apache/syncope/core/sync/SyncResult.java    |   7 +-
 .../impl/AbstractSubjectPushResultHandler.java  |   1 -
 .../syncope/core/sync/impl/AbstractSyncJob.java |   2 +-
 .../sync/impl/AbstractSyncopeResultHandler.java |  11 +-
 .../core/sync/impl/LDAPPasswordSyncActions.java |  10 +-
 .../core/sync/impl/RoleSyncResultHandler.java   |  35 +-
 .../core/sync/impl/UserSyncResultHandler.java   | 111 +++--
 .../core/util/AttributeDeserializer.java        |   4 +-
 .../syncope/core/util/ContentLoaderHandler.java |  20 +-
 .../apache/syncope/core/util/RouteManager.java  |  42 ++
 .../syncope/core/util/SecureRandomUtil.java     |   8 +-
 .../core/util/SyncTokenDeserializer.java        |  22 +-
 .../apache/syncope/core/util/jexl/JexlUtil.java |   4 +-
 .../core/workflow/WorkflowUserSuspender.java    |  29 +-
 .../syncope/core/workflow/package-info.java     |   1 -
 .../role/AbstractRoleWorkflowAdapter.java       |   2 +-
 .../user/AbstractUserWorkflowAdapter.java       |  11 +-
 .../workflow/user/NoOpUserWorkflowAdapter.java  |   6 +
 .../core/workflow/user/UserWorkflowAdapter.java |   2 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   6 +
 .../user/activiti/SyncopeGroupManager.java      |   2 +-
 .../user/activiti/SyncopeUserManager.java       |   2 +-
 core/src/main/resources/camelRoute.xml          | 468 ++++++++++++++++++
 core/src/main/resources/content.xml             |   3 +
 core/src/main/resources/coreContext.xml         |  12 +-
 .../resources/persistenceContextEMFactory.xml   |   4 +-
 core/src/main/resources/provisioning.properties |  18 +
 .../resources/report/staticReportlet2fo.xsl     |  98 ++--
 .../resources/report/staticReportlet2html.xsl   |  84 ++--
 .../resources/report/userReportlet2html.xsl     |   6 +-
 core/src/main/resources/roleRoute.xml           | 174 +++++++
 core/src/main/resources/userRoute.xml           | 263 ++++++++++
 core/src/main/resources/wadl2html/index.xsl     |  80 +--
 .../core/persistence/dao/DerSchemaTest.java     |   1 -
 .../core/persistence/dao/EntitlementTest.java   |   2 +-
 .../persistence/dao/SecurityQuestionTest.java   |   2 +-
 .../core/persistence/dao/VirSchemaTest.java     |   1 -
 .../syncope/core/rest/ConnectorTestITCase.java  |   6 +-
 .../core/rest/NotificationTestITCase.java       |   2 +-
 .../syncope/core/rest/PolicyTestITCase.java     |   4 +-
 .../syncope/core/rest/ResourceTestITCase.java   |   2 +-
 core/src/test/resources/content.xml             |   3 +
 pom.xml                                         |  18 +-
 135 files changed, 5636 insertions(+), 834 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/f6d48fd9/core/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/syncope/blob/f6d48fd9/pom.xml
----------------------------------------------------------------------


[46/53] [abbrv] syncope git commit: Partially fixed #7

Posted by il...@apache.org.
Partially fixed #7


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

Branch: refs/heads/master
Commit: ec34515da73044960f445aa472306dbf87ca2c8e
Parents: b1d2ac6
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Jan 5 11:53:23 2015 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Jan 5 11:53:23 2015 +0100

----------------------------------------------------------------------
 .../camel/CamelRoleProvisioningManager.java     | 28 +++++---------------
 .../camel/CamelUserProvisioningManager.java     | 20 +++++++++-----
 .../provisioning/camel/SyncopeCamelContext.java |  9 +++----
 .../DefaultRoleCreatePropagation.java           |  2 ++
 .../DefaultRoleCreateSyncPropagation.java       |  1 +
 .../DefaultRoleDeprovisionPropagation.java      |  1 +
 .../DefaultRoleUpdatePropagation.java           |  2 ++
 .../DefaultUserCreatePropagation.java           |  2 ++
 .../DefaultUserDeletePropagation.java           |  1 +
 .../DefaultUserDeprovisionPropagation.java      |  1 +
 .../DefaultUserStatusPropagation.java           |  1 +
 .../DefaultUserUpdateInSyncPropagation.java     |  2 ++
 .../DefaultUserUpdatePropagation.java           |  1 +
 .../DefaultUserWFSuspendPropagation.java        |  1 +
 .../camel/processors/UserStatusOnSync.java      |  1 +
 15 files changed, 40 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
index 9b121a4..96f5227 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelRoleProvisioningManager.java
@@ -18,10 +18,7 @@
  */
 package org.apache.syncope.core.provisioning.camel;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
 import java.io.InputStream;
-import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -30,39 +27,23 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.ProducerTemplate;
-import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
-import org.apache.camel.model.Constants;
-import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.common.mod.RoleMod;
 import org.apache.syncope.common.to.PropagationStatus;
 import org.apache.syncope.common.to.RoleTO;
-import org.apache.syncope.core.persistence.beans.CamelRoute;
 import org.apache.syncope.core.persistence.dao.RouteDAO;
 import org.apache.syncope.core.propagation.PropagationException;
 import org.apache.syncope.core.provisioning.RoleProvisioningManager;
-import org.apache.syncope.core.util.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
@@ -84,7 +65,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
 
     public CamelRoleProvisioningManager() throws Exception {
         knownUri = new ArrayList<String>();
-        consumerMap = new HashMap();
+        consumerMap = new HashMap<String, PollingConsumer>();
     }
 
     public void startContext() throws Exception {
@@ -165,6 +146,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> create(RoleTO roleTO, Set<String> excludedResources) {
 
         String uri = "direct:createRolePort";
@@ -185,6 +167,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> createInSync(RoleTO roleTO, Map<Long, String> roleOwnerMap,
             Set<String> excludedResources) throws PropagationException {
 
@@ -213,6 +196,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources) {
 
         String uri = "direct:updateRolePort";
@@ -233,6 +217,7 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> delete(Long subjectId) {
 
         String uri = "direct:deleteRolePort";
@@ -284,13 +269,14 @@ public class CamelRoleProvisioningManager implements RoleProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> deprovision(final Long roleId, Collection<String> resources) {
 
         String uri = "direct:deprovisionRolePort";
 
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("resources", resources);
 
         sendMessage("direct:deprovisionRole", roleId, props);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
index 01b057a..c65f8eb 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java
@@ -31,12 +31,10 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.ProducerTemplate;
-import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.camel.model.RoutesDefinition;
@@ -76,7 +74,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
 
     public CamelUserProvisioningManager() throws Exception {
         knownUri = new ArrayList<String>();
-        consumerMap = new HashMap();
+        consumerMap = new HashMap<String, PollingConsumer>();
     }
 
     public String readerToString(Reader reader, int size) throws IOException {
@@ -177,6 +175,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean storePassword,
             boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources) {
         String uri = "direct:createPort";
@@ -211,6 +210,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships) {
         String uri = "direct:updatePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
@@ -236,6 +236,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> delete(final Long userId, Set<String> excludedResources) {
         String uri = "direct:deletePort";
         PollingConsumer pollingConsumer = getConsumer(uri);
@@ -272,11 +273,12 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> activate(SyncopeUser user, StatusMod statusMod) {
         String uri = "direct:statusPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("token", statusMod.getToken());
         props.put("user", user);
         props.put("statusMod", statusMod);
@@ -299,11 +301,12 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> reactivate(SyncopeUser user, StatusMod statusMod) {
         String uri = "direct:statusPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("user", user);
         props.put("statusMod", statusMod);
 
@@ -325,12 +328,13 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> suspend(SyncopeUser user, StatusMod statusMod) {
 
         String uri = "direct:statusPort";
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("user", user);
         props.put("statusMod", statusMod);
 
@@ -370,12 +374,13 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public List<PropagationStatus> deprovision(Long user, Collection<String> resources) {
         String uri = "direct:deprovisionPort";
 
         PollingConsumer pollingConsumer = getConsumer(uri);
 
-        Map props = new HashMap<String, Object>();
+        Map<String, Object> props = new HashMap<String, Object>();
         props.put("resources", resources);
 
         sendMessage("direct:deprovisionUser", user, props);
@@ -390,6 +395,7 @@ public class CamelUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public Map.Entry<Long, List<PropagationStatus>> updateInSync(UserMod userMod, Long id, SyncResult result,
             Boolean enabled, Set<String> excludedResources) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index 6d3e77d..2873735 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -33,6 +33,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.Constants;
 import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.syncope.core.persistence.beans.CamelRoute;
 import org.apache.syncope.core.persistence.dao.RouteDAO;
@@ -80,16 +81,14 @@ public class SyncopeCamelContext {
             DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             JAXBContext jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES);
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-            List rds = new ArrayList();
-
-            for (int s = 0; s < crl.size(); s++) {
-
+            List<RouteDefinition> rds = new ArrayList<RouteDefinition>();
+            for(int s = 0; s < crl.size(); s++){
                 InputStream is = new ByteArrayInputStream(URLDecoder.decode(crl.get(s).getRouteContent(), "UTF-8").
                         getBytes());
                 Document doc = dBuilder.parse(is);
                 doc.getDocumentElement().normalize();
                 Node routeEl = doc.getElementsByTagName("route").item(0);
-                JAXBElement obj = unmarshaller.unmarshal(routeEl, RouteDefinition.class);
+                JAXBElement<RouteDefinition> obj = unmarshaller.unmarshal(routeEl, RouteDefinition.class);
                 //adding route definition to list                        
                 rds.add(obj.getValue());
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
index 2af3d37..43daf10 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreatePropagation.java
@@ -53,8 +53,10 @@ public class DefaultRoleCreatePropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();
         RoleTO subject = exchange.getProperty("subject", RoleTO.class);
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         EntitlementUtil.extendAuthContext(created.getResult());

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
index d796d6d..296d99e 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleCreateSyncPropagation.java
@@ -51,6 +51,7 @@ public class DefaultRoleCreateSyncPropagation implements Processor {
     private static final Logger LOG = LoggerFactory.getLogger(DefaultRoleCreateSyncPropagation.class);
 
     @Override
+    @SuppressWarnings("unchecked")
     public void process(Exchange exchange) {
 
         WorkflowResult<Long> created = (WorkflowResult) exchange.getIn().getBody();

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
index a7c35fb..e196187 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleDeprovisionPropagation.java
@@ -54,6 +54,7 @@ public class DefaultRoleDeprovisionPropagation implements Processor {
     public void process(Exchange exchange) {
 
         Long roleId = exchange.getIn().getBody(Long.class);
+        @SuppressWarnings("unchecked")
         List<String> resources = exchange.getProperty("resources", List.class);
 
         final SyncopeRole role = binder.getRoleFromId(roleId);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
index 90d37dd..6722a15 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultRoleUpdatePropagation.java
@@ -55,8 +55,10 @@ public class DefaultRoleUpdatePropagation implements Processor {
 
     @Override
     public void process(Exchange exchange) {
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
         RoleMod subjectMod = exchange.getProperty("subjectMod", RoleMod.class);
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         List<PropagationTask> tasks = propagationManager.getRoleUpdateTaskIds(updated,

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
index 82ba0ab..ed5b990 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserCreatePropagation.java
@@ -54,8 +54,10 @@ public class DefaultUserCreatePropagation implements Processor {
 
         if ((exchange.getIn().getBody() instanceof WorkflowResult)) {
 
+            @SuppressWarnings("unchecked")
             WorkflowResult<Map.Entry<Long, Boolean>> created = (WorkflowResult) exchange.getIn().getBody();
             UserTO actual = exchange.getProperty("actual", UserTO.class);
+            @SuppressWarnings("unchecked")
             Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
             List<PropagationTask> tasks = propagationManager.getUserCreateTaskIds(

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
index 3f80459..c3028ab 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeletePropagation.java
@@ -50,6 +50,7 @@ public class DefaultUserDeletePropagation implements Processor {
         Long userId = (Long) exchange.getIn().getBody();
         LOG.info("UserId {} ", userId);
 
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         // Note here that we can only notify about "delete", not any other

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
index a529dea..caa9d90 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserDeprovisionPropagation.java
@@ -54,6 +54,7 @@ public class DefaultUserDeprovisionPropagation implements Processor {
     public void process(Exchange exchange) {
 
         Long userId = exchange.getIn().getBody(Long.class);
+        @SuppressWarnings("unchecked")
         List<String> resources = exchange.getProperty("resources", List.class);
 
         final SyncopeUser user = binder.getUserFromId(userId);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
index cc167d7..89e9dca 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserStatusPropagation.java
@@ -54,6 +54,7 @@ public class DefaultUserStatusPropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
 
         SyncopeUser user = exchange.getProperty("user", SyncopeUser.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
index a931a5b..1a9ecd3 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdateInSyncPropagation.java
@@ -60,8 +60,10 @@ public class DefaultUserUpdateInSyncPropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
 
+        @SuppressWarnings("unchecked")
         Set<String> excludedResource = exchange.getProperty("excludedResources", Set.class);
 
         PropagationReporter propagationReporter = ApplicationContextProvider.getApplicationContext().

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
index c9b498e..c34a0bf 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserUpdatePropagation.java
@@ -56,6 +56,7 @@ public class DefaultUserUpdatePropagation implements Processor {
     protected UserDataBinder binder;
 
     @Override
+    @SuppressWarnings("unchecked")
     public void process(Exchange exchange) {
 
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
index 88cd160..dcc8af8 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/DefaultUserWFSuspendPropagation.java
@@ -47,6 +47,7 @@ public class DefaultUserWFSuspendPropagation implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Long> updated = (WorkflowResult) exchange.getIn().getBody();
         Boolean suspend = exchange.getProperty("suspend", Boolean.class);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec34515d/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
index 7cb7dfa..182913b 100644
--- a/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
+++ b/core/src/main/java/org/apache/syncope/core/provisioning/camel/processors/UserStatusOnSync.java
@@ -45,6 +45,7 @@ public class UserStatusOnSync implements Processor {
     @Override
     public void process(Exchange exchange) {
 
+        @SuppressWarnings("unchecked")
         WorkflowResult<Map.Entry<UserMod, Boolean>> updated = (WorkflowResult) exchange.getIn().getBody();
 
         Boolean enabled = exchange.getProperty("enabled", Boolean.class);


[25/53] [abbrv] syncope git commit: Restoring default travis.xml

Posted by il...@apache.org.
Restoring default travis.xml


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

Branch: refs/heads/2_0_X
Commit: b2ba422f21b0998731bff084d71f908b0e4dc5f3
Parents: 7aa0db3
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 23 12:34:12 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 23 12:34:12 2014 +0100

----------------------------------------------------------------------
 .travis.yml | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b2ba422f/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 1eeba36..e9245f1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,23 +1,24 @@
 # Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
+# 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
+# the License.  You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+#     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.
+
 language: java
 jdk:
-- openjdk6
+  - openjdk6
 # default install is mvn install --quiet -DskipTests=true
 install: mvn --show-version --quiet -P skipTests
 #invoker.streamLogs: we cannot access to log files through Travis web ui, so display everything in the console
 script: mvn --show-version --quiet clean install -Dinvoker.streamLogs=true
 notifications:
-webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi
+  webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi


[38/53] [abbrv] syncope git commit: Fixes #8

Posted by il...@apache.org.
Fixes #8


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

Branch: refs/heads/master
Commit: b1d2ac65be87d8e5e620291207777d4fe614a486
Parents: ac4d6af
Author: giacomolm <gi...@hotmail.it>
Authored: Wed Dec 31 09:38:04 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Wed Dec 31 09:38:04 2014 +0100

----------------------------------------------------------------------
 core/src/main/resources/provisioning.properties | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b1d2ac65/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
index de6c3cd..a8e49bf 100644
--- a/core/src/main/resources/provisioning.properties
+++ b/core/src/main/resources/provisioning.properties
@@ -15,5 +15,5 @@
 # specific language governing permissions and limitations
 # under the License.
 
-userProvisioningManager=org.apache.syncope.core.provisioning.DefaultUserProvisioningManager
-roleProvisioningManager=org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager
\ No newline at end of file
+userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
+roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file


[29/53] [abbrv] syncope git commit: Fixes #5 - Tests pass with latest version of camel

Posted by il...@apache.org.
Fixes #5 - Tests pass with latest version of camel


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

Branch: refs/heads/master
Commit: dff89c00424ce9376359d600c50b21fd6bbb3e36
Parents: 55dfac7
Author: giacomolm <gi...@hotmail.it>
Authored: Tue Dec 23 12:51:04 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Tue Dec 23 12:51:04 2014 +0100

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/dff89c00/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f680733..c478c3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -325,7 +325,7 @@ under the License.
     <aspectj.version>1.8.4</aspectj.version>
 
     <cxf.version>3.0.3</cxf.version>
-    <camel.version>2.12.5</camel.version>	
+    <camel.version>2.14.1</camel.version>	
     <spring.version>4.0.8.RELEASE</spring.version>
     <spring-security.version>3.2.5.RELEASE</spring-security.version>
     <jackson.version>2.4.4</jackson.version>


[08/53] [abbrv] syncope git commit: Travis file aligned

Posted by il...@apache.org.
Travis file aligned


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

Branch: refs/heads/master
Commit: 43c946295c410662a59db3c62890818f60ef92f9
Parents: 0da0281
Author: giacomolm <gi...@hotmail.it>
Authored: Thu Dec 18 10:51:54 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Thu Dec 18 10:51:54 2014 +0100

----------------------------------------------------------------------
 .travis.yml | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/43c94629/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index e9245f1..1eeba36 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,24 +1,23 @@
 # Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
+# 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
+# the License. You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# 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.
-
 language: java
 jdk:
-  - openjdk6
+- openjdk6
 # default install is mvn install --quiet -DskipTests=true
 install: mvn --show-version --quiet -P skipTests
 #invoker.streamLogs: we cannot access to log files through Travis web ui, so display everything in the console
 script: mvn --show-version --quiet clean install -Dinvoker.streamLogs=true
 notifications:
-  webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi
+webhooks: http://rovere.tirasa.net/cgi-bin/travis.cgi


[39/53] [abbrv] syncope git commit: Merge branch '1_2_X' of https://git-wip-us.apache.org/repos/asf/syncope into 1_2_X

Posted by il...@apache.org.
Merge branch '1_2_X' of https://git-wip-us.apache.org/repos/asf/syncope into 1_2_X


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

Branch: refs/heads/2_0_X
Commit: fde8f4d365f3f3cda5cc9169406ca275793977e2
Parents: 5e013aa 257be98
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Mon Jan 5 09:08:37 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Mon Jan 5 09:08:37 2015 +0100

----------------------------------------------------------------------
 pom.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[37/53] [abbrv] syncope git commit: Fixes #8

Posted by il...@apache.org.
Fixes #8


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

Branch: refs/heads/2_0_X
Commit: b1d2ac65be87d8e5e620291207777d4fe614a486
Parents: ac4d6af
Author: giacomolm <gi...@hotmail.it>
Authored: Wed Dec 31 09:38:04 2014 +0100
Committer: giacomolm <gi...@hotmail.it>
Committed: Wed Dec 31 09:38:04 2014 +0100

----------------------------------------------------------------------
 core/src/main/resources/provisioning.properties | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b1d2ac65/core/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/provisioning.properties b/core/src/main/resources/provisioning.properties
index de6c3cd..a8e49bf 100644
--- a/core/src/main/resources/provisioning.properties
+++ b/core/src/main/resources/provisioning.properties
@@ -15,5 +15,5 @@
 # specific language governing permissions and limitations
 # under the License.
 
-userProvisioningManager=org.apache.syncope.core.provisioning.DefaultUserProvisioningManager
-roleProvisioningManager=org.apache.syncope.core.provisioning.DefaultRoleProvisioningManager
\ No newline at end of file
+userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
+roleProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelRoleProvisioningManager
\ No newline at end of file