You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/07/16 09:49:11 UTC

[3/3] syncope git commit: [SYNCOPE-1338] Do not apply conversion pattern twice during Pull

[SYNCOPE-1338] Do not apply conversion pattern twice during Pull


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

Branch: refs/heads/master
Commit: 6fc42652b2bd0844e9fbd4410143c746c6c038b1
Parents: 2170e4d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jul 16 11:47:19 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jul 16 11:48:50 2018 +0200

----------------------------------------------------------------------
 .../core/provisioning/api/MappingManager.java   |  5 +---
 .../provisioning/java/MappingManagerImpl.java   | 31 +++++---------------
 .../java/utils/ConnObjectUtils.java             |  2 +-
 3 files changed, 9 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/6fc42652/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
index 1cc30c6..a7d4252 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/MappingManager.java
@@ -25,7 +25,6 @@ import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.core.persistence.api.entity.Any;
-import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
@@ -105,9 +104,8 @@ public interface MappingManager {
      * @param mapItem mapping item
      * @param attr attribute received from connector
      * @param anyTO any object
-     * @param anyUtils any utils
      */
-    <T extends AnyTO> void setIntValues(Item mapItem, Attribute attr, T anyTO, AnyUtils anyUtils);
+    <T extends AnyTO> void setIntValues(Item mapItem, Attribute attr, T anyTO);
 
     /**
      * Set attribute values, according to the given {@link Item}, to realm from attribute received from
@@ -118,5 +116,4 @@ public interface MappingManager {
      * @param realmTO realm
      */
     void setIntValues(Item orgUnitItem, Attribute attr, RealmTO realmTO);
-
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/6fc42652/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
index fbaf761..bc3706b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
@@ -42,7 +42,6 @@ import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ApplicationDAO;
@@ -99,6 +98,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
+import org.identityconnectors.common.Base64;
 import org.identityconnectors.framework.common.objects.Name;
 
 @Component
@@ -694,7 +694,7 @@ public class MappingManagerImpl implements MappingManager {
 
     @Transactional(readOnly = true)
     @Override
-    public void setIntValues(final Item mapItem, final Attribute attr, final AnyTO anyTO, final AnyUtils anyUtils) {
+    public void setIntValues(final Item mapItem, final Attribute attr, final AnyTO anyTO) {
         List<Object> values = null;
         if (attr != null) {
             values = attr.getValue();
@@ -706,7 +706,7 @@ public class MappingManagerImpl implements MappingManager {
 
         IntAttrName intAttrName;
         try {
-            intAttrName = intAttrNameParser.parse(mapItem.getIntAttrName(), anyUtils.anyTypeKind());
+            intAttrName = intAttrNameParser.parse(mapItem.getIntAttrName(), AnyTypeKind.fromTOClass(anyTO.getClass()));
         } catch (ParseException e) {
             LOG.error("Invalid intAttrName '{}' specified, ignoring", mapItem.getIntAttrName(), e);
             return;
@@ -783,27 +783,11 @@ public class MappingManagerImpl implements MappingManager {
                     for (Object value : values) {
                         AttrSchemaType schemaType = schema == null ? AttrSchemaType.String : schema.getType();
                         if (value != null) {
-                            PlainAttrValue attrValue = anyUtils.newPlainAttrValue();
-                            switch (schemaType) {
-                                case String:
-                                    attrValue.setStringValue(value.toString());
-                                    break;
-
-                                case Binary:
-                                    attrValue.setBinaryValue((byte[]) value);
-                                    break;
-
-                                default:
-                                    try {
-                                        attrValue.parseValue(schema, value.toString());
-                                    } catch (ParsingValidationException e) {
-                                        LOG.error("While parsing provided value {}", value, e);
-                                        attrValue.setStringValue(value.toString());
-                                        schemaType = AttrSchemaType.String;
-                                    }
-                                    break;
+                            if (schemaType == AttrSchemaType.Binary) {
+                                attrTO.getValues().add(Base64.encode((byte[]) value));
+                            } else {
+                                attrTO.getValues().add(value.toString());
                             }
-                            attrTO.getValues().add(attrValue.getValueAsString(schemaType));
                         }
                     }
 
@@ -895,5 +879,4 @@ public class MappingManagerImpl implements MappingManager {
             }
         }
     }
-
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/6fc42652/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
index d02f458..5abc34f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
@@ -312,7 +312,7 @@ public class ConnObjectUtils {
         // 1. fill with data from connector object
         anyTO.setRealm(pullTask.getDestinatioRealm().getFullPath());
         MappingUtils.getPullItems(provision.getMapping().getItems()).forEach(item -> {
-            mappingManager.setIntValues(item, obj.getAttributeByName(item.getExtAttrName()), anyTO, anyUtils);
+            mappingManager.setIntValues(item, obj.getAttributeByName(item.getExtAttrName()), anyTO);
         });
 
         // 2. add data from defined template (if any)