Author: ilgrosso Date: Fri Feb 8 17:01:18 2013 New Revision: 1444147 URL: http://svn.apache.org/r1444147 Log: [SYNCOPE-311] Merge from 1_0_X
Added: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java - copied, changed from r1444083, syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java Modified: syncope/trunk/ (props changed) syncope/trunk/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.properties syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage_it.properties syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Todo.html syncope/trunk/console/src/main/webapp/css/style.css syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/UserDAOImpl.java syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/task/Update.java syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java Propchange: syncope/trunk/ ------------------------------------------------------------------------------ Merged /syncope/branches/1_0_X:r1443946-1444141 Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java (original) +++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java Fri Feb 8 17:01:18 2013 @@ -25,14 +25,12 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; - -import org.codehaus.jackson.annotate.JsonIgnore; import org.apache.syncope.common.AbstractBaseBean; +import org.codehaus.jackson.annotate.JsonIgnore; @XmlRootElement(name = "workflowForm") @XmlType @@ -40,6 +38,8 @@ public class WorkflowFormTO extends Abst private static final long serialVersionUID = -7044543391316529128L; + private long userId; + private String taskId; private String key; @@ -58,6 +58,14 @@ public class WorkflowFormTO extends Abst properties = new ArrayList<WorkflowFormPropertyTO>(); } + public long getUserId() { + return userId; + } + + public void setUserId(long userId) { + this.userId = userId; + } + public String getTaskId() { return taskId; } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java Fri Feb 8 17:01:18 2013 @@ -31,12 +31,15 @@ import org.apache.syncope.common.to.Work import org.apache.syncope.common.to.WorkflowFormTO; import org.apache.syncope.common.validation.SyncopeClientCompositeErrorException; import org.apache.syncope.console.commons.MapChoiceRenderer; +import org.apache.syncope.console.markup.html.list.AltListView; import org.apache.syncope.console.rest.ApprovalRestClient; +import org.apache.syncope.console.rest.UserRestClient; import org.apache.syncope.console.wicket.markup.html.form.AjaxDropDownChoicePanel; import org.apache.syncope.console.wicket.markup.html.form.AjaxNumberFieldPanel; import org.apache.syncope.console.wicket.markup.html.form.AjaxTextFieldPanel; import org.apache.syncope.console.wicket.markup.html.form.DateTimeFieldPanel; import org.apache.syncope.console.wicket.markup.html.form.FieldPanel; +import org.apache.wicket.Page; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; @@ -57,13 +60,23 @@ public class ApprovalModalPage extends B private static final long serialVersionUID = -8847854414429745216L; + private final static int USER_WIN_HEIGHT = 550; + + private final static int USER_WIN_WIDTH = 800; + @SpringBean private ApprovalRestClient restClient; + @SpringBean + private UserRestClient userRestClient; + + private final ModalWindow editUserWin; + public ApprovalModalPage(final PageReference callerPageRef, final ModalWindow window, final WorkflowFormTO formTO) { super(); - + IModel<List<WorkflowFormPropertyTO>> formProps = new LoadableDetachableModel<List<WorkflowFormPropertyTO>>() { + private static final long serialVersionUID = 3169142472626817508L; @Override @@ -72,79 +85,112 @@ public class ApprovalModalPage extends B } }; - final ListView<WorkflowFormPropertyTO> propView = new ListView<WorkflowFormPropertyTO>("propView", formProps) { - private static final long serialVersionUID = 9101744072914090143L; + final ListView<WorkflowFormPropertyTO> propView = + new AltListView<WorkflowFormPropertyTO>("propView", formProps) { - @Override - protected void populateItem(final ListItem<WorkflowFormPropertyTO> item) { - final WorkflowFormPropertyTO prop = item.getModelObject(); + private static final long serialVersionUID = 9101744072914090143L; - Label label = new Label("key", prop.getName() == null - ? prop.getId() - : prop.getName()); - item.add(label); - - FieldPanel field; - switch (prop.getType()) { - case Boolean: - field = new AjaxDropDownChoicePanel("value", label.getDefaultModelObjectAsString(), - new Model(Boolean.valueOf(prop.getValue()))).setChoices(Arrays.asList( - new String[]{"Yes", "No"})); - break; - - case Date: - SimpleDateFormat df = StringUtils.isNotBlank(prop.getDatePattern()) - ? new SimpleDateFormat(prop.getDatePattern()) - : new SimpleDateFormat(); - Date parsedDate = null; - if (StringUtils.isNotBlank(prop.getValue())) { - try { - parsedDate = df.parse(prop.getValue()); - } catch (ParseException e) { - LOG.error("Unparsable date: {}", prop.getValue(), e); - } + @Override + protected void populateItem(final ListItem<WorkflowFormPropertyTO> item) { + final WorkflowFormPropertyTO prop = item.getModelObject(); + + Label label = new Label("key", prop.getName() == null + ? prop.getId() + : prop.getName()); + item.add(label); + + FieldPanel field; + switch (prop.getType()) { + case Boolean: + field = new AjaxDropDownChoicePanel("value", label.getDefaultModelObjectAsString(), + new Model(Boolean.valueOf(prop.getValue()))).setChoices(Arrays.asList( + new String[]{"Yes", "No"})); + break; + + case Date: + SimpleDateFormat df = StringUtils.isNotBlank(prop.getDatePattern()) + ? new SimpleDateFormat(prop.getDatePattern()) + : new SimpleDateFormat(); + Date parsedDate = null; + if (StringUtils.isNotBlank(prop.getValue())) { + try { + parsedDate = df.parse(prop.getValue()); + } catch (ParseException e) { + LOG.error("Unparsable date: {}", prop.getValue(), e); + } + } + + field = new DateTimeFieldPanel("value", label.getDefaultModelObjectAsString(), + new Model(parsedDate), df.toLocalizedPattern()); + break; + + case Enum: + MapChoiceRenderer<String, String> enumCR = + new MapChoiceRenderer<String, String>(prop.getEnumValues()); + + field = new AjaxDropDownChoicePanel("value", label.getDefaultModelObjectAsString(), + new Model(prop.getValue())).setChoiceRenderer(enumCR).setChoices(new Model() { + + private static final long serialVersionUID = -858521070366432018L; + + @Override + public Serializable getObject() { + return new ArrayList(prop.getEnumValues().keySet()); + } + }); + break; + + case Long: + field = new AjaxNumberFieldPanel("value", label.getDefaultModelObjectAsString(), + new Model(Long.valueOf(prop.getValue())), Long.class); + break; + + case String: + default: + field = new AjaxTextFieldPanel("value", PARENT_PATH, new Model(prop.getValue())); + break; + } + + field.setReadOnly(!prop.isWritable()); + if (prop.isRequired()) { + field.addRequiredLabel(); } - field = new DateTimeFieldPanel("value", label.getDefaultModelObjectAsString(), new Model( - parsedDate), df.toLocalizedPattern()); - break; - - case Enum: - MapChoiceRenderer<String, String> enumCR = - new MapChoiceRenderer<String, String>(prop.getEnumValues()); - - field = new AjaxDropDownChoicePanel("value", label.getDefaultModelObjectAsString(), - new Model(prop.getValue())).setChoiceRenderer(enumCR).setChoices(new Model() { - private static final long serialVersionUID = -858521070366432018L; + item.add(field); + } + }; - @Override - public Serializable getObject() { - return new ArrayList(prop.getEnumValues().keySet()); - } - }); - break; + final AjaxButton userDetails = new IndicatingAjaxButton("userDetails", new Model(getString("userDetails"))) { - case Long: - field = new AjaxNumberFieldPanel("value", label.getDefaultModelObjectAsString(), - new Model(Long.valueOf(prop.getValue())), Long.class); - break; - - case String: - default: - field = new AjaxTextFieldPanel("value", PARENT_PATH, new Model(prop.getValue())); - break; - } + private static final long serialVersionUID = -4804368561204623354L; - field.setReadOnly(!prop.isWritable()); - if (prop.isRequired()) { - field.addRequiredLabel(); - } + @Override + protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) { + editUserWin.setPageCreator(new ModalWindow.PageCreator() { + + private static final long serialVersionUID = -7834632442532690940L; + + @Override + public Page createPage() { + return new ViewUserModalPage(ApprovalModalPage.this.getPageReference(), editUserWin, + userRestClient.read(formTO.getUserId())) { + + @Override + protected void closeAction(final AjaxRequestTarget target, final Form form) { + setResponsePage(ApprovalModalPage.this); + } + }; + } + }); - item.add(field); + editUserWin.show(target); } }; + MetaDataRoleAuthorizationStrategy.authorize(userDetails, ENABLE, + xmlRolesReader.getAllAllowedRoles("Users", "read")); final AjaxButton submit = new IndicatingAjaxButton("apply", new Model(getString("submit"))) { + private static final long serialVersionUID = -958724007591692537L; @Override @@ -197,6 +243,7 @@ public class ApprovalModalPage extends B }; final AjaxButton cancel = new IndicatingAjaxButton("cancel", new ResourceModel("cancel")) { + private static final long serialVersionUID = -958724007591692537L; @Override @@ -208,17 +255,25 @@ public class ApprovalModalPage extends B protected void onError(final AjaxRequestTarget target, final Form form) { } }; - + cancel.setDefaultFormProcessing(false); Form form = new Form("form"); form.add(propView); + form.add(userDetails); form.add(submit); form.add(cancel); MetaDataRoleAuthorizationStrategy.authorize(form, ENABLE, xmlRolesReader.getAllAllowedRoles("Approval", "submit")); + editUserWin = new ModalWindow("editUserWin"); + editUserWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY); + editUserWin.setInitialHeight(USER_WIN_HEIGHT); + editUserWin.setInitialWidth(USER_WIN_WIDTH); + editUserWin.setCookieName("edit-user-modal"); + add(editUserWin); + add(form); } } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java Fri Feb 8 17:01:18 2013 @@ -46,6 +46,8 @@ public class EditUserModalPage extends U @SpringBean private UserRestClient userRestClient; + protected Form form; + private UserTO initialUserTO = null; private StatusPanel statusPanel; @@ -55,7 +57,7 @@ public class EditUserModalPage extends U this.initialUserTO = AttributableOperations.clone(userTO); - Form form = setupEditPanel(); + form = setupEditPanel(); // add resource assignment details in case of update if (userTO.getId() != 0) { @@ -91,7 +93,6 @@ public class EditUserModalPage extends U userTO = userRestClient.update(userMod); } } - } @Override Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java Fri Feb 8 17:01:18 2013 @@ -173,8 +173,8 @@ public class Todo extends BasePage { editApprovalWin.show(target); } - }, ActionLink.ActionType.EDIT, "Approval", "read", SyncopeSession.get().getUserId().equals( - formTO.getOwner())); + }, ActionLink.ActionType.EDIT, "Approval", "read", + SyncopeSession.get().getUserId().equals(formTO.getOwner())); cellItem.add(panel); } Copied: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java (from r1444083, syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java) URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java?p2=syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java&p1=syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java&r1=1444083&r2=1444147&rev=1444147&view=diff ============================================================================== --- syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ViewUserModalPage.java Fri Feb 8 17:01:18 2013 @@ -18,7 +18,7 @@ */ package org.apache.syncope.console.pages; -import org.apache.syncope.client.to.UserTO; +import org.apache.syncope.common.to.UserTO; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; @@ -32,6 +32,7 @@ public class ViewUserModalPage extends E public ViewUserModalPage(final PageReference callerPageRef, final ModalWindow window, final UserTO userTO) { super(callerPageRef, window, userTO); form.setEnabled(false); + form.get("cancel").setVisible(false); } @Override Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.html Fri Feb 8 17:01:18 2013 @@ -20,42 +20,31 @@ under the License. <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p> <div style="margin:10px"> <form wicket:id="form"> - <div id="tabs"> - <ul> - <li class="tabs-selected"> - <a href="#tabs-1"><span><wicket:message key="tab1"/></span></a> - </li> - </ul> - <div id="tabs-1"> - <div id="formtable"> - <div class="tablerow" wicket:id="propView"> - <div class="tablecolumn_label medium_dynamicsize"> - <span wicket:id="key">[key]</span> - </div> - <div class="tablecolumn_field medium_dynamicsize"> - <span wicket:id="value">[value]</span> - - </div> - </div> - - <!-- inside the container in order to re-process javascript --> - <script type="text/javascript"> - $(function() { - $('#formtable div.tablerow:even').addClass("alt"); - }); - </script> + <div id="formtable"> + <div class="tablerow" wicket:id="propView"> + <div class="tablecolumn_label medium_dynamicsize"> + <span wicket:id="key">[key]</span> </div> + <div class="tablecolumn_field medium_dynamicsize"> + <span wicket:id="value">[value]</span> - <div style="margin: 20px 10px 0"> - <input type="submit" - class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" - wicket:id="apply"/> - <input type="button" - accept=""class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" - wicket:id="cancel"/> </div> </div> </div> + + <div style="margin: 20px 0"> + <input type="button" + class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" + wicket:id="userDetails"/> + <input type="submit" + class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" + wicket:id="apply"/> + <input type="button" + accept=""class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" + wicket:id="cancel"/> + </div> + </form> + <div wicket:id="editUserWin">[Show modal window for editing user under approval]</div> </div> </wicket:extend> Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.properties URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.properties?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.properties (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage.properties Fri Feb 8 17:01:18 2013 @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -tab1=Approval form -title=Workflow +title=Approval form +userDetails=User details Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage_it.properties URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage_it.properties?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage_it.properties (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ApprovalModalPage_it.properties Fri Feb 8 17:01:18 2013 @@ -14,5 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -tab1=Form di approvazione -title=Workflow +title=Form di approvazione +userDetails=Dettagli utente Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Todo.html URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Todo.html?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Todo.html (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Todo.html Fri Feb 8 17:01:18 2013 @@ -17,49 +17,47 @@ specific language governing permissions under the License. --> <wicket:extend> + <div id="tabs"> + <ul> + <li class="tabs-selected"><a href="#tabs-1"><span><wicket:message key="approvals"/></span></a></li> + <li><a href="#tabs-2"><span><wicket:message key="userRequests"/></span></a></li> + </ul> + <div id="tabs-1"> + + <div id="users-contain" class="ui-widget" style="width:inherit;"> + <span wicket:id="approvalContainer"> + <table class="ui-widget ui-widget-content table-hover" + wicket:id="approvalTable"/> + </span> + <span style="float:right"> + <form wicket:id="approvalPaginatorForm" 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="editApprovalWin">[Show modal window for editing approval]</div> + </div> - <div id="tabs"> - <ul> - <li class="tabs-selected"><a href="#tabs-1"><span><wicket:message key="approvals"/></span></a></li> - <li><a href="#tabs-2"><span><wicket:message key="userRequests"/></span></a></li> - </ul> - <div id="tabs-1"> - - <div id="users-contain" class="ui-widget" style="width:inherit;"> - <span wicket:id="approvalContainer"> - <table class="ui-widget ui-widget-content table-hover" - wicket:id="approvalTable"/> - </span> - <span style="float:right"> - <form wicket:id="approvalPaginatorForm" 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="editApprovalWin">[Show modal window for editing approval]</div> - </div> - - <div id="tabs-2"> + <div id="tabs-2"> - <div id="users-contain" class="ui-widget"> - <span wicket:id="userRequestContainer"> - <table class="ui-widget ui-widget-content table-hover" - wicket:id="userRequestTable"/> - </span> - <span style="float:right"> - <form wicket:id="userRequestPaginatorForm" 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 id="users-contain" class="ui-widget"> + <span wicket:id="userRequestContainer"> + <table class="ui-widget ui-widget-content table-hover" + wicket:id="userRequestTable"/> + </span> + <span style="float:right"> + <form wicket:id="userRequestPaginatorForm" 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="editUserRequestWin">[Show modal window for editing user request]</div> - </div> + <div wicket:id="editUserRequestWin">[Show modal window for editing user request]</div> </div> + </div> </wicket:extend> Modified: syncope/trunk/console/src/main/webapp/css/style.css URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/webapp/css/style.css?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/console/src/main/webapp/css/style.css (original) +++ syncope/trunk/console/src/main/webapp/css/style.css Fri Feb 8 17:01:18 2013 @@ -448,4 +448,8 @@ td.action{ .help a:hover { color: blue; text-decoration: none; +} + +.tree-junction-expanded { + display: none; } \ No newline at end of file Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/UserDAOImpl.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/UserDAOImpl.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/UserDAOImpl.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/UserDAOImpl.java Fri Feb 8 17:01:18 2013 @@ -89,7 +89,14 @@ public class UserDAOImpl extends Abstrac + " e " + "WHERE e.workflowId = :workflowId", SyncopeUser.class); query.setParameter("workflowId", workflowId); - return query.getSingleResult(); + SyncopeUser result = null; + try { + result = query.getSingleResult(); + } catch (NoResultException e) { + LOG.error("No user found with workflow id {}", workflowId, e); + } + + return result; } @Override Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java Fri Feb 8 17:01:18 2013 @@ -234,8 +234,7 @@ public class ActivitiUserWorkflowAdapter propagateEnable = enabled; } - // save resources to be propagated and password for later - - // after form submission - propagation + // save resources to be propagated and password for later - after form submission - propagation PropagationByResource propByRes = new PropagationByResource(); propByRes.set(ResourceOperation.CREATE, user.getResourceNames()); @@ -505,14 +504,20 @@ public class ActivitiUserWorkflowAdapter @SuppressWarnings("unchecked") private WorkflowFormTO getFormTO(final Task task, final TaskFormData formData) { WorkflowFormTO formTO = new WorkflowFormTO(); + + SyncopeUser user = userDAO.findByWorkflowId(task.getProcessInstanceId()); + if (user == null) { + throw new NotFoundException("User with workflow id " + task.getProcessInstanceId()); + } + formTO.setUserId(user.getId()); + formTO.setTaskId(task.getId()); formTO.setKey(formData.getFormKey()); BeanUtils.copyProperties(task, formTO); - WorkflowFormPropertyTO propertyTO; for (FormProperty fProp : formData.getFormProperties()) { - propertyTO = new WorkflowFormPropertyTO(); + WorkflowFormPropertyTO propertyTO = new WorkflowFormPropertyTO(); BeanUtils.copyProperties(fProp, propertyTO, PROPERTY_IGNORE_PROPS); propertyTO.setType(fromActivitiFormType(fProp.getType())); @@ -533,17 +538,14 @@ public class ActivitiUserWorkflowAdapter public List<WorkflowFormTO> getForms() { List<WorkflowFormTO> forms = new ArrayList<WorkflowFormTO>(); - TaskFormData formData; for (Task task : taskService.createTaskQuery().taskVariableValueEquals(TASK_IS_FORM, Boolean.TRUE).list()) { try { - formData = formService.getTaskFormData(task.getId()); + TaskFormData formData = formService.getTaskFormData(task.getId()); + if (formData != null && !formData.getFormProperties().isEmpty()) { + forms.add(getFormTO(task, formData)); + } } catch (ActivitiException e) { LOG.debug("No form found for task {}", task.getId(), e); - formData = null; - } - - if (formData != null && !formData.getFormProperties().isEmpty()) { - forms.add(getFormTO(task, formData)); } } Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/task/Update.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/task/Update.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/task/Update.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/task/Update.java Fri Feb 8 17:01:18 2013 @@ -28,7 +28,6 @@ public class Update extends AbstractActi @Override protected void doExecute(final DelegateExecution execution) throws Exception { - SyncopeUser user = (SyncopeUser) execution.getVariable(ActivitiUserWorkflowAdapter.SYNCOPE_USER); UserMod userMod = (UserMod) execution.getVariable(ActivitiUserWorkflowAdapter.USER_MOD); Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java?rev=1444147&r1=1444146&r2=1444147&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java Fri Feb 8 17:01:18 2013 @@ -558,6 +558,8 @@ public class UserTestITCase extends Abst WorkflowFormTO form = userService.getFormForUser(userTO.getId()); assertNotNull(form); + assertNotNull(form.getUserId()); + assertEquals(userTO.getId(), form.getUserId()); assertNotNull(form.getTaskId()); assertNull(form.getOwner());