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/01/12 17:31:53 UTC

[14/52] [abbrv] [partial] syncope git commit: [SYNCOPE-620] Unit tests all in

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/AttributableTransformer.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/AttributableTransformer.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/AttributableTransformer.java
deleted file mode 100644
index b1f39f9..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/AttributableTransformer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import org.apache.syncope.common.lib.mod.AbstractAttributableMod;
-import org.apache.syncope.common.lib.to.AbstractAttributableTO;
-
-/**
- * Provides logic for transforming user or role, received as input by RESTful methods, before any internal
- * processing logic takes place.
- */
-public interface AttributableTransformer {
-
-    <T extends AbstractAttributableTO> T transform(T input);
-
-    <T extends AbstractAttributableMod> T transform(T input);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnIdBundleManager.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnIdBundleManager.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnIdBundleManager.java
deleted file mode 100644
index bf07215..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnIdBundleManager.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.persistence.api.dao.NotFoundException;
-import org.identityconnectors.common.IOUtil;
-import org.identityconnectors.common.security.GuardedString;
-import org.identityconnectors.framework.api.APIConfiguration;
-import org.identityconnectors.framework.api.ConfigurationProperties;
-import org.identityconnectors.framework.api.ConnectorInfo;
-import org.identityconnectors.framework.api.ConnectorInfoManager;
-import org.identityconnectors.framework.api.ConnectorInfoManagerFactory;
-import org.identityconnectors.framework.api.ConnectorKey;
-import org.identityconnectors.framework.api.RemoteFrameworkConnectionInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Manage information about ConnId connector bundles.
- */
-public class ConnIdBundleManager {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ConnIdBundleManager.class);
-
-    private String stringLocations;
-
-    /**
-     * ConnId Locations.
-     */
-    private List<URI> locations;
-
-    /**
-     * ConnectorInfoManager instances.
-     */
-    private final Map<URI, ConnectorInfoManager> connInfoManagers =
-            Collections.synchronizedMap(new LinkedHashMap<URI, ConnectorInfoManager>());
-
-    public void setStringLocations(final String stringLocations) {
-        this.stringLocations = stringLocations;
-    }
-
-    private void init() {
-        if (locations == null) {
-            locations = new ArrayList<>();
-            for (String location : StringUtils.isBlank(stringLocations) ? new String[0] : stringLocations.split(",")) {
-                try {
-                    locations.add(URIUtil.buildForConnId(location));
-                    LOG.info("Valid ConnId location: {}", location.trim());
-                } catch (Exception e) {
-                    LOG.error("Invalid ConnId location: {}", location.trim(), e);
-                }
-            }
-            locations = Collections.unmodifiableList(locations);
-        }
-    }
-
-    private void initLocal(final URI location) {
-        // 1. Find bundles inside local directory
-        File bundleDirectory = new File(location);
-        String[] bundleFiles = bundleDirectory.list();
-        if (bundleFiles == null) {
-            throw new NotFoundException("Local bundles directory " + location);
-        }
-
-        List<URL> bundleFileURLs = new ArrayList<>();
-        for (String file : bundleFiles) {
-            try {
-                bundleFileURLs.add(IOUtil.makeURL(bundleDirectory, file));
-            } catch (IOException ignore) {
-                // ignore exception and don't add bundle
-                LOG.debug("{}/{} is not a valid connector bundle", bundleDirectory.toString(), file, ignore);
-            }
-        }
-
-        if (bundleFileURLs.isEmpty()) {
-            LOG.warn("No connector bundles found in {}", location);
-        }
-        LOG.debug("Configuring local connector server:"
-                + "\n\tFiles: {}", bundleFileURLs);
-
-        // 2. Get connector info manager
-        ConnectorInfoManager manager = ConnectorInfoManagerFactory.getInstance().getLocalManager(
-                bundleFileURLs.toArray(new URL[bundleFileURLs.size()]));
-        if (manager == null) {
-            throw new NotFoundException("Local ConnectorInfoManager");
-        }
-
-        connInfoManagers.put(location, manager);
-    }
-
-    private void initRemote(final URI location) {
-        // 1. Extract conf params for remote connection from given URI
-        final String host = location.getHost();
-        final int port = location.getPort();
-        final GuardedString key = new GuardedString(location.getUserInfo().toCharArray());
-        final boolean useSSL = location.getScheme().equals("connids");
-
-        final List<TrustManager> trustManagers = new ArrayList<>();
-        final String[] params = StringUtils.isBlank(location.getQuery()) ? null : location.getQuery().split("&");
-        if (params != null && params.length > 0) {
-            final String[] trustAllCerts = params[0].split("=");
-            if (trustAllCerts != null && trustAllCerts.length > 1
-                    && "trustAllCerts".equalsIgnoreCase(trustAllCerts[0])
-                    && "true".equalsIgnoreCase(trustAllCerts[1])) {
-
-                trustManagers.add(new X509TrustManager() {
-
-                    @Override
-                    public void checkClientTrusted(final X509Certificate[] chain, final String authType)
-                            throws CertificateException {
-                        // no checks, trust all
-                    }
-
-                    @Override
-                    public void checkServerTrusted(final X509Certificate[] chain, final String authType)
-                            throws CertificateException {
-                        // no checks, trust all
-                    }
-
-                    @Override
-                    public X509Certificate[] getAcceptedIssuers() {
-                        return null;
-                    }
-                });
-            }
-        }
-
-        LOG.debug("Configuring remote connector server:"
-                + "\n\tHost: {}"
-                + "\n\tPort: {}"
-                + "\n\tKey: {}"
-                + "\n\tUseSSL: {}"
-                + "\n\tTrustAllCerts: {}",
-                host, port, key, useSSL, !trustManagers.isEmpty());
-
-        RemoteFrameworkConnectionInfo info =
-                new RemoteFrameworkConnectionInfo(host, port, key, useSSL, trustManagers, 60 * 1000);
-        LOG.debug("Remote connection info: {}", info);
-
-        // 2. Get connector info manager
-        ConnectorInfoManager manager = ConnectorInfoManagerFactory.getInstance().getRemoteManager(info);
-        if (manager == null) {
-            throw new NotFoundException("Remote ConnectorInfoManager");
-        }
-
-        connInfoManagers.put(location, manager);
-    }
-
-    public void resetConnManagers() {
-        connInfoManagers.clear();
-    }
-
-    public Map<URI, ConnectorInfoManager> getConnManagers() {
-        init();
-
-        if (connInfoManagers.isEmpty()) {
-            for (URI location : locations) {
-                try {
-                    if ("file".equals(location.getScheme())) {
-                        LOG.debug("Local initialization: {}", location);
-                        initLocal(location);
-                    } else if (location.getScheme().startsWith("connid")) {
-                        LOG.debug("Remote initialization: {}", location);
-                        initRemote(location);
-                    } else {
-                        LOG.warn("Unsupported scheme: {}", location);
-                    }
-                } catch (Exception e) {
-                    LOG.error("Could not process {}", location, e);
-                }
-            }
-        }
-
-        if (LOG.isDebugEnabled()) {
-            for (Map.Entry<URI, ConnectorInfoManager> entry : connInfoManagers.entrySet()) {
-                LOG.debug("Connector bundles found at {}", entry.getKey());
-                for (ConnectorInfo connInfo : entry.getValue().getConnectorInfos()) {
-                    LOG.debug("\t{}", connInfo.getConnectorDisplayName());
-                }
-            }
-        }
-
-        return connInfoManagers;
-    }
-
-    public ConnectorInfo getConnectorInfo(
-            final String location, final String bundleName, final String bundleVersion, final String connectorName) {
-
-        // check ConnIdLocation
-        URI uriLocation = null;
-        try {
-            uriLocation = URIUtil.buildForConnId(location);
-        } catch (Exception e) {
-            throw new IllegalArgumentException("Invalid ConnId location " + location, e);
-        }
-
-        // create key for search all properties
-        final ConnectorKey key = new ConnectorKey(bundleName, bundleVersion, connectorName);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("\nBundle name: " + key.getBundleName()
-                    + "\nBundle version: " + key.getBundleVersion()
-                    + "\nBundle class: " + key.getConnectorName());
-        }
-
-        // get the specified connector
-        ConnectorInfo info = null;
-        if (getConnManagers().containsKey(uriLocation)) {
-            info = getConnManagers().get(uriLocation).findConnectorInfo(key);
-        }
-        if (info == null) {
-            throw new NotFoundException("Connector Info for location " + location + " and key " + key);
-        }
-
-        return info;
-    }
-
-    public Map<String, List<ConnectorInfo>> getConnectorInfos() {
-        final Map<String, List<ConnectorInfo>> infos = new LinkedHashMap<>();
-        for (Map.Entry<URI, ConnectorInfoManager> entry : connInfoManagers.entrySet()) {
-            infos.put(entry.getKey().toString(), entry.getValue().getConnectorInfos());
-        }
-        return infos;
-    }
-
-    public ConfigurationProperties getConfigurationProperties(final ConnectorInfo info) {
-        if (info == null) {
-            throw new NotFoundException("Invalid: connector info is null");
-        }
-
-        // create default configuration
-        final APIConfiguration apiConfig = info.createDefaultAPIConfiguration();
-        if (apiConfig == null) {
-            throw new NotFoundException("Default API configuration");
-        }
-
-        // retrieve the ConfigurationProperties.
-        final ConfigurationProperties properties = apiConfig.getConfigurationProperties();
-        if (properties == null) {
-            throw new NotFoundException("Configuration properties");
-        }
-
-        if (LOG.isDebugEnabled()) {
-            for (String propName : properties.getPropertyNames()) {
-                LOG.debug("Property Name: {}"
-                        + "\nProperty Type: {}",
-                        properties.getProperty(propName).getName(),
-                        properties.getProperty(propName).getType());
-            }
-        }
-
-        return properties;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnPoolConfUtil.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnPoolConfUtil.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnPoolConfUtil.java
deleted file mode 100644
index 917473e..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnPoolConfUtil.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import org.apache.syncope.common.lib.to.ConnPoolConfTO;
-import org.apache.syncope.persistence.api.entity.ConnPoolConf;
-import org.identityconnectors.common.pooling.ObjectPoolConfiguration;
-
-public final class ConnPoolConfUtil {
-
-    public static ConnPoolConf getConnPoolConf(final ConnPoolConfTO cpcto, final ConnPoolConf cpc) {
-        ObjectPoolConfiguration opc = new ObjectPoolConfiguration();
-
-        cpc.setMaxIdle(cpcto.getMaxIdle() == null ? opc.getMaxIdle() : cpcto.getMaxIdle());
-        cpc.setMaxObjects(cpcto.getMaxObjects() == null ? opc.getMaxObjects() : cpcto.getMaxObjects());
-        cpc.setMaxWait(cpcto.getMaxWait() == null ? opc.getMaxWait() : cpcto.getMaxWait());
-        cpc.setMinEvictableIdleTimeMillis(cpcto.getMinEvictableIdleTimeMillis() == null
-                ? opc.getMinEvictableIdleTimeMillis() : cpcto.getMinEvictableIdleTimeMillis());
-        cpc.setMinIdle(cpcto.getMinIdle() == null ? opc.getMinIdle() : cpcto.getMinIdle());
-
-        return cpc;
-    }
-
-    public static ObjectPoolConfiguration getObjectPoolConfiguration(final ConnPoolConf cpc) {
-        ObjectPoolConfiguration opc = new ObjectPoolConfiguration();
-        updateObjectPoolConfiguration(opc, cpc);
-        return opc;
-    }
-
-    public static void updateObjectPoolConfiguration(
-            final ObjectPoolConfiguration opc, final ConnPoolConf cpc) {
-
-        if (cpc.getMaxIdle() != null) {
-            opc.setMaxIdle(cpc.getMaxIdle());
-        }
-        if (cpc.getMaxObjects() != null) {
-            opc.setMaxObjects(cpc.getMaxObjects());
-        }
-        if (cpc.getMaxWait() != null) {
-            opc.setMaxWait(cpc.getMaxWait());
-        }
-        if (cpc.getMinEvictableIdleTimeMillis() != null) {
-            opc.setMinEvictableIdleTimeMillis(cpc.getMinEvictableIdleTimeMillis());
-        }
-        if (cpc.getMinIdle() != null) {
-            opc.setMinIdle(cpc.getMinIdle());
-        }
-    }
-
-    private ConnPoolConfUtil() {
-        // empty constructor for static utility class
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/Connector.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/Connector.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/Connector.java
deleted file mode 100644
index de4b472..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/Connector.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import org.apache.syncope.common.lib.types.PropagationMode;
-import org.apache.syncope.common.lib.types.ResourceOperation;
-import org.apache.syncope.persistence.api.entity.ConnInstance;
-import org.apache.syncope.persistence.api.entity.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.OperationOptions;
-import org.identityconnectors.framework.common.objects.SyncResultsHandler;
-import org.identityconnectors.framework.common.objects.SyncToken;
-import org.identityconnectors.framework.common.objects.Uid;
-import org.identityconnectors.framework.common.objects.filter.Filter;
-
-/**
- * Entry point for making requests on underlying connector bundles.
- */
-public interface Connector {
-
-    /**
-     * Authenticate user on a connector instance.
-     *
-     * @param username the name based credential for authentication
-     * @param password the password based credential for authentication
-     * @param options ConnId's OperationOptions
-     * @return Uid of the account that was used to authenticate
-     */
-    Uid authenticate(String username, String password, OperationOptions options);
-
-    /**
-     * Create user / role on a connector instance.
-     *
-     * @param propagationMode propagation mode
-     * @param objectClass ConnId's object class
-     * @param attrs attributes for creation
-     * @param options ConnId's OperationOptions
-     * @param propagationAttempted if creation is actually performed (based on connector instance's capabilities)
-     * @return Uid for created object
-     */
-    Uid create(PropagationMode propagationMode, ObjectClass objectClass,
-            Set<Attribute> attrs, OperationOptions options,
-            Set<String> propagationAttempted);
-
-    /**
-     * Update user / role on a connector instance.
-     *
-     * @param propagationMode propagation mode
-     * @param objectClass ConnId's object class
-     * @param uid user to be updated
-     * @param attrs attributes for update
-     * @param options ConnId's OperationOptions
-     * @param propagationAttempted if update is actually performed (based on connector instance's capabilities)
-     * @return Uid for updated object
-     */
-    Uid update(PropagationMode propagationMode, ObjectClass objectClass,
-            Uid uid, Set<Attribute> attrs, OperationOptions options,
-            Set<String> propagationAttempted);
-
-    /**
-     * Delete user / role on a connector instance.
-     *
-     * @param propagationMode propagation mode
-     * @param objectClass ConnId's object class
-     * @param uid user to be deleted
-     * @param options ConnId's OperationOptions
-     * @param propagationAttempted if deletion is actually performed (based on connector instance's capabilities)
-     */
-    void delete(PropagationMode propagationMode, ObjectClass objectClass,
-            Uid uid, OperationOptions options, Set<String> propagationAttempted);
-
-    /**
-     * Sync users / roles from a connector instance.
-     *
-     * @param objectClass ConnId's object class
-     * @param token to be passed to the underlying connector
-     * @param handler to be used to handle deltas
-     * @param options ConnId's OperationOptions
-     */
-    void sync(ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options);
-
-    /**
-     * Read latest sync token from a connector instance.
-     *
-     * @param objectClass ConnId's object class.
-     * @return latest sync token
-     */
-    SyncToken getLatestSyncToken(ObjectClass objectClass);
-
-    /**
-     * Get remote object.
-     *
-     * @param objectClass ConnId's object class
-     * @param uid ConnId's Uid
-     * @param options ConnId's OperationOptions
-     * @return ConnId's connector object for given uid
-     */
-    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).
-     *
-     * @param propagationMode propagation mode
-     * @param operationType resource operation type
-     * @param objectClass ConnId's object class
-     * @param uid ConnId's Uid
-     * @param options ConnId's OperationOptions
-     * @return ConnId's connector object for given uid
-     */
-    ConnectorObject getObject(PropagationMode propagationMode, ResourceOperation operationType, ObjectClass objectClass,
-            Uid uid, OperationOptions options);
-
-    /**
-     * Search for remote objects.
-     *
-     * @param objectClass ConnId's object class
-     * @param filter search filter
-     * @param options ConnId's OperationOptions
-     * @return ConnId's connector objects matching the given filter
-     */
-    List<ConnectorObject> search(ObjectClass objectClass, Filter filter, 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).
-     *
-     * @param objectClass ConnId's object class.
-     * @param handler to be used to handle deltas.
-     * @param options ConnId's OperationOptions.
-     */
-    void getAllObjects(ObjectClass objectClass, SyncResultsHandler handler, OperationOptions options);
-
-    /**
-     * Read attribute for a given connector object.
-     *
-     * @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)
-     */
-    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();
-
-    /**
-     * Validate a connector instance.
-     */
-    void validate();
-
-    /**
-     * Check connection to resource.
-     */
-    void test();
-
-    /**
-     * Getter for active connector instance.
-     *
-     * @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(Collection<MappingItem> mapItems);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorFactory.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorFactory.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorFactory.java
deleted file mode 100644
index e68975c..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.util.Set;
-import org.apache.syncope.common.lib.types.ConnConfProperty;
-import org.apache.syncope.persistence.api.entity.ConnInstance;
-import org.apache.syncope.persistence.api.entity.ExternalResource;
-
-/**
- * Entry point for creating and destroying connectors for external resources.
- *
- * @see org.apache.syncope.core.propagation.Connector
- */
-public interface ConnectorFactory {
-
-    /**
-     * Create connector from given connector instance and configuration properties.
-     *
-     * @param connInstance connector instance
-     * @param configuration configuration properties
-     * @return connector
-     */
-    Connector createConnector(ConnInstance connInstance, Set<ConnConfProperty> configuration);
-
-    /**
-     * Get existing connector for the given resource.
-     *
-     * @param resource the resource.
-     * @return live connector bran for given resource
-     */
-    Connector getConnector(ExternalResource resource);
-
-    /**
-     * Load connectors for all existing resources.
-     *
-     * @see ExternalResource
-     */
-    void load();
-
-    /**
-     * Unload connectors for all existing resources.
-     *
-     * @see ExternalResource
-     */
-    void unload();
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorRegistry.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorRegistry.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorRegistry.java
deleted file mode 100644
index aa1d1c0..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ConnectorRegistry.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import org.apache.syncope.persistence.api.entity.ExternalResource;
-
-/**
- * Manage Spring beans lifecycle for connectors.
- */
-public interface ConnectorRegistry {
-
-    /**
-     * Create and register into Spring context a bean for the given resource.
-     *
-     * @param resource external resource
-     */
-    void registerConnector(ExternalResource resource);
-
-    /**
-     * Removes the Spring bean for the given id from the context.
-     *
-     * @param id Spring bean id
-     */
-    void unregisterConnector(String id);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ProvisioningManager.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ProvisioningManager.java
deleted file mode 100644
index 66f5e73..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/ProvisioningManager.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import org.apache.syncope.common.lib.mod.AbstractAttributableMod;
-import org.apache.syncope.common.lib.to.AbstractAttributableTO;
-import org.apache.syncope.common.lib.to.PropagationStatus;
-
-public interface ProvisioningManager<T extends AbstractAttributableTO, M extends AbstractAttributableMod> {
-
-    Map.Entry<Long, List<PropagationStatus>> create(T subject);
-
-    Map.Entry<Long, List<PropagationStatus>> update(M subjectMod);
-
-    List<PropagationStatus> delete(Long subjectId);
-
-    Long unlink(M subjectMod);
-
-    Long link(M subjectMod);
-
-    List<PropagationStatus> deprovision(Long user, Collection<String> resources);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/RoleProvisioningManager.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/RoleProvisioningManager.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/RoleProvisioningManager.java
deleted file mode 100644
index 822981b..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/RoleProvisioningManager.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.apache.syncope.common.lib.mod.RoleMod;
-import org.apache.syncope.common.lib.to.PropagationStatus;
-import org.apache.syncope.common.lib.to.RoleTO;
-
-public interface RoleProvisioningManager extends ProvisioningManager<RoleTO, RoleMod> {
-
-    Map.Entry<Long, List<PropagationStatus>> create(RoleTO roleTO, Set<String> excludedResources);
-
-    Map.Entry<Long, List<PropagationStatus>> create(
-            RoleTO roleTO, Map<Long, String> roleOwnerMap, Set<String> excludedResources);
-
-    Map.Entry<Long, List<PropagationStatus>> update(RoleMod subjectMod, Set<String> excludedResources);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/URIUtil.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/URIUtil.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/URIUtil.java
deleted file mode 100644
index f8fd111..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/URIUtil.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-public final class URIUtil {
-
-    private URIUtil() {
-        // empty constructor for static utility class
-    }
-
-    /**
-     * Build a valid URI out of the given location.
-     * Only "file", "connid" and "connids" schemes are allowed.
-     * For "file", invalid characters are handled via intermediate transformation into URL.
-     *
-     * @param location the candidate location for URI
-     * @return valid URI for the given location
-     * @throws MalformedURLException if the intermediate URL is not valid
-     * @throws URISyntaxException if the given location does not correspond to a valid URI
-     */
-    public static URI buildForConnId(final String location) throws MalformedURLException, URISyntaxException {
-        final String candidate = location.trim();
-
-        if (!candidate.startsWith("file:")
-                && !candidate.startsWith("connid:") && !candidate.startsWith("connids:")) {
-
-            throw new IllegalArgumentException(candidate + " is not a valid URI for file or connid(s) schemes");
-        }
-
-        URI uri;
-        if (candidate.startsWith("file:")) {
-            uri = new File(new URL(candidate).getFile()).getAbsoluteFile().toURI();
-        } else {
-            uri = new URI(candidate);
-        }
-
-        return uri;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/UserProvisioningManager.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/UserProvisioningManager.java
deleted file mode 100644
index b686127..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/UserProvisioningManager.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.apache.syncope.common.lib.mod.StatusMod;
-import org.apache.syncope.common.lib.mod.UserMod;
-import org.apache.syncope.common.lib.to.PropagationStatus;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.persistence.api.entity.user.User;
-import org.apache.syncope.provisioning.api.sync.SyncResult;
-
-public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserMod> {
-
-    Map.Entry<Long, List<PropagationStatus>> activate(User user, StatusMod statusMod);
-
-    Map.Entry<Long, List<PropagationStatus>> reactivate(User user, StatusMod statusMod);
-
-    Map.Entry<Long, List<PropagationStatus>> suspend(User user, StatusMod statusMod);
-
-    void innerSuspend(User user, boolean propagate);
-
-    Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword);
-
-    Map.Entry<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword,
-            boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources);
-
-    Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, boolean removeMemberships);
-
-    Map.Entry<Long, List<PropagationStatus>> update(UserMod userMod, Long key,
-            SyncResult result, Boolean enabled, Set<String> excludedResources);
-
-    List<PropagationStatus> delete(Long subjectKey, Set<String> excludedResources);
-
-    void requestPasswordReset(Long key);
-
-    void confirmPasswordReset(User user, String token, String password);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/WorkflowResult.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/WorkflowResult.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/WorkflowResult.java
deleted file mode 100644
index bb80219..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/WorkflowResult.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api;
-
-import java.util.Collections;
-import java.util.Set;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.syncope.provisioning.api.propagation.PropagationByResource;
-
-public class WorkflowResult<T> {
-
-    private T result;
-
-    private PropagationByResource propByRes;
-
-    private Set<String> performedTasks;
-
-    public WorkflowResult(final T result, final PropagationByResource propByRes, final String performedTask) {
-        this.result = result;
-        this.propByRes = propByRes;
-        this.performedTasks = Collections.singleton(performedTask);
-    }
-
-    public WorkflowResult(final T result, final PropagationByResource propByRes, final Set<String> performedTasks) {
-        this.result = result;
-        this.propByRes = propByRes;
-        this.performedTasks = performedTasks;
-    }
-
-    public T getResult() {
-        return result;
-    }
-
-    public void setResult(final T result) {
-        this.result = result;
-    }
-
-    public Set<String> getPerformedTasks() {
-        return performedTasks;
-    }
-
-    public void setPerformedTasks(final Set<String> performedTasks) {
-        this.performedTasks = performedTasks;
-    }
-
-    public PropagationByResource getPropByRes() {
-        return propByRes;
-    }
-
-    public void setPropByRes(final PropagationByResource propByRes) {
-        this.propByRes = propByRes;
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        return EqualsBuilder.reflectionEquals(this, obj);
-    }
-
-    @Override
-    public int hashCode() {
-        return HashCodeBuilder.reflectionHashCode(this);
-    }
-
-    @Override
-    public String toString() {
-        return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCache.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCache.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCache.java
deleted file mode 100644
index c4936a5..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCache.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.cache;
-
-import org.apache.syncope.common.lib.types.AttributableType;
-
-/**
- * Virtual Attribute Value cache.
- */
-public interface VirAttrCache {
-
-    /**
-     * Force entry expiring.
-     *
-     * @param type user or role
-     * @param id user or role id
-     * @param schemaName virtual attribute schema name
-     */
-    void expire(AttributableType type, Long id, String schemaName);
-
-    /**
-     * Retrieve cached value. Return null in case of virtual attribute not cached.
-     *
-     * @param type user or role
-     * @param id user or role id
-     * @param schemaName virtual attribute schema name.
-     * @return cached values or null if virtual attribute is not cached.
-     */
-    VirAttrCacheValue get(AttributableType type, Long id, String schemaName);
-
-    /**
-     * Cache entry is valid if and only if value exist and it is not expired.
-     *
-     * @param value cache entry value.
-     * @return TRUE if the value is valid; FALSE otherwise.
-     */
-    boolean isValidEntry(VirAttrCacheValue value);
-
-    /**
-     * Cache virtual attribute values.
-     *
-     * @param type user or role
-     * @param id user or role id
-     * @param schemaName virtual attribute name
-     * @param value virtual attribute values
-     */
-    void put(AttributableType type, Long id, String schemaName, VirAttrCacheValue value);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheKey.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheKey.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheKey.java
deleted file mode 100644
index bdc60db..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheKey.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.cache;
-
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.syncope.common.lib.types.AttributableType;
-
-/**
- * Cache entry key.
- */
-public class VirAttrCacheKey {
-
-    /**
-     * Subject type.
-     */
-    private final AttributableType type;
-
-    /**
-     * Subject ID.
-     */
-    private final transient Long id;
-
-    /**
-     * Virtual attribute schema name.
-     */
-    private final transient String virSchema;
-
-    public VirAttrCacheKey(final AttributableType type, final Long id, final String virSchema) {
-        this.type = type;
-        this.id = id;
-        this.virSchema = virSchema;
-    }
-
-    public AttributableType getType() {
-        return type;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getVirSchema() {
-        return virSchema;
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        return EqualsBuilder.reflectionEquals(this, obj, true);
-    }
-
-    @Override
-    public int hashCode() {
-        return HashCodeBuilder.reflectionHashCode(this, true);
-    }
-
-    @Override
-    public String toString() {
-        return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE, true);
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheValue.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheValue.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheValue.java
deleted file mode 100644
index 1ca9965..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/cache/VirAttrCacheValue.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.cache;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Cache entry value.
- */
-public class VirAttrCacheValue {
-
-    /**
-     * Virtual attribute values.
-     */
-    private final Map<String, Set<String>> values;
-
-    /**
-     * Entry creation date.
-     */
-    private Date creationDate;
-
-    /**
-     * Entry access date.
-     */
-    private Date lastAccessDate;
-
-    public VirAttrCacheValue() {
-        this.creationDate = new Date();
-        this.lastAccessDate = new Date();
-        values = new HashMap<>();
-    }
-
-    public void setResourceValues(final String resourceName, final Set<String> values) {
-        this.values.put(resourceName, values);
-    }
-
-    public Date getCreationDate() {
-        return creationDate;
-    }
-
-    public void forceExpiring() {
-        creationDate = new Date(0);
-    }
-
-    public Set<String> getValues(final String resourceName) {
-        return values.get(resourceName);
-    }
-
-    public Set<String> getValues() {
-        final Set<String> res = new HashSet<>();
-
-        for (Set<String> value : values.values()) {
-            res.addAll(value);
-        }
-
-        return res;
-    }
-
-    public Date getLastAccessDate() {
-        return lastAccessDate;
-    }
-
-    void setLastAccessDate(final Date lastAccessDate) {
-        this.lastAccessDate = lastAccessDate;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/ProvisioningJob.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/ProvisioningJob.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/ProvisioningJob.java
deleted file mode 100644
index 68e8dae..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/ProvisioningJob.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.job;
-
-import java.util.List;
-import org.apache.syncope.persistence.api.entity.task.ProvisioningTask;
-import org.apache.syncope.provisioning.api.sync.ProvisioningActions;
-
-public interface ProvisioningJob<T extends ProvisioningTask, A extends ProvisioningActions> extends TaskJob {
-
-    void setActions(List<A> actions);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/PushJob.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/PushJob.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/PushJob.java
deleted file mode 100644
index 016623c..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/PushJob.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.job;
-
-import org.apache.syncope.persistence.api.entity.task.PushTask;
-import org.apache.syncope.provisioning.api.sync.PushActions;
-
-public interface PushJob extends ProvisioningJob<PushTask, PushActions> {
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/SyncJob.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/SyncJob.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/SyncJob.java
deleted file mode 100644
index fa74c8f..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/SyncJob.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.job;
-
-import org.apache.syncope.persistence.api.entity.task.SyncTask;
-import org.apache.syncope.provisioning.api.sync.SyncActions;
-
-public interface SyncJob extends ProvisioningJob<SyncTask, SyncActions> {
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/TaskJob.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/TaskJob.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/TaskJob.java
deleted file mode 100644
index 94f906e..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/job/TaskJob.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.job;
-
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.Job;
-
-/**
- * Interface for Quartz jobs bound to a given Task.
- */
-@DisallowConcurrentExecution
-public interface TaskJob extends Job {
-
-    public static final String DRY_RUN_JOBDETAIL_KEY = "dryRun";
-
-    /**
-     * Task execution status.
-     */
-    public enum Status {
-
-        SUCCESS,
-        FAILURE
-
-    }
-
-    void setTaskId(Long taskId);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationActions.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationActions.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationActions.java
deleted file mode 100644
index d23843e..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationActions.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.propagation;
-
-import org.apache.syncope.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.persistence.api.entity.task.TaskExec;
-import org.identityconnectors.framework.common.objects.ConnectorObject;
-
-public interface PropagationActions {
-
-    void before(PropagationTask task, ConnectorObject beforeObj);
-
-    void after(PropagationTask task, TaskExec execution, ConnectorObject afterObj);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationByResource.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationByResource.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationByResource.java
deleted file mode 100644
index e43443e..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationByResource.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.propagation;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import org.apache.syncope.common.lib.types.ResourceOperation;
-
-/**
- * Utility class for encapsulating operations to be performed on various resources.
- */
-public class PropagationByResource implements Serializable {
-
-    private static final long serialVersionUID = -5699740428104336636L;
-
-    /**
-     * Resources for creation.
-     */
-    private final Set<String> toBeCreated;
-
-    /**
-     * Resources for update.
-     */
-    private final Set<String> toBeUpdated;
-
-    /**
-     * Resources for deletion.
-     */
-    private final Set<String> toBeDeleted;
-
-    /**
-     * Mapping target resource names to old account ids (when applicable).
-     */
-    private final Map<String, String> oldAccountIds;
-
-    /**
-     * Default constructor.
-     */
-    public PropagationByResource() {
-        toBeCreated = new HashSet<String>();
-        toBeUpdated = new HashSet<String>();
-        toBeDeleted = new HashSet<String>();
-
-        oldAccountIds = new HashMap<String, String>();
-    }
-
-    /**
-     * Avoid potential conflicts by not doing create or update on any resource for which a delete is requested, and by
-     * not doing any create on any resource for which an update is requested.
-     */
-    public final void purge() {
-        toBeCreated.removeAll(toBeDeleted);
-        toBeCreated.removeAll(toBeUpdated);
-
-        toBeUpdated.removeAll(toBeDeleted);
-    }
-
-    /**
-     * Add an element.
-     *
-     * @param type resource operation type
-     * @param resourceName target resource
-     * @return whether the operation was successful or not
-     */
-    public final boolean add(final ResourceOperation type, final String resourceName) {
-        Set<String> set;
-        switch (type) {
-            case CREATE:
-                set = toBeCreated;
-                break;
-
-            case UPDATE:
-                set = toBeUpdated;
-                break;
-
-            case DELETE:
-            default:
-                set = toBeDeleted;
-                break;
-        }
-
-        return set.add(resourceName);
-    }
-
-    /**
-     * Add some elements.
-     *
-     * @param type resource operation type
-     * @param resourceNames target resources
-     * @return whether the operation was successful or not
-     */
-    public boolean addAll(final ResourceOperation type, final Collection<String> resourceNames) {
-        Set<String> set;
-        switch (type) {
-            case CREATE:
-                set = toBeCreated;
-                break;
-
-            case UPDATE:
-                set = toBeUpdated;
-                break;
-
-            case DELETE:
-            default:
-                set = toBeDeleted;
-                break;
-        }
-
-        return set.addAll(resourceNames);
-    }
-
-    /**
-     * Remove an element.
-     *
-     * @param type resource operation type
-     * @param resourceName target resource
-     * @return whether the operation was successful or not
-     */
-    public final boolean remove(final ResourceOperation type, final String resourceName) {
-        boolean result = false;
-
-        switch (type) {
-            case CREATE:
-                result = toBeCreated.remove(resourceName);
-                break;
-
-            case UPDATE:
-                result = toBeUpdated.remove(resourceName);
-                break;
-
-            case DELETE:
-                result = toBeDeleted.remove(resourceName);
-                break;
-
-            default:
-        }
-
-        return result;
-    }
-
-    /**
-     * Remove some elements.
-     *
-     * @param type resource operation type
-     * @param resourceNames target resources
-     * @return whether the operation was successful or not
-     */
-    public boolean removeAll(final ResourceOperation type, final Set<String> resourceNames) {
-        Set<String> set;
-        switch (type) {
-            case CREATE:
-                set = toBeCreated;
-                break;
-
-            case UPDATE:
-                set = toBeUpdated;
-                break;
-
-            case DELETE:
-            default:
-                set = toBeDeleted;
-                break;
-        }
-
-        return set.removeAll(resourceNames);
-    }
-
-    /**
-     * Removes only the resource names in the underlying resource name sets that are contained in the specified
-     * collection.
-     *
-     * @param resourceNames collection containing resource names to be retained in the underlying resource name sets
-     * @return <tt>true</tt> if the underlying resource name sets changed as a result of the call
-     * @see Collection#removeAll(java.util.Collection)
-     */
-    public boolean removeAll(final Collection<String> resourceNames) {
-        return toBeCreated.removeAll(resourceNames)
-                | toBeUpdated.removeAll(resourceNames)
-                | toBeDeleted.removeAll(resourceNames);
-    }
-
-    /**
-     * Retains only the resource names in the underlying resource name sets that are contained in the specified
-     * collection.
-     *
-     * @param resourceNames collection containing resource names to be retained in the underlying resource name sets
-     * @return <tt>true</tt> if the underlying resource name sets changed as a result of the call
-     * @see Collection#retainAll(java.util.Collection)
-     */
-    public boolean retainAll(final Collection<String> resourceNames) {
-        return toBeCreated.retainAll(resourceNames)
-                | toBeUpdated.retainAll(resourceNames)
-                | toBeDeleted.retainAll(resourceNames);
-    }
-
-    public boolean contains(final ResourceOperation type, final String resourceName) {
-        boolean result = false;
-
-        switch (type) {
-            case CREATE:
-                result = toBeCreated.contains(resourceName);
-                break;
-
-            case UPDATE:
-                result = toBeUpdated.contains(resourceName);
-                break;
-
-            case DELETE:
-                result = toBeDeleted.contains(resourceName);
-                break;
-
-            default:
-        }
-
-        return result;
-    }
-
-    /**
-     * Get resources for a given resource operation type.
-     *
-     * @param type resource operation type
-     * @return resource matching the given type
-     */
-    public final Set<String> get(final ResourceOperation type) {
-        Set<String> result = Collections.<String>emptySet();
-
-        switch (type) {
-            case CREATE:
-                result = toBeCreated;
-                break;
-
-            case UPDATE:
-                result = toBeUpdated;
-                break;
-
-            case DELETE:
-                result = toBeDeleted;
-                break;
-
-            default:
-        }
-
-        return result;
-    }
-
-    /**
-     * Set resources for a given resource operation type.
-     *
-     * @param type resource operation type
-     * @param resourceNames to be set
-     */
-    public final void set(final ResourceOperation type, final Set<String> resourceNames) {
-
-        switch (type) {
-            case CREATE:
-                toBeCreated.clear();
-                toBeCreated.addAll(resourceNames);
-                break;
-
-            case UPDATE:
-                toBeUpdated.clear();
-                toBeUpdated.addAll(resourceNames);
-                break;
-
-            case DELETE:
-                toBeDeleted.clear();
-                toBeDeleted.addAll(resourceNames);
-                break;
-
-            default:
-        }
-    }
-
-    /**
-     * Merge another resource operation instance into this instance.
-     *
-     * @param propByRes to be merged
-     */
-    public final void merge(final PropagationByResource propByRes) {
-        if (propByRes != null) {
-            toBeCreated.addAll(propByRes.get(ResourceOperation.CREATE));
-            toBeUpdated.addAll(propByRes.get(ResourceOperation.UPDATE));
-            toBeDeleted.addAll(propByRes.get(ResourceOperation.DELETE));
-            oldAccountIds.putAll(propByRes.getOldAccountIds());
-        }
-    }
-
-    /**
-     * Removes all of the operations.
-     */
-    public void clear() {
-        toBeCreated.clear();
-        toBeUpdated.clear();
-        toBeDeleted.clear();
-    }
-
-    /**
-     * Whether no operations are present.
-     *
-     * @return true if no operations (create / update / delete) and no old account ids are present
-     */
-    public final boolean isEmpty() {
-        return toBeCreated.isEmpty() && toBeUpdated.isEmpty() && toBeDeleted.isEmpty() && oldAccountIds.isEmpty();
-    }
-
-    /**
-     * Fetch all old account ids.
-     *
-     * @return old account ids; can be empty
-     */
-    public Map<String, String> getOldAccountIds() {
-        return oldAccountIds;
-    }
-
-    /**
-     * Fetch old account id for given resource name.
-     *
-     * @param resourceName resource name
-     * @return old account id; can be null
-     */
-    public String getOldAccountId(final String resourceName) {
-        return oldAccountIds.get(resourceName);
-    }
-
-    /**
-     * Add old account id for a given resource name.
-     *
-     * @param resourceName resourceName resource name
-     * @param oldAccountId old account id
-     */
-    public void addOldAccountId(final String resourceName, final String oldAccountId) {
-        if (resourceName != null && oldAccountId != null) {
-            oldAccountIds.put(resourceName, oldAccountId);
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "To be Created: " + toBeCreated + ";\n"
-                + "To be Updated: " + toBeUpdated + ";\n"
-                + "To be Deleted: " + toBeDeleted + ";\n"
-                + "Old account Ids: " + oldAccountIds;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/235f60fa/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationException.java
----------------------------------------------------------------------
diff --git a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationException.java b/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationException.java
deleted file mode 100644
index ff25634..0000000
--- a/syncope620/server/provisioning-api/src/main/java/org/apache/syncope/provisioning/api/propagation/PropagationException.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.provisioning.api.propagation;
-
-/**
- * Bear stacktrace received during propagation towards a certain resource.
- */
-public class PropagationException extends RuntimeException {
-
-    private static final long serialVersionUID = -4828426289616526116L;
-
-    /**
-     * The resource involved in this exception.
-     */
-    private final String resourceName;
-
-    /**
-     * Create a new instance based on resource name and original stacktrace received during propagation.
-     *
-     * @param resourceName name of resource involved in this exception
-     * @param stackTrace original stacktrace
-     */
-    public PropagationException(final String resourceName, final String stackTrace) {
-        super("Exception during provision on resource " + resourceName + "\n" + stackTrace);
-
-        this.resourceName = resourceName;
-    }
-
-    /**
-     * @return name of resource involved in this exception
-     */
-    public String getResourceName() {
-        return resourceName;
-    }
-}