Author: fmartelli
Date: Tue Jan  8 11:34:23 2013
New Revision: 1430222

URL: http://svn.apache.org/viewvc?rev=1430222&view=rev
Log:
SYNCOPE-267 merged

Modified:
    syncope/trunk/   (props changed)
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
    
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
    
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java
    syncope/trunk/core/src/test/resources/content.xml

Propchange: syncope/trunk/
------------------------------------------------------------------------------
  Merged /syncope/branches/1_0_X:r1429900-1430209

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java?rev=1430222&r1=1430221&r2=1430222&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractAttrValue.java
 Tue Jan  8 11:34:23 2013
@@ -37,6 +37,7 @@ import org.apache.commons.lang.time.Date
 import org.apache.syncope.client.SyncopeConstants;
 import 
org.apache.syncope.core.persistence.validation.attrvalue.ParsingValidationException;
 import org.apache.syncope.core.persistence.validation.entity.AttrValueCheck;
+import org.apache.syncope.types.SchemaType;
 
 @MappedSuperclass
 @AttrValueCheck
@@ -185,7 +186,12 @@ public abstract class AbstractAttrValue 
     public String getValueAsString() {
         String result = null;
 
-        switch (getAttribute().getSchema().getType()) {
+        final SchemaType type = getAttribute() == null || 
getAttribute().getSchema() == null
+                || getAttribute().getSchema().getType() == null
+                ? SchemaType.String
+                : getAttribute().getSchema().getType();
+
+        switch (type) {
 
             case Boolean:
                 result = getBooleanValue().toString();

Modified: 
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java?rev=1430222&r1=1430221&r2=1430222&view=diff
==============================================================================
--- 
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
 (original)
+++ 
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
 Tue Jan  8 11:34:23 2013
@@ -66,7 +66,7 @@ public class ResourceTest extends Abstra
     public void findAll() {
         List<ExternalResource> resources = resourceDAO.findAll();
         assertNotNull(resources);
-        assertEquals(16, resources.size());
+        assertEquals(17, resources.size());
     }
 
     @Test

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=1430222&r1=1430221&r2=1430222&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
 Tue Jan  8 11:34:23 2013
@@ -1823,4 +1823,31 @@ public class UserTestITCase extends Abst
                 || 
connObjectTO.getAttributeMap().get("NAME").getValues().isEmpty());
         // ----------------------------------
     }
+    
+    @Test
+    public void issueSYNCOPE267() {
+        // ----------------------------------
+        // create user and check virtual attribute value propagation
+        // ----------------------------------
+        UserTO userTO = getSampleTO("[email protected]");
+        userTO.getResources().clear();
+        userTO.addResource("resource-db-virattr");
+
+        userTO = userService.create(userTO);
+        assertNotNull(userTO);
+        assertFalse(userTO.getPropagationTOs().isEmpty());
+        assertEquals("resource-db-virattr", 
userTO.getPropagationTOs().get(0).getResourceName());
+        assertEquals(PropagationTaskExecStatus.SUBMITTED, 
userTO.getPropagationTOs().get(0).getStatus());
+
+        ConnObjectTO connObjectTO = readUserConnObj("resource-db-virattr", 
String.valueOf(userTO.getId()));
+        assertNotNull(connObjectTO);
+        assertEquals("virtualvalue", 
connObjectTO.getAttributeMap().get("USERNAME").getValues().get(0));
+        // ----------------------------------
+
+        userTO = userService.read(userTO.getId());
+
+        assertNotNull(userTO);
+        assertEquals(1, userTO.getVirtualAttributes().size());
+        assertEquals("virtualvalue", 
userTO.getVirtualAttributes().get(0).getValues().get(0));
+    }
 }

Modified: syncope/trunk/core/src/test/resources/content.xml
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/test/resources/content.xml?rev=1430222&r1=1430221&r2=1430222&view=diff
==============================================================================
--- syncope/trunk/core/src/test/resources/content.xml (original)
+++ syncope/trunk/core/src/test/resources/content.xml Tue Jan  8 11:34:23 2013
@@ -393,6 +393,12 @@ under the License.
                     createTraceLevel="ALL" deleteTraceLevel="ALL" 
syncTraceLevel="ALL" updateTraceLevel="ALL"
                     enforceMandatoryCondition="0" 
                     propagationMode="TWO_PHASES" propagationPrimary="0" 
propagationPriority="0"/>
+                    
+  <!-- External resource for issue SYNCOPE-267 -->
+  <ExternalResource name="resource-db-virattr" connector_id="107"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" 
syncTraceLevel="ALL" updateTraceLevel="ALL"
+                    enforceMandatoryCondition="0" 
+                    propagationMode="TWO_PHASES" propagationPrimary="0" 
propagationPriority="0"/>
   
   <SyncopeUser_ExternalResource user_id="3" 
resource_name="ws-target-resource-delete" />
   <SyncopeRole_ExternalResource role_id="3" 
resource_name="ws-target-resource-list-mappings-1" />
@@ -600,6 +606,14 @@ under the License.
                 extAttrName="EMAIL" intAttrName="userId" 
intMappingType="UserSchema" 
                 mandatoryCondition="false" password="0"/>
               
+  <UMapping id="17" resource_name="resource-db-virattr"/>
+  <UMappingItem id="331" mapping_id="17" accountid="1" password="0"
+                extAttrName="__NAME__" intMappingType="UserId" 
+                mandatoryCondition="true"/>
+  <UMappingItem id="332" mapping_id="17" accountid="0" password="0" 
+                extAttrName="USERNAME" intAttrName="virtualdata" 
intMappingType="UserVirtualSchema"
+                mandatoryCondition="false" />
+  
   <Task DTYPE="PropagationTask" id="1" propagationMode="TWO_PHASES" 
propagationOperation="UPDATE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" 
subjectType="USER" subjectId="1"
         
xmlAttributes="%3Cset%3E%0A++%3Corg.identityconnectors.framework.common.objects.Attribute%3E%0A++++%3Cname%3E__PASSWORD__%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22+resolves-to%3D%22java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Corg.identityconnectors.common.security.GuardedString%3E%0A++++++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++++++++%3Cdisposed%3Efalse%3C%2Fdisposed%3E%0A++++++++++%3CencryptedBytes%3Em9nh2US0Sa6m%2BcXccCq0Xw%3D%3D%3C%2FencryptedBytes%3E%0A++++++++%3C%2Forg.identityconnectors.common.security.GuardedString%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Attribute%3E%0A++%3Corg.identityconnectors.framework.common.objects.Name%3E%0A++++%3Cname%3E__NAME__%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22
 
+resolves-to%3D%22java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Cstring%3EuserId%3C%2Fstring%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Name%3E%0A++%3Corg.identityconnectors.framework.common.objects.Attribute%3E%0A++++%3Cname%3Efullname%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22+resolves-to%3D%22java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Cstring%3Efullname%3C%2Fstring%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Attribute%3E%0A++%3Corg.identityconnectors.framework.common.objects.Attribute%3E%0A++++%3Cname%3Etype%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22+resolves-to%3D%22
 
java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Cstring%3Etype%3C%2Fstring%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Attribute%3E%0A%3C%2Fset%3E"/>


Reply via email to