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 2017/10/26 14:01:45 UTC

[2/2] syncope git commit: Allow to check supported object classes for a non-stored ConnInstance

Allow to check supported object classes for a non-stored ConnInstance


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

Branch: refs/heads/master
Commit: 6ac6a83e9423bde8bdf3918d526fe75acd8b329e
Parents: cd720ce
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Oct 26 16:01:28 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Oct 26 16:01:36 2017 +0200

----------------------------------------------------------------------
 .../syncope/core/logic/ConnectorLogic.java       |  9 +++------
 .../apache/syncope/core/logic/ResourceLogic.java |  6 +++++-
 .../core/provisioning/api/ConnectorFactory.java  |  7 ++++---
 .../core/provisioning/java/ConnectorManager.java | 19 ++++++++++++++-----
 4 files changed, 26 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/6ac6a83e/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
index 5d80ef7..d5b2f94 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
@@ -21,6 +21,7 @@ package org.apache.syncope.core.logic;
 import java.lang.reflect.Method;
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -33,6 +34,7 @@ import org.apache.syncope.common.lib.to.ConnBundleTO;
 import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
@@ -207,13 +209,8 @@ public class ConnectorLogic extends AbstractTransactionalLogic<ConnInstanceTO> {
     public List<ConnIdObjectClassTO> buildObjectClassInfo(
             final ConnInstanceTO connInstanceTO, final boolean includeSpecial) {
 
-        ConnInstance connInstance = connInstanceDAO.authFind(connInstanceTO.getKey());
-        if (connInstance == null) {
-            throw new NotFoundException("Connector '" + connInstanceTO.getKey() + "'");
-        }
-
         Set<ObjectClassInfo> objectClassInfo = connFactory.createConnector(
-                connFactory.buildConnInstanceOverride(connInstance, connInstanceTO.getConf(), null)).
+                connFactory.buildConnInstanceOverride(connInstanceTO, Collections.<ConnConfProperty>emptySet(), null)).
                 getObjectClassInfo();
 
         List<ConnIdObjectClassTO> result = new ArrayList<>(objectClassInfo.size());

http://git-wip-us.apache.org/repos/asf/syncope/blob/6ac6a83e/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
index b4a0f13..1901393 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
@@ -60,6 +60,7 @@ import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.data.ConnInstanceDataBinder;
 import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
@@ -107,6 +108,9 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
     private ResourceDataBinder binder;
 
     @Autowired
+    private ConnInstanceDataBinder connInstanceDataBinder;
+
+    @Autowired
     private MappingManager mappingManager;
 
     @Autowired
@@ -409,7 +413,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
 
         connFactory.createConnector(
                 connFactory.buildConnInstanceOverride(
-                        connInstance,
+                        connInstanceDataBinder.getConnInstanceTO(connInstance),
                         resourceTO.getConfOverride(),
                         resourceTO.isOverrideCapabilities() ? resourceTO.getCapabilitiesOverride() : null)).
                 test();

http://git-wip-us.apache.org/repos/asf/syncope/blob/6ac6a83e/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorFactory.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorFactory.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorFactory.java
index 0b0beb9..62602b6 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorFactory.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorFactory.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.provisioning.api;
 
 import java.util.Collection;
+import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
@@ -32,15 +33,15 @@ import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 public interface ConnectorFactory {
 
     /**
-     * Builds connector instance override over base connector instance, configuration and capabilities override.
+     * Builds connector instance override over base connector instance, configuration and capabilities.
      *
      * @param connInstance base connector instance
      * @param confOverride configuration override
      * @param capabilitiesOverride capabilities override
-     * @return connector instance override over base connector instance, configuration and capabilities override
+     * @return connector instance override over base connector instance, configuration and capabilities
      */
     ConnInstance buildConnInstanceOverride(
-            ConnInstance connInstance,
+            ConnInstanceTO connInstance,
             Collection<ConnConfProperty> confOverride,
             Collection<ConnectorCapability> capabilitiesOverride);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/6ac6a83e/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
index fce154e..85e5415 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
@@ -24,11 +24,13 @@ import java.util.HashSet;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
+import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
@@ -36,6 +38,7 @@ import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.ConnectorFactory;
 import org.apache.syncope.core.provisioning.api.ConnectorRegistry;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
+import org.apache.syncope.core.provisioning.api.data.ConnInstanceDataBinder;
 import org.identityconnectors.common.l10n.CurrentLocale;
 import org.identityconnectors.framework.api.ConnectorFacadeFactory;
 import org.slf4j.Logger;
@@ -53,8 +56,14 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
     private ConnIdBundleManager connIdBundleManager;
 
     @Autowired
+    private RealmDAO realmDAO;
+
+    @Autowired
     private ExternalResourceDAO resourceDAO;
 
+    @Autowired
+    private ConnInstanceDataBinder connInstanceDataBinder;
+
     private EntityFactory entityFactory;
 
     private String getBeanName(final ExternalResource resource) {
@@ -74,7 +83,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
 
     @Override
     public ConnInstance buildConnInstanceOverride(
-            final ConnInstance connInstance,
+            final ConnInstanceTO connInstance,
             final Collection<ConnConfProperty> confOverride,
             final Collection<ConnectorCapability> capabilitiesOverride) {
 
@@ -85,7 +94,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
         }
 
         ConnInstance override = entityFactory.newEntity(ConnInstance.class);
-        override.setAdminRealm(connInstance.getAdminRealm());
+        override.setAdminRealm(realmDAO.findByFullPath(connInstance.getAdminRealm()));
         override.setConnectorName(connInstance.getConnectorName());
         override.setDisplayName(connInstance.getDisplayName());
         override.setBundleName(connInstance.getBundleName());
@@ -106,7 +115,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
             }
         }
 
-        // add overridden properties
+        // add override properties
         for (ConnConfProperty prop : confOverride) {
             if (overridable.containsKey(prop.getSchema().getName()) && !prop.getValues().isEmpty()) {
                 conf.add(prop);
@@ -114,7 +123,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
             }
         }
 
-        // add overridable properties not overridden
+        // add override properties not substituted
         conf.addAll(overridable.values());
 
         override.setConf(conf);
@@ -139,7 +148,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
     @Override
     public void registerConnector(final ExternalResource resource) {
         ConnInstance connInstance = buildConnInstanceOverride(
-                resource.getConnector(),
+                connInstanceDataBinder.getConnInstanceTO(resource.getConnector()),
                 resource.getConfOverride(),
                 resource.isOverrideCapabilities() ? resource.getCapabilitiesOverride() : null);
         Connector connector = createConnector(connInstance);