http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java index 2cc6476..39dbba9 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java @@ -28,6 +28,7 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; +import org.apache.syncope.common.lib.patch.ResourceDeassociationPatch; import org.apache.syncope.common.lib.to.AnyTO; import org.apache.syncope.common.lib.to.BulkAction; import org.apache.syncope.common.lib.to.BulkActionResult; @@ -35,8 +36,6 @@ import org.apache.syncope.common.lib.to.ConnObjectTO; import org.apache.syncope.common.lib.to.PagedConnObjectTOResult; import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.syncope.common.lib.types.AnyTypeKind; -import org.apache.syncope.common.lib.types.ResourceDeassociationAction; -import org.apache.syncope.common.lib.wrap.AnyKey; import org.apache.syncope.common.rest.api.RESTHeaders; import org.apache.syncope.common.rest.api.beans.ConnObjectTOListQuery; import org.apache.syncope.common.rest.api.service.ResourceService; @@ -134,41 +133,39 @@ public class ResourceServiceImpl extends AbstractServiceImpl implements Resource } @Override - public BulkActionResult bulkDeassociation( - final String key, final String anyTypeKey, final ResourceDeassociationAction type, - final List<AnyKey> keys) { - - AbstractResourceAssociator<? extends AnyTO> associator = anyTypeKey.equalsIgnoreCase(AnyTypeKind.USER.name()) - ? userLogic - : anyTypeKey.equalsIgnoreCase(AnyTypeKind.GROUP.name()) - ? groupLogic - : anyObjectLogic; + public BulkActionResult bulkDeassociation(final ResourceDeassociationPatch patch) { + AbstractResourceAssociator<? extends AnyTO> associator = + patch.getAnyTypeKey().equalsIgnoreCase(AnyTypeKind.USER.name()) + ? userLogic + : patch.getAnyTypeKey().equalsIgnoreCase(AnyTypeKind.GROUP.name()) + ? groupLogic + : anyObjectLogic; BulkActionResult result = new BulkActionResult(); - for (AnyKey anyKey : keys) { - Set<String> resources = Collections.singleton(key); + for (Long anyKey : patch.getAnyKyes()) { + Set<String> resources = Collections.singleton(patch.getKey()); try { - switch (type) { + switch (patch.getAction()) { case DEPROVISION: - associator.deprovision(anyKey.getElement(), resources); + associator.deprovision(anyKey, resources); break; case UNASSIGN: - associator.unassign(anyKey.getElement(), resources); + associator.unassign(anyKey, resources); break; case UNLINK: - associator.unlink(anyKey.getElement(), resources); + associator.unlink(anyKey, resources); break; default: } - result.getResults().put(String.valueOf(anyKey.getElement()), BulkActionResult.Status.SUCCESS); + result.getResults().put(String.valueOf(anyKey), BulkActionResult.Status.SUCCESS); } catch (Exception e) { - LOG.warn("While executing {} on {} {}", type, anyTypeKey, anyKey.getElement(), e); - result.getResults().put(String.valueOf(anyKey.getElement()), BulkActionResult.Status.FAILURE); + LOG.warn("While executing {} on {} {}", patch.getAction(), patch.getAnyTypeKey(), anyKey, e); + result.getResults().put(String.valueOf(anyKey), BulkActionResult.Status.FAILURE); } }
http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractITCase.java index b30c962..60565e1 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AbstractITCase.java @@ -399,7 +399,7 @@ public abstract class AbstractITCase { throws NamingException { ResourceTO ldapRes = resourceService.read(RESOURCE_NAME_LDAP); final Map<String, ConnConfProperty> ldapConnConf = - connectorService.read(ldapRes.getConnector(), Locale.ENGLISH.getLanguage()).getConfigurationMap(); + connectorService.read(ldapRes.getConnector(), Locale.ENGLISH.getLanguage()).getConfMap(); Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java index 71859a7..770a7cb 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java @@ -28,6 +28,7 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Collection; import java.util.EnumSet; import java.util.HashSet; import java.util.Iterator; @@ -37,16 +38,18 @@ import java.util.Map; import java.util.Properties; import java.util.Set; import javax.ws.rs.core.Response; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Transformer; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.BulkAction; import org.apache.syncope.common.lib.to.ConnBundleTO; +import org.apache.syncope.common.lib.to.ConnIdObjectClassTO; import org.apache.syncope.common.lib.to.ConnInstanceTO; import org.apache.syncope.common.lib.to.ConnPoolConfTO; import org.apache.syncope.common.lib.to.MappingItemTO; import org.apache.syncope.common.lib.to.MappingTO; -import org.apache.syncope.common.lib.to.PlainSchemaTO; import org.apache.syncope.common.lib.to.ProvisionTO; import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -54,7 +57,6 @@ import org.apache.syncope.common.lib.types.ConnConfPropSchema; import org.apache.syncope.common.lib.types.ConnConfProperty; import org.apache.syncope.common.lib.types.ConnectorCapability; import org.apache.syncope.common.lib.types.IntMappingType; -import org.apache.syncope.common.lib.wrap.ConnIdObjectClass; import org.apache.syncope.common.rest.api.service.ConnectorService; import org.apache.syncope.common.rest.api.service.ResourceService; import org.identityconnectors.common.security.GuardedString; @@ -146,7 +148,7 @@ public class ConnectorITCase extends AbstractITCase { conf.add(servicename); // set connector configuration - connectorTO.getConfiguration().addAll(conf); + connectorTO.getConf().addAll(conf); // set connector capabilities connectorTO.getCapabilities().add(ConnectorCapability.CREATE); @@ -253,7 +255,7 @@ public class ConnectorITCase extends AbstractITCase { conf.add(servicename); // set connector configuration - connectorTO.getConfiguration().addAll(conf); + connectorTO.getConf().addAll(conf); connectorService.update(connectorTO); ConnInstanceTO actual = connectorService.read(connectorTO.getKey(), Locale.ENGLISH.getLanguage()); @@ -397,7 +399,7 @@ public class ConnectorITCase extends AbstractITCase { @Test public void getConnectorConfiguration() { - Set<ConnConfProperty> props = connectorService.read(104L, Locale.ENGLISH.getLanguage()).getConfiguration(); + Set<ConnConfProperty> props = connectorService.read(104L, Locale.ENGLISH.getLanguage()).getConf(); assertNotNull(props); assertFalse(props.isEmpty()); } @@ -408,7 +410,7 @@ public class ConnectorITCase extends AbstractITCase { boolean check = false; - for (ConnConfProperty prop : connInstanceTO.getConfiguration()) { + for (ConnConfProperty prop : connInstanceTO.getConf()) { if ("receiveTimeout".equals(prop.getSchema().getName())) { check = true; } @@ -424,7 +426,7 @@ public class ConnectorITCase extends AbstractITCase { Map<String, ConnConfProperty> instanceConfMap; for (ConnInstanceTO instance : connectorInstanceTOs) { if ("net.tirasa.connid.bundles.db.table".equals(instance.getBundleName())) { - instanceConfMap = instance.getConfigurationMap(); + instanceConfMap = instance.getConfMap(); assertEquals("Utente", instanceConfMap.get("user").getSchema().getDisplayName()); } } @@ -434,7 +436,7 @@ public class ConnectorITCase extends AbstractITCase { for (ConnInstanceTO instance : connectorInstanceTOs) { if ("net.tirasa.connid.bundles.db.table".equals(instance.getBundleName())) { - instanceConfMap = instance.getConfigurationMap(); + instanceConfMap = instance.getConfMap(); assertEquals("User", instanceConfMap.get("user").getSchema().getDisplayName()); } } @@ -516,7 +518,7 @@ public class ConnectorITCase extends AbstractITCase { conf.add(passwordColumn); // set connector configuration - connectorTO.getConfiguration().addAll(conf); + connectorTO.getConf().addAll(conf); try { connectorService.check(connectorTO); @@ -538,51 +540,35 @@ public class ConnectorITCase extends AbstractITCase { } @Test - public void getSchemaNames() { - ConnInstanceTO conn = connectorService.read(101L, Locale.ENGLISH.getLanguage()); - - List<PlainSchemaTO> schemaNames = connectorService.buildSchemaNames(conn, true); - assertNotNull(schemaNames); - assertFalse(schemaNames.isEmpty()); - assertNotNull(schemaNames.get(0).getKey()); - assertNull(schemaNames.get(0).getEnumerationValues()); + public void buildObjectClassInfo() { + ConnInstanceTO ws = connectorService.read(102L, Locale.ENGLISH.getLanguage()); + assertNotNull(ws); - schemaNames = connectorService.buildSchemaNames(conn, false); + List<ConnIdObjectClassTO> objectClassInfo = connectorService.buildObjectClassInfo(ws, true); + assertNotNull(objectClassInfo); + assertEquals(1, objectClassInfo.size()); + assertEquals(ObjectClass.ACCOUNT_NAME, objectClassInfo.get(0).getType()); + assertTrue(objectClassInfo.get(0).getAttributes().contains("promoThirdPartyDisclaimer")); - assertNotNull(schemaNames); - assertEquals(1, schemaNames.size()); + ConnInstanceTO ldap = connectorService.read(105L, Locale.ENGLISH.getLanguage()); + assertNotNull(ldap); - conn = connectorService.read(104L, Locale.ENGLISH.getLanguage()); + objectClassInfo = connectorService.buildObjectClassInfo(ldap, true); + assertNotNull(objectClassInfo); + assertEquals(2, objectClassInfo.size()); - // to be used with overridden properties - conn.getConfiguration().clear(); + Collection<String> objectClasses = CollectionUtils.collect(objectClassInfo, + new Transformer<ConnIdObjectClassTO, String>() { - schemaNames = connectorService.buildSchemaNames(conn, true); - assertNotNull(schemaNames); - assertFalse(schemaNames.isEmpty()); - } - - @Test - public void getSupportedObjectClasses() { - ConnInstanceTO ldap = connectorService.read(105L, Locale.ENGLISH.getLanguage()); - assertNotNull(ldap); + @Override + public String transform(final ConnIdObjectClassTO info) { + return info.getType(); + } - List<ConnIdObjectClass> objectClasses = connectorService.buildSupportedObjectClasses(ldap); - assertNotNull(objectClasses); + }); assertEquals(2, objectClasses.size()); - assertTrue(objectClasses.contains( - ConnIdObjectClass.getInstance(ConnIdObjectClass.class, ObjectClass.ACCOUNT_NAME))); - assertTrue(objectClasses.contains( - ConnIdObjectClass.getInstance(ConnIdObjectClass.class, ObjectClass.GROUP_NAME))); - - ConnInstanceTO csv = connectorService.read(104L, Locale.ENGLISH.getLanguage()); - assertNotNull(csv); - - objectClasses = connectorService.buildSupportedObjectClasses(csv); - assertNotNull(objectClasses); - assertEquals(1, objectClasses.size()); - assertTrue(objectClasses.contains( - ConnIdObjectClass.getInstance(ConnIdObjectClass.class, ObjectClass.ACCOUNT_NAME))); + assertTrue(objectClasses.contains(ObjectClass.ACCOUNT_NAME)); + assertTrue(objectClasses.contains(ObjectClass.GROUP_NAME)); } @Test @@ -631,7 +617,7 @@ public class ConnectorITCase extends AbstractITCase { conf.add(servicename); // set connector configuration - connectorTO.getConfiguration().addAll(conf); + connectorTO.getConf().addAll(conf); try { try { @@ -664,7 +650,7 @@ public class ConnectorITCase extends AbstractITCase { endpoint.getValues().add("http://localhost:9080/wssample/services/provisioning"); conf.add(endpoint); - resourceTO.getConnConfProperties().addAll(conf); + resourceTO.getConfOverride().addAll(conf); ProvisionTO provisionTO = new ProvisionTO(); provisionTO.setAnyType(AnyTypeKind.USER.name()); http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java index 928365f..236d169 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java @@ -38,7 +38,7 @@ import org.apache.syncope.common.lib.types.AuditLoggerName; import org.apache.syncope.common.lib.types.LoggerLevel; import org.apache.syncope.common.lib.types.LoggerType; import org.apache.syncope.common.lib.types.ResourceOperation; -import org.apache.syncope.common.rest.api.CollectionWrapper; +import org.apache.syncope.common.rest.api.LoggerWrapper; import org.apache.syncope.core.logic.ReportLogic; import org.apache.syncope.core.logic.ResourceLogic; import org.apache.syncope.core.logic.GroupLogic; @@ -105,7 +105,7 @@ public class LoggerITCase extends AbstractITCase { "deleteExecution", AuditElements.Result.FAILURE); - List<AuditLoggerName> audits = CollectionWrapper.wrapLogger(loggerService.list(LoggerType.AUDIT)); + List<AuditLoggerName> audits = LoggerWrapper.wrap(loggerService.list(LoggerType.AUDIT)); assertNotNull(audits); assertFalse(audits.contains(auditLoggerName)); @@ -114,13 +114,13 @@ public class LoggerITCase extends AbstractITCase { loggerTO.setLevel(LoggerLevel.DEBUG); loggerService.update(LoggerType.AUDIT, loggerTO); - audits = CollectionWrapper.wrapLogger(loggerService.list(LoggerType.AUDIT)); + audits = LoggerWrapper.wrap(loggerService.list(LoggerType.AUDIT)); assertNotNull(audits); assertTrue(audits.contains(auditLoggerName)); loggerService.delete(LoggerType.AUDIT, auditLoggerName.toLoggerName()); - audits = CollectionWrapper.wrapLogger(loggerService.list(LoggerType.AUDIT)); + audits = LoggerWrapper.wrap(loggerService.list(LoggerType.AUDIT)); assertNotNull(audits); assertFalse(audits.contains(auditLoggerName)); } http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ResourceITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ResourceITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ResourceITCase.java index e0539c8..5d4d176 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ResourceITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ResourceITCase.java @@ -170,7 +170,7 @@ public class ResourceITCase extends AbstractITCase { p.getValues().add("http://invalidurl/"); Set<ConnConfProperty> connectorConfigurationProperties = new HashSet<>(Arrays.asList(p)); - resourceTO.getConnConfProperties().addAll(connectorConfigurationProperties); + resourceTO.getConfOverride().addAll(connectorConfigurationProperties); Response response = resourceService.create(resourceTO); ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class); http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java index e8ffd56..ef73242 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java @@ -748,7 +748,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { ResourceTO ldapResource = resourceService.read(RESOURCE_NAME_LDAP); ConnInstanceTO resourceConnector = connectorService.read( ldapResource.getConnector(), Locale.ENGLISH.getLanguage()); - ConnConfProperty property = resourceConnector.getConfigurationMap().get("retrievePasswordsWithSearch"); + ConnConfProperty property = resourceConnector.getConfMap().get("retrievePasswordsWithSearch"); property.getValues().clear(); property.getValues().add(Boolean.TRUE); connectorService.update(resourceConnector); http://git-wip-us.apache.org/repos/asf/syncope/blob/1347c108/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java index e96026f..cf00ffd 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java @@ -367,7 +367,7 @@ public class VirAttrITCase extends AbstractITCase { String jdbcURL = null; ConnInstanceTO connInstanceTO = connectorService.readByResource( RESOURCE_NAME_DBVIRATTR, Locale.ENGLISH.getLanguage()); - for (ConnConfProperty prop : connInstanceTO.getConfiguration()) { + for (ConnConfProperty prop : connInstanceTO.getConf()) { if ("jdbcUrlTemplate".equals(prop.getSchema().getName())) { jdbcURL = prop.getValues().iterator().next().toString(); prop.getValues().clear(); @@ -400,7 +400,7 @@ public class VirAttrITCase extends AbstractITCase { // ---------------------------------------- // 5. restore connector URL, values can be read again from external resource // ---------------------------------------- - for (ConnConfProperty prop : connInstanceTO.getConfiguration()) { + for (ConnConfProperty prop : connInstanceTO.getConf()) { if ("jdbcUrlTemplate".equals(prop.getSchema().getName())) { prop.getValues().clear(); prop.getValues().add(jdbcURL);
