You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2012/03/09 14:55:57 UTC

svn commit: r1298826 - in /incubator/syncope/trunk/core/src/main/java/org/syncope/core: propagation/ rest/controller/ rest/data/ util/

Author: fmartelli
Date: Fri Mar  9 13:55:56 2012
New Revision: 1298826

URL: http://svn.apache.org/viewvc?rev=1298826&view=rev
Log:
SYNCOPE-33 #comment virtual attributes were not valued from TO

Modified:
    incubator/syncope/trunk/core/src/main/java/org/syncope/core/propagation/PropagationManager.java
    incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/controller/UserController.java
    incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/AbstractAttributableDataBinder.java
    incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/UserDataBinder.java
    incubator/syncope/trunk/core/src/main/java/org/syncope/core/util/ConnObjectUtil.java

Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/propagation/PropagationManager.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/propagation/PropagationManager.java?rev=1298826&r1=1298825&r2=1298826&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/propagation/PropagationManager.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/propagation/PropagationManager.java Fri Mar  9 13:55:56 2012
@@ -160,7 +160,8 @@ public class PropagationManager {
      */
     public List<PropagationTask> getCreateTaskIds(
             final WorkflowResult<Map.Entry<Long, Boolean>> wfResult,
-            final String password, final List<AttributeTO> vAttrs)
+            final String password, 
+            final List<AttributeTO> vAttrs)
             throws NotFoundException {
 
         return getCreateTaskIds(wfResult, password, vAttrs, null);

Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/controller/UserController.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/controller/UserController.java?rev=1298826&r1=1298825&r2=1298826&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/controller/UserController.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/controller/UserController.java Fri Mar  9 13:55:56 2012
@@ -153,9 +153,11 @@ public class UserController {
     value = "/list")
     @Transactional(readOnly = true, rollbackFor = {Throwable.class})
     public List<UserTO> list() {
-        List<SyncopeUser> users = userDAO.findAll(EntitlementUtil.getRoleIds(
-                EntitlementUtil.getOwnedEntitlementNames()));
+        List<SyncopeUser> users = 
+                userDAO.findAll(EntitlementUtil.getRoleIds(EntitlementUtil.getOwnedEntitlementNames()));
+        
         List<UserTO> userTOs = new ArrayList<UserTO>(users.size());
+        
         for (SyncopeUser user : users) {
             userTOs.add(userDataBinder.getUserTO(user));
         }

Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/AbstractAttributableDataBinder.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/AbstractAttributableDataBinder.java?rev=1298826&r1=1298825&r2=1298826&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/AbstractAttributableDataBinder.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/AbstractAttributableDataBinder.java Fri Mar  9 13:55:56 2012
@@ -557,8 +557,7 @@ public abstract class AbstractAttributab
         // 5. derived attributes to be removed
         for (String derivedAttributeToBeRemoved : attributableMod.getDerivedAttributesToBeRemoved()) {
 
-            derivedSchema = getDerivedSchema(derivedAttributeToBeRemoved,
-                    attributableUtil.derivedSchemaClass());
+            derivedSchema = getDerivedSchema(derivedAttributeToBeRemoved, attributableUtil.derivedSchemaClass());
 
             if (derivedSchema != null) {
                 derivedAttribute = attributable.getDerivedAttribute(
@@ -643,22 +642,37 @@ public abstract class AbstractAttributab
         return propByRes;
     }
 
+    /**
+     * Add virtual attributes and specify values to be propagated.
+     *
+     * @param attributable attributable.
+     * @param vAttrs virtual attributes to be added.
+     * @param attributableUtil attributable util.
+     */
     public void fillVirtual(
             final AbstractAttributable attributable,
             final List<AttributeTO> vAttrs,
             final AttributableUtil attributableUtil) {
 
         for (AttributeTO attributeTO : vAttrs) {
-            AbstractVirSchema virtualSchema =
-                    getVirtualSchema(attributeTO.getSchema(), attributableUtil.virtualSchemaClass());
+            AbstractVirAttr virtualAttribute = attributable.getVirtualAttribute(attributeTO.getSchema());
 
-            if (virtualSchema != null) {
-                AbstractVirAttr virtualAttribute = attributableUtil.newVirtualAttribute();
-                virtualAttribute.setVirtualSchema(virtualSchema);
-                virtualAttribute.setOwner(attributable);
+            if (virtualAttribute == null) {
+                AbstractVirSchema virtualSchema =
+                        getVirtualSchema(attributeTO.getSchema(), attributableUtil.virtualSchemaClass());
+
+                if (virtualSchema != null) {
+                    virtualAttribute = attributableUtil.newVirtualAttribute();
+                    virtualAttribute.setVirtualSchema(virtualSchema);
+                    virtualAttribute.setOwner(attributable);
+                    attributable.addVirtualAttribute(virtualAttribute);
+                    virtualAttribute.setValues(attributeTO.getValues());
+                }
+
+            } else {
                 virtualAttribute.setValues(attributeTO.getValues());
-                attributable.addVirtualAttribute(virtualAttribute);
             }
+
         }
     }
 
@@ -708,8 +722,7 @@ public abstract class AbstractAttributab
             compositeErrorException.addException(invalidValues);
         }
 
-        SyncopeClientException requiredValuesMissing =
-                checkMandatory(attributableUtil, attributable);
+        SyncopeClientException requiredValuesMissing = checkMandatory(attributableUtil, attributable);
         if (!requiredValuesMissing.isEmpty()) {
             compositeErrorException.addException(requiredValuesMissing);
         }
@@ -719,8 +732,7 @@ public abstract class AbstractAttributab
         AbstractDerAttr derivedAttribute;
         for (AttributeTO attributeTO : attributableTO.getDerivedAttributes()) {
 
-            derivedSchema = getDerivedSchema(attributeTO.getSchema(),
-                    attributableUtil.derivedSchemaClass());
+            derivedSchema = getDerivedSchema(attributeTO.getSchema(), attributableUtil.derivedSchemaClass());
 
             if (derivedSchema != null) {
                 derivedAttribute = attributableUtil.newDerivedAttribute();
@@ -730,11 +742,23 @@ public abstract class AbstractAttributab
             }
         }
 
-        // 3. virtual attributes: for users this is delegated to PropagationManager
-        if (AttributableType.USER != attributableUtil.getType()) {
-            fillVirtual(attributable, attributableTO.getVirtualAttributes(), attributableUtil);
+        // 3. user virtual attributes will be valued by the propagation manager only (if needed).
+        if (AttributableType.USER == attributableUtil.getType()) {
+            for (AttributeTO vattrTO : attributableTO.getVirtualAttributes()) {
+                AbstractVirSchema uVirSchema =
+                        getVirtualSchema(vattrTO.getSchema(), attributableUtil.virtualSchemaClass());
+
+                if (uVirSchema != null) {
+                    AbstractVirAttr vattr = attributableUtil.newVirtualAttribute();
+                    vattr.setVirtualSchema(uVirSchema);
+                    vattr.setOwner(attributable);
+                    attributable.addVirtualAttribute(vattr);
+                }
+            }
         }
 
+        fillVirtual(attributable, attributableTO.getVirtualAttributes(), attributableUtil);
+
         // 4. resources
         ExternalResource resource;
         for (String resourceName : attributableTO.getResources()) {

Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/UserDataBinder.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/UserDataBinder.java?rev=1298826&r1=1298825&r2=1298826&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/UserDataBinder.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/rest/data/UserDataBinder.java Fri Mar  9 13:55:56 2012
@@ -162,8 +162,7 @@ public class UserDataBinder extends Abst
                 Membership membership = null;
                 if (user.getId() != null) {
                     membership = user.getMembership(role.getId()) == null
-                            ? membershipDAO.find(user, role)
-                            : user.getMembership(role.getId());
+                            ? membershipDAO.find(user, role) : user.getMembership(role.getId());
                 }
                 if (membership == null) {
                     membership = new Membership();

Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/util/ConnObjectUtil.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/util/ConnObjectUtil.java?rev=1298826&r1=1298825&r2=1298826&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/util/ConnObjectUtil.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/util/ConnObjectUtil.java Fri Mar  9 13:55:56 2012
@@ -99,7 +99,8 @@ public class ConnObjectUtil {
                     attributeTO = new AttributeTO();
                     attributeTO.setSchema(mapping.getIntAttrName());
 
-                    for (Object value : attribute == null ? Collections.EMPTY_LIST : attribute.getValue()) {
+                    for (Object value : attribute == null || attribute.getValue() == null
+                            ? Collections.EMPTY_LIST : attribute.getValue()) {
                         attributeTO.addValue(value.toString());
                     }
 
@@ -115,6 +116,12 @@ public class ConnObjectUtil {
                 case UserVirtualSchema:
                     attributeTO = new AttributeTO();
                     attributeTO.setSchema(mapping.getIntAttrName());
+
+                    for (Object value : attribute == null || attribute.getValue() == null
+                            ? Collections.EMPTY_LIST : attribute.getValue()) {
+                        attributeTO.addValue(value.toString());
+                    }
+
                     userTO.addVirtualAttribute(attributeTO);
                     break;