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 2015/10/26 10:55:35 UTC
[3/4] syncope git commit: [SYNCOPE-714] Consolidating old
buildSchemaNames and buildSupportedObjectClasses into new buildO
bjectClassInfo
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
index f3ade5e..6033bd4 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
@@ -104,8 +104,8 @@ public class ConnInstanceTest extends AbstractTest {
conf.add(servicename);
// set connector configuration
- connInstance.setConfiguration(conf);
- assertFalse(connInstance.getConfiguration().isEmpty());
+ connInstance.setConf(conf);
+ assertFalse(connInstance.getConf().isEmpty());
// perform save operation
ConnInstance actual = connInstanceDAO.save(connInstance);
@@ -125,7 +125,7 @@ public class ConnInstanceTest extends AbstractTest {
assertEquals(60, actual.getConnRequestTimeout(), 0);
- conf = connInstance.getConfiguration();
+ conf = connInstance.getConf();
assertFalse(conf.isEmpty());
assertNotNull("configuration retrieving failed", conf);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
index d9f79fc..f557e8c 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
@@ -85,7 +85,7 @@ public class ConnInstanceTest extends AbstractTest {
|| "ws-target-resource-nopropagation".equalsIgnoreCase(resources.get(2).getKey())
|| "ws-target-resource-nopropagation".equalsIgnoreCase(resources.get(3).getKey()));
- connInstance.addCapability(ConnectorCapability.SEARCH);
+ connInstance.getCapabilities().add(ConnectorCapability.SEARCH);
connInstance = connInstanceDAO.save(connInstance);
assertNotNull(connInstance);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index d1fde9e..2bc840d 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -580,54 +580,55 @@ under the License.
<ConnInstance_capabilities ConnInstance_id="108" capability="SYNC"/>
<ExternalResource name="ws-target-resource-1" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="1" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
+ creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-2" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
syncPolicy_id="9"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-timeout" connector_id="102"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="1" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:${cargo.servlet.port}/syncope-fit-build-tools/services/provisioning"]}]'
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-list-mappings-1" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-list-mappings-2" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-delete" connector_id="102"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
propagationPriority="2" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-update" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-testdb" connector_id="101"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-testdb2" connector_id="106"
- randomPwdIfNotProvided="1" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-csv" connector_id="104"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0" syncPolicy_id="3"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
+ syncPolicy_id="3"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -636,7 +637,7 @@ under the License.
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-ldap" connector_id="105"
- randomPwdIfNotProvided="1" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="1"
createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
@@ -644,22 +645,25 @@ under the License.
<ExternalResource_PropActions resource_name="resource-ldap"
actionClassName="org.apache.syncope.core.provisioning.java.propagation.LDAPMembershipPropagationActions"/>
<ExternalResource name="ws-target-resource-nopropagation" connector_id="103"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1"
+ randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
passwordPolicy_id="4"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <!-- The following three resources has been added to verify the issue SYNCOPE-68 -->
- <ExternalResource name="ws-target-resource-nopropagation2" connector_id="103" enforceMandatoryCondition="1"
+ <!-- The following three resources have been added to verify the issue SYNCOPE-68 -->
+ <ExternalResource name="ws-target-resource-nopropagation2" connector_id="103"
+ enforceMandatoryCondition="1" overrideCapabilities="0"
randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-nopropagation3" connector_id="103" enforceMandatoryCondition="1"
+ <ExternalResource name="ws-target-resource-nopropagation3" connector_id="103"
+ enforceMandatoryCondition="1" overrideCapabilities="0"
randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-nopropagation4" connector_id="103" enforceMandatoryCondition="1"
+ <ExternalResource name="ws-target-resource-nopropagation4" connector_id="103"
+ enforceMandatoryCondition="1" overrideCapabilities="0"
randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -668,7 +672,7 @@ under the License.
<ExternalResource name="resource-db-sync" connector_id="107"
randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
enforceMandatoryCondition="0"
- propagationPrimary="0" propagationPriority="0"
+ propagationPrimary="0" propagationPriority="0" overrideCapabilities="0"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -676,14 +680,14 @@ under the License.
<ExternalResource name="resource-db-virattr" connector_id="107"
randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
enforceMandatoryCondition="0"
- propagationPrimary="0" propagationPriority="0"
+ propagationPrimary="0" propagationPriority="0" overrideCapabilities="0"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-db-scripted" connector_id="108"
randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
enforceMandatoryCondition="0"
- propagationPrimary="0" propagationPriority="0"
+ propagationPrimary="0" propagationPriority="0" overrideCapabilities="0"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnIdBundleManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnIdBundleManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnIdBundleManager.java
index 186dbbb..242202f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnIdBundleManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnIdBundleManager.java
@@ -31,7 +31,7 @@ import org.identityconnectors.framework.api.ConnectorInfoManager;
*/
public interface ConnIdBundleManager {
- ConfigurationProperties getConfigurationProperties(final ConnectorInfo info);
+ ConfigurationProperties getConfigurationProperties(ConnectorInfo info);
Map<URI, ConnectorInfoManager> getConnManagers();
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
index ce8adba..2a3a0a1 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
@@ -28,6 +28,7 @@ import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.ConnectorObject;
import org.identityconnectors.framework.common.objects.ObjectClass;
+import org.identityconnectors.framework.common.objects.ObjectClassInfo;
import org.identityconnectors.framework.common.objects.OperationOptions;
import org.identityconnectors.framework.common.objects.ResultsHandler;
import org.identityconnectors.framework.common.objects.SyncResultsHandler;
@@ -134,8 +135,7 @@ public interface Connector {
ConnectorObject getObject(ObjectClass objectClass, Uid uid, OperationOptions options);
/**
- * Get remote object used by the propagation manager in order to choose for a create (object doesn't exist) or an
- * update (object exists).
+ * Get remote object with check for intended operation to perform on external resource.
*
* @param operationType resource operation type
* @param objectClass ConnId's object class
@@ -186,40 +186,11 @@ public interface Connector {
Iterator<? extends MappingItem> mapItems);
/**
- * Read attribute for a given connector object.
+ * Builds metadata description of ConnId {@link ObjectClass}.
*
- * @param objectClass ConnId's object class
- * @param uid ConnId's Uid
- * @param options ConnId's OperationOptions
- * @param attributeName attribute to read
- * @return attribute (if present)
- */
- Attribute getObjectAttribute(ObjectClass objectClass, Uid uid, OperationOptions options, String attributeName);
-
- /**
- * Read attributes for a given connector object.
- *
- * @param objectClass ConnId's object class
- * @param uid ConnId's Uid
- * @param options ConnId's OperationOptions
- * @return attributes (if present)
+ * @return metadata description of ConnId ObjectClass
*/
- Set<Attribute> getObjectAttributes(ObjectClass objectClass, Uid uid, OperationOptions options);
-
- /**
- * Return resource schema names.
- *
- * @param includeSpecial return special attributes (like as __NAME__ or __PASSWORD__) if true
- * @return schema names
- */
- Set<String> getSchemaNames(boolean includeSpecial);
-
- /**
- * Return ConnId's object classes supported by this connector.
- *
- * @return supported object classes
- */
- Set<ObjectClass> getSupportedObjectClasses();
+ Set<ObjectClassInfo> getObjectClassInfo();
/**
* Validate a connector instance.
@@ -236,14 +207,5 @@ public interface Connector {
*
* @return active connector instance.
*/
- ConnInstance getActiveConnInstance();
-
- /**
- * Build options for requesting all mapped connector attributes.
- *
- * @param mapItems mapping items
- * @return options for requesting all mapped connector attributes
- * @see OperationOptions
- */
- OperationOptions getOperationOptions(Iterator<? extends MappingItem> mapItems);
+ ConnInstance getConnInstance();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/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 6d2d0c8..4c6dd82 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
@@ -20,7 +20,7 @@ package org.apache.syncope.core.provisioning.api;
import java.util.Set;
import org.apache.syncope.common.lib.types.ConnConfProperty;
-import org.apache.syncope.core.persistence.api.SyncopeLoader;
+import org.apache.syncope.common.lib.types.ConnectorCapability;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
@@ -29,16 +29,28 @@ import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
*
* @see Connector
*/
-public interface ConnectorFactory extends SyncopeLoader {
+public interface ConnectorFactory {
/**
- * Create connector from given connector instance and configuration properties.
+ * Builds connector instance override over base connector instance, configuration and capabilities override.
+ *
+ * @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
+ */
+ ConnInstance buildConnInstanceOverride(
+ ConnInstance connInstance,
+ Set<ConnConfProperty> confOverride,
+ Set<ConnectorCapability> capabilitiesOverride);
+
+ /**
+ * Create connector from given connector instance.
*
* @param connInstance connector instance
- * @param configuration configuration properties
* @return connector
*/
- Connector createConnector(ConnInstance connInstance, Set<ConnConfProperty> configuration);
+ Connector createConnector(ConnInstance connInstance);
/**
* Get existing connector for the given resource.
@@ -53,7 +65,6 @@ public interface ConnectorFactory extends SyncopeLoader {
*
* @see ExternalResource
*/
- @Override
void load();
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorRegistry.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorRegistry.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorRegistry.java
index 1bcbcbc..c1cc547 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorRegistry.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ConnectorRegistry.java
@@ -18,9 +18,6 @@
*/
package org.apache.syncope.core.provisioning.api;
-import java.util.Set;
-import org.apache.syncope.common.lib.types.ConnConfProperty;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
/**
@@ -29,15 +26,6 @@ import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
public interface ConnectorRegistry {
/**
- * Returns a connector instance with overridden property values, if found.
- *
- * @param connInstance base connector instance
- * @param overridden overridden property values
- * @return connector instance with overridden property values, if found
- */
- ConnInstance getOverriddenConnInstance(ConnInstance connInstance, Set<ConnConfProperty> overridden);
-
- /**
* Create and register into Spring context a bean for the given resource.
*
* @param resource external resource
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
index d3496a2..373d1af 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
@@ -18,31 +18,19 @@
*/
package org.apache.syncope.core.provisioning.api.data;
-import java.util.Set;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.types.ConnConfPropSchema;
-import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.identityconnectors.framework.api.ConfigurationProperty;
public interface ConnInstanceDataBinder {
- ConnConfPropSchema buildConnConfPropSchema(ConfigurationProperty property);
+ ConnConfPropSchema build(ConfigurationProperty property);
ConnInstance getConnInstance(ConnInstanceTO connInstanceTO);
ConnInstanceTO getConnInstanceTO(ConnInstance connInstance);
- /**
- * Merge connector configuration properties avoiding repetition but giving priority to primary set.
- *
- * @param primary primary set.
- * @param secondary secondary set.
- * @return merged set.
- */
- Set<ConnConfProperty> mergeConnConfProperties(Set<ConnConfProperty> primary,
- Set<ConnConfProperty> secondary);
-
- ConnInstance updateConnInstance(long connInstanceId, ConnInstanceTO connInstanceTO);
+ ConnInstance update(long key, ConnInstanceTO connInstanceTO);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
index 2d96d71..9f1ea5d 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
@@ -19,17 +19,14 @@
package org.apache.syncope.core.provisioning.api.data;
import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
public interface ResourceDataBinder {
- ExternalResource create(ResourceTO resourceTO);
-
- ConnInstance getConnInstance(ResourceTO resourceTO);
-
ResourceTO getResourceTO(ExternalResource resource);
+ ExternalResource create(ResourceTO resourceTO);
+
ExternalResource update(ExternalResource resource, ResourceTO resourceTO);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
index 0b4340e..83a38eb 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AsyncConnectorFacade.java
@@ -18,19 +18,16 @@
*/
package org.apache.syncope.core.provisioning.java;
-import java.util.HashSet;
+import java.util.Collections;
import java.util.Set;
import java.util.concurrent.Future;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.framework.api.ConnectorFacade;
import org.identityconnectors.framework.common.objects.Attribute;
-import org.identityconnectors.framework.common.objects.AttributeInfo;
-import org.identityconnectors.framework.common.objects.AttributeUtil;
import org.identityconnectors.framework.common.objects.ConnectorObject;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.identityconnectors.framework.common.objects.ObjectClassInfo;
import org.identityconnectors.framework.common.objects.OperationOptions;
-import org.identityconnectors.framework.common.objects.Schema;
import org.identityconnectors.framework.common.objects.SyncToken;
import org.identityconnectors.framework.common.objects.Uid;
import org.slf4j.Logger;
@@ -46,9 +43,6 @@ import org.springframework.stereotype.Component;
@Component
public class AsyncConnectorFacade {
- /**
- * Logger.
- */
private static final Logger LOG = LoggerFactory.getLogger(AsyncConnectorFacade.class);
@Async
@@ -111,83 +105,17 @@ public class AsyncConnectorFacade {
}
@Async
- public Future<Attribute> getObjectAttribute(
- final ConnectorFacade connector,
- final ObjectClass objectClass,
- final Uid uid,
- final OperationOptions options,
- final String attributeName) {
-
- Attribute attribute = null;
-
- ConnectorObject object = connector.getObject(objectClass, uid, options);
- if (object == null) {
- LOG.debug("Object for '{}' not found", uid.getUidValue());
- } else {
- attribute = object.getAttributeByName(attributeName);
- }
-
- return new AsyncResult<>(attribute);
- }
-
- @Async
- public Future<Set<Attribute>> getObjectAttributes(
- final ConnectorFacade connector,
- final ObjectClass objectClass,
- final Uid uid,
- final OperationOptions options) {
-
- Set<Attribute> attributes = new HashSet<>();
-
- ConnectorObject object = connector.getObject(objectClass, uid, options);
-
- if (object == null) {
- LOG.debug("Object for '{}' not found", uid.getUidValue());
- } else {
- for (String attribute : options.getAttributesToGet()) {
- attributes.add(object.getAttributeByName(attribute));
- }
- }
-
- return new AsyncResult<>(attributes);
- }
-
- @Async
- public Future<Set<String>> getSchemaNames(final ConnectorFacade connector, final boolean includeSpecial) {
- Set<String> schemaNames = new HashSet<>();
-
- try {
- Schema schema = connector.schema();
- for (ObjectClassInfo info : schema.getObjectClassInfo()) {
- for (AttributeInfo attrInfo : info.getAttributeInfo()) {
- if (includeSpecial || !AttributeUtil.isSpecialName(attrInfo.getName())) {
- schemaNames.add(attrInfo.getName());
- }
- }
- }
- } catch (Exception e) {
- // catch exception in order to manage unpredictable behaviors
- LOG.debug("While reading schema on connector {}", connector, e);
- }
-
- return new AsyncResult<>(schemaNames);
- }
-
- @Async
- public Future<Set<ObjectClass>> getSupportedObjectClasses(final ConnectorFacade connector) {
- Set<ObjectClass> objectClasses = new HashSet<>();
+ public Future<Set<ObjectClassInfo>> getObjectClassInfo(final ConnectorFacade connector) {
+ Set<ObjectClassInfo> result = Collections.emptySet();
try {
- Schema schema = connector.schema();
- for (ObjectClassInfo info : schema.getObjectClassInfo()) {
- objectClasses.add(new ObjectClass(info.getType()));
- }
+ result = connector.schema().getObjectClassInfo();
} catch (Exception e) {
// catch exception in order to manage unpredictable behaviors
LOG.debug("While reading schema on connector {}", connector, e);
}
- return new AsyncResult<>(objectClasses);
+ return new AsyncResult<>(result);
}
@Async
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
index 6c2be32..a3b865f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
@@ -21,7 +21,6 @@ package org.apache.syncope.core.provisioning.java;
import java.io.File;
import java.net.URI;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -31,8 +30,8 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.common.lib.types.ConnectorCapability;
-import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.ResourceOperation;
+import org.apache.syncope.core.misc.MappingUtils;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
import org.apache.syncope.core.provisioning.api.ConnPoolConfUtils;
@@ -50,11 +49,10 @@ import org.identityconnectors.framework.api.ConnectorFacadeFactory;
import org.identityconnectors.framework.api.ConnectorInfo;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.ConnectorObject;
-import org.identityconnectors.framework.common.objects.Name;
import org.identityconnectors.framework.common.objects.ObjectClass;
+import org.identityconnectors.framework.common.objects.ObjectClassInfo;
import org.identityconnectors.framework.common.objects.OperationOptions;
import org.identityconnectors.framework.common.objects.OperationOptionsBuilder;
-import org.identityconnectors.framework.common.objects.OperationalAttributes;
import org.identityconnectors.framework.common.objects.ResultsHandler;
import org.identityconnectors.framework.common.objects.SearchResult;
import org.identityconnectors.framework.common.objects.SortKey;
@@ -84,7 +82,7 @@ public class ConnectorFacadeProxy implements Connector {
/**
* Active connector instance.
*/
- private final ConnInstance activeConnInstance;
+ private final ConnInstance connInstance;
@Autowired
private AsyncConnectorFacade asyncFacade;
@@ -92,14 +90,14 @@ public class ConnectorFacadeProxy implements Connector {
/**
* Use the passed connector instance to build a ConnectorFacade that will be used to make all wrapped calls.
*
- * @param connInstance the connector instance configuration
+ * @param connInstance the connector instance
* @see ConnectorInfo
* @see APIConfiguration
* @see ConfigurationProperties
* @see ConnectorFacade
*/
public ConnectorFacadeProxy(final ConnInstance connInstance) {
- this.activeConnInstance = connInstance;
+ this.connInstance = connInstance;
ConnIdBundleManager connIdBundleManager =
ApplicationContextProvider.getBeanFactory().getBean(ConnIdBundleManager.class);
@@ -112,7 +110,7 @@ public class ConnectorFacadeProxy implements Connector {
// set connector configuration according to conninstance's
ConfigurationProperties properties = apiConfig.getConfigurationProperties();
- for (ConnConfProperty property : connInstance.getConfiguration()) {
+ for (ConnConfProperty property : connInstance.getConf()) {
if (property.getValues() != null && !property.getValues().isEmpty()) {
properties.setPropertyValue(property.getSchema().getName(),
getPropertyValue(property.getSchema().getType(), property.getValues()));
@@ -140,11 +138,11 @@ public class ConnectorFacadeProxy implements Connector {
public Uid authenticate(final String username, final String password, final OperationOptions options) {
Uid result = null;
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.AUTHENTICATE)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.AUTHENTICATE)) {
Future<Uid> future = asyncFacade.authenticate(
connector, username, new GuardedString(password.toCharArray()), options);
try {
- result = future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ result = future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -158,7 +156,7 @@ public class ConnectorFacadeProxy implements Connector {
}
} else {
LOG.info("Authenticate was attempted, although the connector only has these capabilities: {}. No action.",
- activeConnInstance.getCapabilities());
+ connInstance.getCapabilities());
}
return result;
@@ -173,12 +171,12 @@ public class ConnectorFacadeProxy implements Connector {
Uid result = null;
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.CREATE)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.CREATE)) {
propagationAttempted[0] = true;
Future<Uid> future = asyncFacade.create(connector, objectClass, attrs, options);
try {
- result = future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ result = future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -192,7 +190,7 @@ public class ConnectorFacadeProxy implements Connector {
}
} else {
LOG.info("Create was attempted, although the connector only has these capabilities: {}. No action.",
- activeConnInstance.getCapabilities());
+ connInstance.getCapabilities());
}
return result;
@@ -208,13 +206,13 @@ public class ConnectorFacadeProxy implements Connector {
Uid result = null;
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.UPDATE)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.UPDATE)) {
propagationAttempted[0] = true;
Future<Uid> future = asyncFacade.update(connector, objectClass, uid, attrs, options);
try {
- result = future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ result = future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -228,7 +226,7 @@ public class ConnectorFacadeProxy implements Connector {
}
} else {
LOG.info("Update for {} was attempted, although the "
- + "connector only has these capabilities: {}. No action.", uid.getUidValue(), activeConnInstance.
+ + "connector only has these capabilities: {}. No action.", uid.getUidValue(), connInstance.
getCapabilities());
}
@@ -242,13 +240,13 @@ public class ConnectorFacadeProxy implements Connector {
final OperationOptions options,
final Boolean[] propagationAttempted) {
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.DELETE)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.DELETE)) {
propagationAttempted[0] = true;
Future<Uid> future = asyncFacade.delete(connector, objectClass, uid, options);
try {
- future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -262,7 +260,7 @@ public class ConnectorFacadeProxy implements Connector {
}
} else {
LOG.info("Delete for {} was attempted, although the connector only has these capabilities: {}. No action.",
- uid.getUidValue(), activeConnInstance.getCapabilities());
+ uid.getUidValue(), connInstance.getCapabilities());
}
}
@@ -270,11 +268,11 @@ public class ConnectorFacadeProxy implements Connector {
public void sync(final ObjectClass objectClass, final SyncToken token, final SyncResultsHandler handler,
final OperationOptions options) {
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.SYNC)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.SYNC)) {
connector.sync(objectClass, token, handler, options);
} else {
LOG.info("Sync was attempted, although the connector only has these capabilities: {}. No action.",
- activeConnInstance.getCapabilities());
+ connInstance.getCapabilities());
}
}
@@ -282,11 +280,11 @@ public class ConnectorFacadeProxy implements Connector {
public SyncToken getLatestSyncToken(final ObjectClass objectClass) {
SyncToken result = null;
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.SYNC)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.SYNC)) {
Future<SyncToken> future = asyncFacade.getLatestSyncToken(connector, objectClass);
try {
- result = future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ result = future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -300,7 +298,7 @@ public class ConnectorFacadeProxy implements Connector {
}
} else {
LOG.info("getLatestSyncToken was attempted, although the "
- + "connector only has these capabilities: {}. No action.", activeConnInstance.getCapabilities());
+ + "connector only has these capabilities: {}. No action.", connInstance.getCapabilities());
}
return result;
@@ -320,17 +318,17 @@ public class ConnectorFacadeProxy implements Connector {
boolean hasCapablities = false;
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.SEARCH)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.SEARCH)) {
if (operationType == null) {
hasCapablities = true;
} else {
switch (operationType) {
case CREATE:
- hasCapablities = activeConnInstance.getCapabilities().contains(ConnectorCapability.CREATE);
+ hasCapablities = connInstance.getCapabilities().contains(ConnectorCapability.CREATE);
break;
case UPDATE:
- hasCapablities = activeConnInstance.getCapabilities().contains(ConnectorCapability.UPDATE);
+ hasCapablities = connInstance.getCapabilities().contains(ConnectorCapability.UPDATE);
break;
default:
@@ -344,11 +342,11 @@ public class ConnectorFacadeProxy implements Connector {
future = asyncFacade.getObject(connector, objectClass, uid, options);
} else {
LOG.info("Search was attempted, although the connector only has these capabilities: {}. No action.",
- activeConnInstance.getCapabilities());
+ connInstance.getCapabilities());
}
try {
- return future == null ? null : future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ return future == null ? null : future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
if (future != null) {
future.cancel(true);
@@ -383,69 +381,10 @@ public class ConnectorFacadeProxy implements Connector {
}
@Override
- public Attribute getObjectAttribute(final ObjectClass objectClass, final Uid uid, final OperationOptions options,
- final String attributeName) {
-
- Future<Attribute> future = asyncFacade.getObjectAttribute(
- connector, objectClass, uid, options, attributeName);
- try {
- return future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
- } catch (java.util.concurrent.TimeoutException e) {
- future.cancel(true);
- throw new TimeoutException("Request timeout");
- } catch (Exception e) {
- LOG.error("Connector request execution failure", e);
- if (e.getCause() instanceof RuntimeException) {
- throw (RuntimeException) e.getCause();
- } else {
- throw new IllegalArgumentException(e.getCause());
- }
- }
- }
-
- @Override
- public Set<Attribute> getObjectAttributes(final ObjectClass objectClass, final Uid uid,
- final OperationOptions options) {
-
- Future<Set<Attribute>> future = asyncFacade.getObjectAttributes(connector, objectClass, uid, options);
+ public Set<ObjectClassInfo> getObjectClassInfo() {
+ Future<Set<ObjectClassInfo>> future = asyncFacade.getObjectClassInfo(connector);
try {
- return future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
- } catch (java.util.concurrent.TimeoutException e) {
- future.cancel(true);
- throw new TimeoutException("Request timeout");
- } catch (Exception e) {
- LOG.error("Connector request execution failure", e);
- if (e.getCause() instanceof RuntimeException) {
- throw (RuntimeException) e.getCause();
- } else {
- throw new IllegalArgumentException(e.getCause());
- }
- }
- }
-
- @Override
- public Set<String> getSchemaNames(final boolean includeSpecial) {
- Future<Set<String>> future = asyncFacade.getSchemaNames(connector, includeSpecial);
- try {
- return future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
- } catch (java.util.concurrent.TimeoutException e) {
- future.cancel(true);
- throw new TimeoutException("Request timeout");
- } catch (Exception e) {
- LOG.error("Connector request execution failure", e);
- if (e.getCause() instanceof RuntimeException) {
- throw (RuntimeException) e.getCause();
- } else {
- throw new IllegalArgumentException(e.getCause());
- }
- }
- }
-
- @Override
- public Set<ObjectClass> getSupportedObjectClasses() {
- Future<Set<ObjectClass>> future = asyncFacade.getSupportedObjectClasses(connector);
- try {
- return future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ return future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -463,7 +402,7 @@ public class ConnectorFacadeProxy implements Connector {
public void validate() {
Future<String> future = asyncFacade.test(connector);
try {
- future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -481,7 +420,7 @@ public class ConnectorFacadeProxy implements Connector {
public void test() {
Future<String> future = asyncFacade.test(connector);
try {
- future.get(activeConnInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
+ future.get(connInstance.getConnRequestTimeout(), TimeUnit.SECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Request timeout");
@@ -502,7 +441,7 @@ public class ConnectorFacadeProxy implements Connector {
final ResultsHandler handler,
final OperationOptions options) {
- if (activeConnInstance.getCapabilities().contains(ConnectorCapability.SEARCH)) {
+ if (connInstance.getCapabilities().contains(ConnectorCapability.SEARCH)) {
if (options.getPageSize() == null && options.getPagedResultsCookie() == null) {
OperationOptionsBuilder builder = new OperationOptionsBuilder(options);
builder.setPageSize(DEFAULT_PAGE_SIZE);
@@ -534,7 +473,7 @@ public class ConnectorFacadeProxy implements Connector {
}
} else {
LOG.info("Search was attempted, although the connector only has these capabilities: {}. No action.",
- activeConnInstance.getCapabilities());
+ connInstance.getCapabilities());
}
}
@@ -560,39 +499,14 @@ public class ConnectorFacadeProxy implements Connector {
}
}, new ArrayList<SortKey>(orderBy.size())));
- builder.setAttributesToGet(getOperationOptions(mapItems).getAttributesToGet());
+ builder.setAttributesToGet(MappingUtils.buildOperationOptions(mapItems).getAttributesToGet());
search(objectClass, filter, handler, builder.build());
}
@Override
- public ConnInstance getActiveConnInstance() {
- return activeConnInstance;
- }
-
- @Override
- public OperationOptions getOperationOptions(final Iterator<? extends MappingItem> mapItems) {
- // -------------------------------------
- // Ask just for mapped attributes
- // -------------------------------------
- OperationOptionsBuilder builder = new OperationOptionsBuilder();
-
- Set<String> attrsToGet = new HashSet<>();
- attrsToGet.add(Name.NAME);
- attrsToGet.add(Uid.NAME);
- attrsToGet.add(OperationalAttributes.ENABLE_NAME);
-
- while (mapItems.hasNext()) {
- MappingItem mapItem = mapItems.next();
- if (mapItem.getPurpose() != MappingPurpose.NONE) {
- attrsToGet.add(mapItem.getExtAttrName());
- }
- }
-
- builder.setAttributesToGet(attrsToGet);
- // -------------------------------------
-
- return builder.build();
+ public ConnInstance getConnInstance() {
+ return connInstance;
}
private Object getPropertyValue(final String propType, final List<?> values) {
@@ -637,6 +551,6 @@ public class ConnectorFacadeProxy implements Connector {
@Override
public String toString() {
return "ConnectorFacadeProxy{"
- + "connector=" + connector + "\n" + "capabitilies=" + activeConnInstance.getCapabilities() + '}';
+ + "connector=" + connector + "\n" + "capabitilies=" + connInstance.getCapabilities() + '}';
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/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 a38ba50..1ecc163 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
@@ -25,8 +25,10 @@ import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.syncope.common.lib.types.ConnConfProperty;
+import org.apache.syncope.common.lib.types.ConnectorCapability;
import org.apache.syncope.core.misc.security.AuthContextUtils;
import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
+import org.apache.syncope.core.persistence.api.SyncopeLoader;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
@@ -42,11 +44,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-/**
- * Load ConnId connector instances.
- */
@Component
-public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
+public class ConnectorManager implements ConnectorRegistry, ConnectorFactory, SyncopeLoader {
private static final Logger LOG = LoggerFactory.getLogger(ConnectorManager.class);
@@ -56,6 +55,11 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
@Autowired
private ExternalResourceDAO resourceDAO;
+ @Override
+ public Integer getPriority() {
+ return 100;
+ }
+
private String getBeanName(final ExternalResource resource) {
return String.format("connInstance-%s-%d-%s",
AuthContextUtils.getDomain(), resource.getConnector().getKey(), resource.getKey());
@@ -72,54 +76,61 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
}
@Override
- public Connector createConnector(final ConnInstance connInstance, final Set<ConnConfProperty> configuration) {
- ConnInstance connInstanceClone = SerializationUtils.clone(connInstance);
-
- connInstanceClone.setConfiguration(configuration);
+ public ConnInstance buildConnInstanceOverride(
+ final ConnInstance connInstance,
+ final Set<ConnConfProperty> confOverride,
+ final Set<ConnectorCapability> capabilitiesOverride) {
- Connector connector = new ConnectorFacadeProxy(connInstanceClone);
- ApplicationContextProvider.getBeanFactory().autowireBean(connector);
-
- return connector;
- }
-
- @Override
- public ConnInstance getOverriddenConnInstance(
- final ConnInstance connInstance, final Set<ConnConfProperty> overridden) {
+ ConnInstance override = SerializationUtils.clone(connInstance);
- Set<ConnConfProperty> configuration = new HashSet<>();
Map<String, ConnConfProperty> overridable = new HashMap<>();
+ Set<ConnConfProperty> conf = new HashSet<>();
- // add not overridable properties
- for (ConnConfProperty prop : connInstance.getConfiguration()) {
+ for (ConnConfProperty prop : override.getConf()) {
if (prop.isOverridable()) {
overridable.put(prop.getSchema().getName(), prop);
} else {
- configuration.add(prop);
+ conf.add(prop);
}
}
// add overridden properties
- for (ConnConfProperty prop : overridden) {
+ for (ConnConfProperty prop : confOverride) {
if (overridable.containsKey(prop.getSchema().getName()) && !prop.getValues().isEmpty()) {
- configuration.add(prop);
+ conf.add(prop);
overridable.remove(prop.getSchema().getName());
}
}
// add overridable properties not overridden
- configuration.addAll(overridable.values());
+ conf.addAll(overridable.values());
- connInstance.setConfiguration(configuration);
+ override.setConf(conf);
- return connInstance;
+ // replace capabilities
+ if (capabilitiesOverride != null) {
+ override.getCapabilities().clear();
+ override.getCapabilities().addAll(capabilitiesOverride);
+ }
+
+ return override;
+ }
+
+ @Override
+ public Connector createConnector(final ConnInstance connInstance) {
+ Connector connector = new ConnectorFacadeProxy(connInstance);
+ ApplicationContextProvider.getBeanFactory().autowireBean(connector);
+
+ return connector;
}
@Override
public void registerConnector(final ExternalResource resource) {
- ConnInstance connInstance = getOverriddenConnInstance(
- SerializationUtils.clone(resource.getConnector()), resource.getConnInstanceConfiguration());
- Connector connector = createConnector(resource.getConnector(), connInstance.getConfiguration());
+ ConnInstance connInstance = buildConnInstanceOverride(
+ resource.getConnector(),
+ resource.getConfOverride(),
+ resource.isOverrideCapabilities() ? resource.getCapabilitiesOverride() : null);
+ Connector connector = createConnector(connInstance);
LOG.debug("Connector to be registered: {}", connector);
String beanName = getBeanName(resource);
@@ -137,11 +148,6 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
ApplicationContextProvider.getBeanFactory().destroySingleton(id);
}
- @Override
- public Integer getPriority() {
- return 100;
- }
-
@Transactional(readOnly = true)
@Override
public void load() {
@@ -171,7 +177,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory {
public void unload() {
int connectors = 0;
for (ExternalResource resource : resourceDAO.findAll()) {
- final String beanName = getBeanName(resource);
+ String beanName = getBeanName(resource);
if (ApplicationContextProvider.getBeanFactory().containsSingleton(beanName)) {
LOG.info("Unegistering resource-connector pair {}-{}", resource, resource.getConnector());
unregisterConnector(beanName);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
index 5763449..94c68ee 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
@@ -130,7 +130,7 @@ public class VirAttrHandlerImpl implements VirAttrHandler {
ConnectorObject connectorObject = connector.getObject(
entry.getKey().getObjectClass(),
new Uid(connObjectKey),
- connector.getOperationOptions(linkingMappingItems.iterator()));
+ MappingUtils.buildOperationOptions(linkingMappingItems.iterator()));
if (connectorObject == null) {
LOG.debug("No read from {} about {}", entry.getKey(), connObjectKey);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
index 7c28b66..70914ae 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
@@ -21,8 +21,6 @@ package org.apache.syncope.core.provisioning.java.data;
import org.apache.syncope.core.provisioning.api.data.ConnInstanceDataBinder;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.syncope.common.lib.SyncopeClientException;
@@ -58,35 +56,6 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
private EntityFactory entityFactory;
@Override
- public Set<ConnConfProperty> mergeConnConfProperties(
- final Set<ConnConfProperty> primary,
- final Set<ConnConfProperty> secondary) {
-
- Set<ConnConfProperty> conf = new HashSet<>();
-
- // to be used to control managed prop (needed by overridden mechanism)
- Set<String> propertyNames = new HashSet<>();
-
- // get overridden connector configuration properties
- for (ConnConfProperty prop : primary) {
- if (!propertyNames.contains(prop.getSchema().getName())) {
- conf.add(prop);
- propertyNames.add(prop.getSchema().getName());
- }
- }
-
- // get connector configuration properties
- for (ConnConfProperty prop : secondary) {
- if (!propertyNames.contains(prop.getSchema().getName())) {
- conf.add(prop);
- propertyNames.add(prop.getSchema().getName());
- }
- }
-
- return conf;
- }
-
- @Override
public ConnInstance getConnInstance(final ConnInstanceTO connInstanceTO) {
SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing);
@@ -106,7 +75,7 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
sce.getElements().add("connectorname");
}
- if (connInstanceTO.getConfiguration() == null || connInstanceTO.getConfiguration().isEmpty()) {
+ if (connInstanceTO.getConf().isEmpty()) {
sce.getElements().add("configuration");
}
@@ -130,7 +99,7 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
}
@Override
- public ConnInstance updateConnInstance(final long connInstanceId, final ConnInstanceTO connInstanceTO) {
+ public ConnInstance update(final long connInstanceId, final ConnInstanceTO connInstanceTO) {
SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing);
if (connInstanceId == 0) {
@@ -157,8 +126,8 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
connInstance.setConnectorName(connInstanceTO.getConnectorName());
}
- if (connInstanceTO.getConfiguration() != null && !connInstanceTO.getConfiguration().isEmpty()) {
- connInstance.setConfiguration(connInstanceTO.getConfiguration());
+ if (connInstanceTO.getConf() != null && !connInstanceTO.getConf().isEmpty()) {
+ connInstance.setConf(connInstanceTO.getConf());
}
if (connInstanceTO.getDisplayName() != null) {
@@ -184,7 +153,7 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
}
@Override
- public ConnConfPropSchema buildConnConfPropSchema(final ConfigurationProperty property) {
+ public ConnConfPropSchema build(final ConfigurationProperty property) {
ConnConfPropSchema connConfPropSchema = new ConnConfPropSchema();
connConfPropSchema.setName(property.getName());
@@ -219,9 +188,9 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
ConfigurationProperties properties =
connIdBundleManager.getConfigurationProperties(connIdBundleManager.getConnectorInfo(connInstance));
for (final String propName : properties.getPropertyNames()) {
- ConnConfPropSchema schema = buildConnConfPropSchema(properties.getProperty(propName));
+ ConnConfPropSchema schema = build(properties.getProperty(propName));
- ConnConfProperty property = CollectionUtils.find(connInstanceTO.getConfiguration(),
+ ConnConfProperty property = CollectionUtils.find(connInstanceTO.getConf(),
new Predicate<ConnConfProperty>() {
@Override
@@ -231,7 +200,7 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
});
if (property == null) {
property = new ConnConfProperty();
- connInstanceTO.getConfiguration().add(property);
+ connInstanceTO.getConf().add(property);
}
property.setSchema(schema);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
index 388f099..dff71a0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
@@ -33,7 +33,6 @@ import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.IntMappingType;
import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
@@ -43,7 +42,6 @@ import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
import org.apache.syncope.core.persistence.api.entity.policy.SyncPolicy;
-import org.apache.syncope.core.provisioning.api.ConnectorRegistry;
import org.apache.syncope.core.misc.jexl.JexlUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -68,9 +66,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
private AnyTypeDAO anyTypeDAO;
@Autowired
- private ConnectorRegistry connRegistry;
-
- @Autowired
private ConnInstanceDAO connInstanceDAO;
@Autowired
@@ -100,7 +95,7 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
resource.setConnector(connector);
if (!connector.getResources().contains(resource)) {
- connector.addResource(resource);
+ connector.add(resource);
}
}
@@ -196,7 +191,11 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
resource.setSyncPolicy(resourceTO.getSyncPolicy() == null
? null : (SyncPolicy) policyDAO.find(resourceTO.getSyncPolicy()));
- resource.setConnInstanceConfiguration(new HashSet<>(resourceTO.getConnConfProperties()));
+ resource.setConfOverride(new HashSet<>(resourceTO.getConfOverride()));
+
+ resource.setOverrideCapabilities(resourceTO.isOverrideCapabilities());
+ resource.getCapabilitiesOverride().clear();
+ resource.getCapabilitiesOverride().addAll(resourceTO.getCapabilitiesOverride());
resource.getPropagationActionsClassNames().clear();
resource.getPropagationActionsClassNames().addAll(resourceTO.getPropagationActionsClassNames());
@@ -270,17 +269,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
return item;
}
- @Override
- public ConnInstance getConnInstance(final ResourceTO resourceTO) {
- ConnInstance connInstance = connInstanceDAO.find(resourceTO.getConnector());
- if (connInstance == null) {
- throw new NotFoundException("Connector '" + resourceTO.getConnector() + "'");
- }
-
- final ConnInstance connInstanceClone = SerializationUtils.clone(connInstance);
- return connRegistry.getOverriddenConnInstance(connInstanceClone, resourceTO.getConnConfProperties());
- }
-
private void populateMappingTO(final Mapping mapping, final MappingTO mappingTO) {
mappingTO.setConnObjectLink(mapping.getConnObjectLink());
@@ -367,7 +355,10 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
resourceTO.setSyncPolicy(resource.getSyncPolicy() == null
? null : resource.getSyncPolicy().getKey());
- resourceTO.getConnConfProperties().addAll(resource.getConnInstanceConfiguration());
+ resourceTO.getConfOverride().addAll(resource.getConfOverride());
+
+ resourceTO.setOverrideCapabilities(resource.isOverrideCapabilities());
+ resourceTO.getCapabilitiesOverride().addAll(resource.getCapabilitiesOverride());
resourceTO.getPropagationActionsClassNames().addAll(resource.getPropagationActionsClassNames());
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index 316f91a..c083187 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -566,7 +566,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
task.getOperation(),
new ObjectClass(task.getObjectClassName()),
new Uid(connObjectKey),
- connector.getOperationOptions(IteratorUtils.chainedIterator(
+ MappingUtils.buildOperationOptions(IteratorUtils.chainedIterator(
MappingUtils.getPropagationMappingItems(provision).iterator(),
linkingMappingItems.iterator())));
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
index 6b4760b..6910c19 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java
@@ -88,7 +88,7 @@ public class DBPasswordPropagationActions extends DefaultPropagationActions {
private String getCipherAlgorithm(final ConnInstance connInstance) {
ConnConfProperty cipherAlgorithm =
- CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() {
+ CollectionUtils.find(connInstance.getConf(), new Predicate<ConnConfProperty>() {
@Override
public boolean evaluate(final ConnConfProperty property) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
index 870be79..3ba0dc9 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
@@ -94,7 +94,7 @@ public class LDAPPasswordPropagationActions extends DefaultPropagationActions {
private String getCipherAlgorithm(final ConnInstance connInstance) {
ConnConfProperty cipherAlgorithm =
- CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() {
+ CollectionUtils.find(connInstance.getConf(), new Predicate<ConnConfProperty>() {
@Override
public boolean evaluate(final ConnConfProperty property) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractPushResultHandler.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractPushResultHandler.java
index dcce5e5..e0d3d59 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/AbstractPushResultHandler.java
@@ -134,7 +134,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan
obj = profile.getConnector().getObject(
objectClass,
uid,
- profile.getConnector().getOperationOptions(IteratorUtils.<MappingItem>emptyIterator()));
+ MappingUtils.buildOperationOptions(IteratorUtils.<MappingItem>emptyIterator()));
} catch (TimeoutException toe) {
LOG.debug("Request timeout", toe);
throw toe;
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
index ec7fb2e..35e50f9 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/DBPasswordSyncActions.java
@@ -91,7 +91,7 @@ public class DBPasswordSyncActions extends DefaultSyncActions {
private void parseEncodedPassword(final String password, final Connector connector) {
if (password != null) {
- ConnInstance connInstance = connector.getActiveConnInstance();
+ ConnInstance connInstance = connector.getConnInstance();
String cipherAlgorithm = getCipherAlgorithm(connInstance);
if (!CLEARTEXT.equals(cipherAlgorithm)) {
@@ -108,7 +108,7 @@ public class DBPasswordSyncActions extends DefaultSyncActions {
private String getCipherAlgorithm(final ConnInstance connInstance) {
ConnConfProperty cipherAlgorithm =
- CollectionUtils.find(connInstance.getConfiguration(), new Predicate<ConnConfProperty>() {
+ CollectionUtils.find(connInstance.getConf(), new Predicate<ConnConfProperty>() {
@Override
public boolean evaluate(final ConnConfProperty property) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
index 430d06d..59e8c42 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/LDAPMembershipSyncActions.java
@@ -55,6 +55,7 @@ import org.apache.syncope.core.persistence.api.entity.user.UMembership;
import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
import org.identityconnectors.framework.common.objects.Attribute;
+import org.identityconnectors.framework.common.objects.ConnectorObject;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.identityconnectors.framework.common.objects.OperationOptionsBuilder;
import org.identityconnectors.framework.common.objects.SyncDelta;
@@ -109,7 +110,7 @@ public class LDAPMembershipSyncActions extends DefaultSyncActions {
* @return the name of the attribute used to keep track of group memberships
*/
protected String getGroupMembershipAttrName(final Connector connector) {
- ConnConfProperty groupMembership = CollectionUtils.find(connector.getActiveConnInstance().getConfiguration(),
+ ConnConfProperty groupMembership = CollectionUtils.find(connector.getConnInstance().getConf(),
new Predicate<ConnConfProperty>() {
@Override
@@ -196,7 +197,12 @@ public class LDAPMembershipSyncActions extends DefaultSyncActions {
if (membAttr == null) {
OperationOptionsBuilder oob = new OperationOptionsBuilder();
oob.setAttributesToGet(groupMemberName);
- membAttr = connector.getObjectAttribute(ObjectClass.GROUP, delta.getUid(), oob.build(), groupMemberName);
+ ConnectorObject remoteObj = connector.getObject(ObjectClass.GROUP, delta.getUid(), oob.build());
+ if (remoteObj == null) {
+ LOG.debug("Object for '{}' not found", delta.getUid().getUidValue());
+ } else {
+ membAttr = remoteObj.getAttributeByName(groupMemberName);
+ }
}
if (membAttr != null && membAttr.getValue() != null) {
result = membAttr.getValue();
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
index 890cece..d3a4a4d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
@@ -27,6 +27,7 @@ import java.util.Set;
import org.apache.commons.collections4.IteratorUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.lib.policy.SyncPolicySpec;
+import org.apache.syncope.core.misc.MappingUtils;
import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
@@ -185,13 +186,13 @@ public class SyncJobDelegate extends AbstractProvisioningJobDelegate<SyncTask> {
connector.getAllObjects(
provision.getObjectClass(),
handler,
- connector.getOperationOptions(mapItems));
+ MappingUtils.buildOperationOptions(mapItems));
} else {
connector.sync(
provision.getObjectClass(),
provision.getSyncToken(),
handler,
- connector.getOperationOptions(mapItems));
+ MappingUtils.buildOperationOptions(mapItems));
}
if (!dryRun && !syncTask.isFullReconciliation()) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
index eefccad..4fa504e 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
@@ -128,7 +128,7 @@ public class SyncUtils {
return found.add(obj);
}
},
- connector.getOperationOptions(MappingUtils.getSyncMappingItems(provision).iterator()));
+ MappingUtils.buildOperationOptions(MappingUtils.getSyncMappingItems(provision).iterator()));
if (found.isEmpty()) {
LOG.debug("No {} found on {} with __NAME__ {}", provision.getObjectClass(), resource, name);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
index ac0694d..c64a02d 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
@@ -24,10 +24,8 @@ import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.BulkAction;
import org.apache.syncope.common.lib.to.BulkActionResult;
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.to.PlainSchemaTO;
-import org.apache.syncope.common.lib.wrap.ConnIdObjectClass;
-import org.apache.syncope.common.rest.api.CollectionWrapper;
import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.service.ConnectorService;
import org.apache.syncope.core.logic.ConnectorLogic;
@@ -60,13 +58,10 @@ public class ConnectorServiceImpl extends AbstractServiceImpl implements Connect
}
@Override
- public List<PlainSchemaTO> buildSchemaNames(final ConnInstanceTO connInstanceTO, final boolean includeSpecial) {
- return logic.buildSchemaNames(connInstanceTO, includeSpecial);
- }
+ public List<ConnIdObjectClassTO> buildObjectClassInfo(
+ final ConnInstanceTO connInstanceTO, final boolean includeSpecial) {
- @Override
- public List<ConnIdObjectClass> buildSupportedObjectClasses(final ConnInstanceTO connInstanceTO) {
- return CollectionWrapper.wrap(logic.buildSupportedObjectClasses(connInstanceTO), ConnIdObjectClass.class);
+ return logic.buildObjectClassInfo(connInstanceTO, includeSpecial);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
index 32ae12c..b8a9fa7 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.lib.to.EventCategoryTO;
import org.apache.syncope.common.lib.to.LoggerTO;
import org.apache.syncope.common.lib.types.AuditLoggerName;
import org.apache.syncope.common.lib.types.LoggerType;
-import org.apache.syncope.common.rest.api.CollectionWrapper;
+import org.apache.syncope.common.rest.api.LoggerWrapper;
import org.apache.syncope.common.rest.api.service.LoggerService;
import org.apache.syncope.core.logic.LoggerLogic;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,7 +66,7 @@ public class LoggerServiceImpl extends AbstractServiceImpl implements LoggerServ
case AUDIT:
List<AuditLoggerName> auditLogger = logic.listAudits();
- return CollectionWrapper.unwrapLogger(auditLogger);
+ return LoggerWrapper.unwrap(auditLogger);
default:
throw new BadRequestException();