Repository: syncope
Updated Branches:
  refs/heads/1_2_X 254a7b632 -> 949d2e62e


[SYNCOPE-769] Better fix for SYNCOPE-735, which avoids writing useless history 
entries rather than cleaning them up afterwards


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

Branch: refs/heads/1_2_X
Commit: 949d2e62e6dcdbe7f86854c75ac482c028f8134a
Parents: 254a7b6
Author: Francesco Chicchiriccò <[email protected]>
Authored: Thu Feb 18 16:23:53 2016 +0100
Committer: Francesco Chicchiriccò <[email protected]>
Committed: Thu Feb 18 16:23:53 2016 +0100

----------------------------------------------------------------------
 .../common/services/UserWorkflowService.java    | 13 -----
 .../rest/controller/UserWorkflowController.java |  7 ---
 .../core/services/UserWorkflowServiceImpl.java  |  5 --
 .../syncope/core/workflow/WorkflowAdapter.java  |  9 ---
 .../workflow/role/NoOpRoleWorkflowAdapter.java  |  5 --
 .../workflow/user/NoOpUserWorkflowAdapter.java  |  5 --
 .../activiti/ActivitiUserWorkflowAdapter.java   | 58 --------------------
 core/src/main/resources/workflow.properties     |  1 +
 core/src/main/resources/workflowContext.xml     |  1 +
 .../core/rest/UserWorkflowTestITCase.java       | 39 ++-----------
 10 files changed, 6 insertions(+), 137 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java
----------------------------------------------------------------------
diff --git 
a/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java
 
