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 2021/06/11 13:12:50 UTC

[syncope] branch 2_1_X updated (13a45fd -> 90ad51c)

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a change to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git.


    from 13a45fd  Upgrading commons-jexl + various changes to allow more for extendability
     new 80e08db  Upgrading CXF and bcpkix-jdk15on
     new 90ad51c  Futher enhancements for extendability

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/provisioning/api/ConnectorFactory.java    | 14 +++++++--
 .../provisioning/java/ConnectorFacadeProxy.java    | 16 ++++-------
 .../core/provisioning/java/ConnectorManager.java   | 33 +++++++++++++---------
 .../pushpull/AbstractProvisioningJobDelegate.java  | 22 +++++++++------
 pom.xml                                            |  4 +--
 5 files changed, 52 insertions(+), 37 deletions(-)

[syncope] 02/02: Futher enhancements for extendability

Posted by il...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 90ad51cf1f570a32d79af6cd61433a15c5853719
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Jun 11 14:22:42 2021 +0200

    Futher enhancements for extendability
---
 .../core/provisioning/api/ConnectorFactory.java    | 14 +++++++--
 .../provisioning/java/ConnectorFacadeProxy.java    | 16 ++++-------
 .../core/provisioning/java/ConnectorManager.java   | 33 +++++++++++++---------
 .../pushpull/AbstractProvisioningJobDelegate.java  | 22 +++++++++------
 4 files changed, 50 insertions(+), 35 deletions(-)

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 2494df3..815a847 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
@@ -55,13 +55,21 @@ public interface ConnectorFactory {
     Connector createConnector(ConnInstance connInstance);
 
     /**
-     * Get existing connector for the given resource.
+     * Get existing connector bean for the given resource or create if not found.
      *
-     * @param resource the resource.
-     * @return live connector bran for given resource
+     * @param resource the resource
+     * @return live connector bean for given resource
      */
     Connector getConnector(ExternalResource resource);
 
+    /*
+     * Get existing connector bean for the given resource if found.
+     *
+     * @param resource the resource.
+     * @return live connector bean for given resource
+     */
+    Optional<Connector> readConnector(ExternalResource resource);
+
     /**
      * Load connectors for all existing resources.
      *
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 a3bebe5..e363a38 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
@@ -33,6 +33,7 @@ import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.TimeoutException;
 import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.identityconnectors.common.CollectionUtil;
 import org.identityconnectors.common.security.GuardedByteArray;
 import org.identityconnectors.common.security.GuardedString;
 import org.identityconnectors.framework.api.APIConfiguration;
@@ -54,10 +55,7 @@ import org.identityconnectors.framework.common.objects.filter.Filter;
 import org.identityconnectors.framework.spi.SearchResultsHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ClassUtils;
-import org.springframework.util.CollectionUtils;
 
 public class ConnectorFacadeProxy implements Connector {
 
@@ -75,20 +73,21 @@ public class ConnectorFacadeProxy implements Connector {
      */
     private final ConnInstance connInstance;
 
-    @Autowired
-    private AsyncConnectorFacade asyncFacade;
+    private final AsyncConnectorFacade asyncFacade;
 
     /**
      * Use the passed connector instance to build a ConnectorFacade that will be used to make all wrapped calls.
      *
      * @param connInstance the connector instance
+     * @param asyncFacade the async connectot facade
      * @see ConnectorInfo
      * @see APIConfiguration
      * @see ConfigurationProperties
      * @see ConnectorFacade
      */
-    public ConnectorFacadeProxy(final ConnInstance connInstance) {
+    public ConnectorFacadeProxy(final ConnInstance connInstance, final AsyncConnectorFacade asyncFacade) {
         this.connInstance = connInstance;
+        this.asyncFacade = asyncFacade;
 
         ConnIdBundleManager connIdBundleManager =
                 ApplicationContextProvider.getBeanFactory().getBean(ConnIdBundleManager.class);
@@ -105,7 +104,7 @@ public class ConnectorFacadeProxy implements Connector {
         // set connector configuration according to conninstance's
         ConfigurationProperties properties = apiConfig.getConfigurationProperties();
         connInstance.getConf().stream().
-                filter(property -> !CollectionUtils.isEmpty(property.getValues())).
+                filter(property -> !CollectionUtil.isEmpty(property.getValues())).
                 forEach(property -> properties.setPropertyValue(
                 property.getSchema().getName(),
                 getPropertyValue(property.getSchema().getType(), property.getValues())));
@@ -257,7 +256,6 @@ public class ConnectorFacadeProxy implements Connector {
         }
     }
 
-    @Transactional
     @Override
     public void sync(final ObjectClass objectClass, final SyncToken token, final SyncResultsHandler handler,
             final OperationOptions options) {
@@ -298,7 +296,6 @@ public class ConnectorFacadeProxy implements Connector {
         return result;
     }
 
-    @Transactional
     @Override
     public void fullReconciliation(
             final ObjectClass objectClass,
@@ -308,7 +305,6 @@ public class ConnectorFacadeProxy implements Connector {
         Connector.super.fullReconciliation(objectClass, handler, options);
     }
 
-    @Transactional
     @Override
     public void filteredReconciliation(
             final ObjectClass objectClass,
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 305095d..ace4c7c 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
@@ -67,6 +67,9 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory, Sy
     @Autowired
     private ConnInstanceDataBinder connInstanceDataBinder;
 
+    @Autowired
+    private AsyncConnectorFacade asyncFacade;
+
     private EntityFactory entityFactory;
 
     @Override
@@ -80,13 +83,18 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory, Sy
     }
 
     @Override
+    public Optional<Connector> readConnector(final ExternalResource resource) {
+        return Optional.ofNullable((Connector) ApplicationContextProvider.getBeanFactory().
+                getSingleton(getBeanName(resource)));
+    }
+
+    @Override
     public Connector getConnector(final ExternalResource resource) {
         // Try to re-create connector bean from underlying resource (useful for managing failover scenarios)
-        if (!ApplicationContextProvider.getBeanFactory().containsSingleton(getBeanName(resource))) {
+        return readConnector(resource).orElseGet(() -> {
             registerConnector(resource);
-        }
-
-        return ApplicationContextProvider.getBeanFactory().getBean(getBeanName(resource), Connector.class);
+            return (Connector) ApplicationContextProvider.getBeanFactory().getSingleton(getBeanName(resource));
+        });
     }
 
     @Override
@@ -152,14 +160,17 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory, Sy
 
     @Override
     public Connector createConnector(final ConnInstance connInstance) {
-        Connector connector = new ConnectorFacadeProxy(connInstance);
-        ApplicationContextProvider.getBeanFactory().autowireBean(connector);
-
-        return connector;
+        return new ConnectorFacadeProxy(connInstance, asyncFacade);
     }
 
     @Override
     public void registerConnector(final ExternalResource resource) {
+        String beanName = getBeanName(resource);
+
+        if (ApplicationContextProvider.getBeanFactory().containsSingleton(beanName)) {
+            unregisterConnector(beanName);
+        }
+
         ConnInstance connInstance = buildConnInstanceOverride(
                 connInstanceDataBinder.getConnInstanceTO(resource.getConnector()),
                 resource.getConfOverride(),
@@ -167,12 +178,6 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory, Sy
         Connector connector = createConnector(connInstance);
         LOG.debug("Connector to be registered: {}", connector);
 
-        String beanName = getBeanName(resource);
-
-        if (ApplicationContextProvider.getBeanFactory().containsSingleton(beanName)) {
-            unregisterConnector(beanName);
-        }
-
         ApplicationContextProvider.getBeanFactory().registerSingleton(beanName, connector);
         LOG.debug("Successfully registered bean {}", beanName);
     }
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
index 6ae50d2..fb83490 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
@@ -630,6 +630,19 @@ public abstract class AbstractProvisioningJobDelegate<T extends ProvisioningTask
         return report.toString();
     }
 
+    protected Connector getConnector(final T provisioningTask) throws JobExecutionException {
+        Connector connector;
+        try {
+            connector = connFactory.getConnector(provisioningTask.getResource());
+        } catch (Exception e) {
+            String msg = String.format("Connector instance bean for resource %s and connInstance %s not found",
+                    provisioningTask.getResource(), provisioningTask.getResource().getConnector());
+            throw new JobExecutionException(msg, e);
+        }
+
+        return connector;
+    }
+
     @Override
     protected String doExecute(final boolean dryRun, final JobExecutionContext context) throws JobExecutionException {
         try {
@@ -640,14 +653,7 @@ public abstract class AbstractProvisioningJobDelegate<T extends ProvisioningTask
 
             T provisioningTask = clazz.cast(task);
 
-            Connector connector;
-            try {
-                connector = connFactory.getConnector(provisioningTask.getResource());
-            } catch (Exception e) {
-                String msg = String.format("Connector instance bean for resource %s and connInstance %s not found",
-                        provisioningTask.getResource(), provisioningTask.getResource().getConnector());
-                throw new JobExecutionException(msg, e);
-            }
+            Connector connector = getConnector(provisioningTask);
 
             boolean noMapping = true;
             for (Provision provision : provisioningTask.getResource().getProvisions()) {

[syncope] 01/02: Upgrading CXF and bcpkix-jdk15on

Posted by il...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 80e08db1db76e92ca618db985fee7fa650559da0
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Wed Jun 9 15:32:33 2021 +0200

    Upgrading CXF and bcpkix-jdk15on
---
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index 65aa700..fe36aa9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -404,7 +404,7 @@ under the License.
     <connid.scimv11.version>1.0.1</connid.scimv11.version>
     <connid.servicenow.version>1.0.0</connid.servicenow.version>
 
-    <cxf.version>3.3.10</cxf.version>
+    <cxf.version>3.3.11</cxf.version>
 
     <jackson.version>2.11.4</jackson.version>
 
@@ -1777,7 +1777,7 @@ under the License.
       <dependency>
         <groupId>org.bouncycastle</groupId>
         <artifactId>bcpkix-jdk15on</artifactId>
-        <version>1.68</version>
+        <version>1.69</version>
         <scope>test</scope>
       </dependency>
       <dependency>