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"/>