b/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java
index c3f7721..562789c 100644
--- 
a/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java
+++ 
b/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java
@@ -49,19 +49,6 @@ public interface UserWorkflowService extends JAXRSService {
     List<WorkflowFormTO> getForms();
 
     /**
-     * Returns a list of all available workflow forms with matching name, for 
the given user id.
-     *
-     * @param userId user id
-     * @param name form name
-     * @return list of all available workflow forms with matching name, fir 
the given user id.
-     */
-    @GET
-    @Path("forms/{userId}/{name}")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<WorkflowFormTO> getFormsByName(
-            @NotNull @PathParam("userId") final Long userId, @NotNull 
@PathParam("name") final String name);
-
-    /**
      * Returns a list of available forms for the given user id.
      *
      * @param userId user id

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java
 
b/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java
index 933d6a5..b7270ab 100644
--- 
a/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java
+++ 
b/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java
@@ -89,13 +89,6 @@ public class UserWorkflowController extends 
AbstractTransactionalController<Work
         return uwfAdapter.getForms();
     }
 
-    @PreAuthorize("hasRole('WORKFLOW_FORM_READ') and hasRole('USER_READ')")
-    @Transactional(rollbackFor = { Throwable.class })
-    public List<WorkflowFormTO> getForms(final Long userId, final String 
formName) {
-        SyncopeUser user = binder.getUserFromId(userId);
-        return uwfAdapter.getForms(user.getWorkflowId(), formName);
-    }
-
     @PreAuthorize("hasRole('WORKFLOW_FORM_SUBMIT')")
     @Transactional(rollbackFor = { Throwable.class })
     public UserTO submitForm(final WorkflowFormTO form) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java
 
b/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java
index 5e78fb3..a8ae181 100644
--- 
a/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java
+++ 
b/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java
@@ -57,9 +57,4 @@ public class UserWorkflowServiceImpl implements 
UserWorkflowService {
     public UserTO submitForm(final WorkflowFormTO form) {
         return controller.submitForm(form);
     }
-
-    @Override
-    public List<WorkflowFormTO> getFormsByName(final Long userId, final String 
taskName) {
-        return controller.getForms(userId, taskName);
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java 
b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java
index b5cf7d1..aa185eb 100644
--- a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java
+++ b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java
@@ -69,15 +69,6 @@ public interface WorkflowAdapter {
     List<WorkflowFormTO> getForms();
 
     /**
-     * Gets all forms with the given name for the given workflowId(include 
historical forms).
-     *
-     * @param workflowId workflow id.
-     * @param name form name.
-     * @return forms (if present), otherwise an empty list.
-     */
-    List<WorkflowFormTO> getForms(String workflowId, String name);
-
-    /**
      * Get form for given workflowId (if present).
      *
      * @param workflowId workflow id

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java
 
b/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java
index fa648ba..5519853 100644
--- 
a/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java
+++ 
b/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java
@@ -105,11 +105,6 @@ public class NoOpRoleWorkflowAdapter extends 
AbstractRoleWorkflowAdapter {
     }
 
     @Override
-    public List<WorkflowFormTO> getForms(final String workflowId, final String 
name) {
-        return Collections.emptyList();
-    }
-
-    @Override
     public WorkflowFormTO getForm(final String workflowId)
             throws NotFoundException, WorkflowException {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/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 83924e4..c3e22b1 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
@@ -208,11 +208,6 @@ public class NoOpUserWorkflowAdapter extends 
AbstractUserWorkflowAdapter {
     }
 
     @Override
-    public List<WorkflowFormTO> getForms(final String workflowId, final String 
name) {
-        return Collections.emptyList();
-    }
-
-    @Override
     public WorkflowFormTO getForm(final String workflowId)
             throws NotFoundException, WorkflowException {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/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 0765cfa..a57723a 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
@@ -82,7 +82,6 @@ import 
org.apache.syncope.core.workflow.user.AbstractUserWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -218,45 +217,6 @@ public class ActivitiUserWorkflowAdapter extends 
AbstractUserWorkflowAdapter {
         return result;
     }
 
-    protected void cleanupHistory(final SyncopeUser user) {
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        List<String> taskIds = jdbcTemplate.queryForList(
-                "SELECT TASK_ID_ FROM ACT_HI_VARINST WHERE NAME_='" + 
TASK_IS_FORM
-                + "' AND LONG_=1 AND PROC_INST_ID_='" + user.getWorkflowId() + 
"'", String.class);
-
-        StringBuilder update = new StringBuilder();
-
-        update.append("DELETE FROM ACT_HI_VARINST WHERE 
PROC_INST_ID_='").append(user.getWorkflowId()).append("' ");
-        for (String taskId : taskIds) {
-            update.append("AND TASK_ID_<>'").append(taskId).append("' ");
-        }
-        jdbcTemplate.execute(update.toString());
-
-        update.setLength(0);
-        update.append("DELETE FROM ACT_HI_TASKINST WHERE 
PROC_INST_ID_='").append(user.getWorkflowId()).append("' ");
-        for (String taskId : taskIds) {
-            update.append("AND ID_<>'").append(taskId).append("' ");
-        }
-        jdbcTemplate.execute(update.toString());
-
-        update.setLength(0);
-        update.append("DELETE FROM ACT_HI_ACTINST WHERE 
PROC_INST_ID_='").append(user.getWorkflowId()).append("' ");
-        for (String taskId : taskIds) {
-            update.append("AND TASK_ID_<>'").append(taskId).append("' ");
-        }
-        jdbcTemplate.execute(update.toString());
-
-        List<String> byteArrayIds = jdbcTemplate.queryForList(
-                "SELECT BYTEARRAY_ID_ FROM ACT_HI_VARINST WHERE BYTEARRAY_ID_ 
IS NOT NULL", String.class);
-        update.setLength(0);
-        update.append("DELETE FROM ACT_GE_BYTEARRAY WHERE NAME_ LIKE 'hist.%' 
");
-        for (String byteArrayId : byteArrayIds) {
-            update.append("AND ID_<>'").append(byteArrayId).append("' ");
-        }
-        jdbcTemplate.execute(update.toString());
-    }
-
     /**
      * Saves resources to be propagated and password for later - after form 
submission - propagation.
      */
@@ -332,8 +292,6 @@ public class ActivitiUserWorkflowAdapter extends 
AbstractUserWorkflowAdapter {
 
         Set<String> tasks = getPerformedTasks(user);
 
-        cleanupHistory(user);
-
         return new WorkflowResult<Map.Entry<Long, Boolean>>(
                 new SimpleEntry<Long, Boolean>(user.getId(), propagateEnable), 
propByRes, tasks);
     }
@@ -375,8 +333,6 @@ public class ActivitiUserWorkflowAdapter extends 
AbstractUserWorkflowAdapter {
         postTasks.removeAll(preTasks);
         postTasks.add(task);
 
-        cleanupHistory(user);
-
         return postTasks;
     }
 
@@ -774,18 +730,6 @@ public class ActivitiUserWorkflowAdapter extends 
AbstractUserWorkflowAdapter {
         return forms;
     }
 
-    @Override
-    public List<WorkflowFormTO> getForms(final String workflowId, final String 
name) {
-        List<WorkflowFormTO> forms = getForms(
-                taskService.createTaskQuery().processInstanceId(workflowId).
-                taskName(name).taskVariableValueEquals(TASK_IS_FORM, 
Boolean.TRUE));
-
-        
forms.addAll(getForms(historyService.createHistoricTaskInstanceQuery().processInstanceId(workflowId).
-                taskName(name).taskVariableValueEquals(TASK_IS_FORM, 
Boolean.TRUE)));
-
-        return forms;
-    }
-
     protected <T extends Query<?, ?>, U extends Object> List<WorkflowFormTO> 
getForms(final Query<T, U> query) {
         List<WorkflowFormTO> forms = new ArrayList<WorkflowFormTO>();
 
@@ -953,8 +897,6 @@ public class ActivitiUserWorkflowAdapter extends 
AbstractUserWorkflowAdapter {
             }
         }
 
-        cleanupHistory(user);
-
         return new WorkflowResult<UserMod>(userMod, propByRes, postTasks);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/resources/workflow.properties
----------------------------------------------------------------------
diff --git a/core/src/main/resources/workflow.properties 
b/core/src/main/resources/workflow.properties
index 19ec32a..5817e92 100644
--- a/core/src/main/resources/workflow.properties
+++ b/core/src/main/resources/workflow.properties
@@ -16,5 +16,6 @@
 # under the License.
 
uwfAdapter=org.apache.syncope.core.workflow.user.activiti.ActivitiUserWorkflowAdapter
 rwfAdapter=org.apache.syncope.core.workflow.role.NoOpRoleWorkflowAdapter
+historyLevel=activity
 jobExecutorActivate=true
 activitiVersion=${activiti.version}

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/resources/workflowContext.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/workflowContext.xml 
b/core/src/main/resources/workflowContext.xml
index e5367e5..2c6a810 100644
--- a/core/src/main/resources/workflowContext.xml
+++ b/core/src/main/resources/workflowContext.xml
@@ -46,6 +46,7 @@ under the License.
     <property name="jpaHandleTransaction" value="true"/>
     <property name="jpaCloseEntityManager" value="false"/>
 
+    <property name="history" value="${historyLevel}"/>
     <property name="jobExecutorActivate" value="${jobExecutorActivate}"/>
 
     <property name="customSessionFactories">

http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java 
b/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java
index f65fe73..a848031 100644
--- 
a/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java
+++ 
b/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.rest;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -235,7 +234,7 @@ public class UserWorkflowTestITCase extends AbstractTest {
         WorkflowFormTO form = 
userWorkflowService.getFormForUser(userTO.getId());
         assertNotNull(form);
 
-        // 3. first claim ny bellini ....
+        // 3. first claim by bellini ....
         UserWorkflowService userService3 = clientFactory.create(
                 "bellini", ADMIN_PWD).getService(UserWorkflowService.class);
 
@@ -259,39 +258,9 @@ public class UserWorkflowTestITCase extends AbstractTest {
         assertEquals(preForms, userWorkflowService.getForms().size());
         assertNull(userWorkflowService.getFormForUser(userTO.getId()));
 
-        // 7. search approval into the history as well
-        forms = userWorkflowService.getFormsByName(userTO.getId(), "Create 
approval");
-        assertFalse(forms.isEmpty());
-
-        int count = 0;
-        for (WorkflowFormTO hform : forms) {
-            if (form.getTaskId().equals(hform.getTaskId())) {
-                count++;
-
-                assertEquals("createApproval", hform.getKey());
-                assertNotNull(hform.getCreateTime());
-                assertNotNull(hform.getDueDate());
-                
assertTrue(Boolean.parseBoolean(hform.getPropertyMap().get("approve").getValue()));
-                
assertNull(hform.getPropertyMap().get("rejectReason").getValue());
-            }
-        }
-        assertEquals(1, count);
-
-        userService.delete(userTO.getId());
-
-        try {
-            userService.read(userTO.getId());
-            fail();
-        } catch (Exception ignore) {
-            assertNotNull(ignore);
-        }
-
-        try {
-            userWorkflowService.getFormsByName(userTO.getId(), "Create 
approval");
-            fail();
-        } catch (Exception ignore) {
-            assertNotNull(ignore);
-        }
+        // 7.check that no more forms are still to be processed
+        forms = userWorkflowService.getForms();
+        assertEquals(preForms, forms.size());
     }
 
 }

Reply via email to