This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
commit 4d153110726ec3e06ef262f96fd86843690aed9d Author: Francesco Chicchiriccò <ilgro...@users.noreply.github.com> AuthorDate: Wed Mar 22 09:02:04 2023 +0100 [SYNCOPE-1745] Managing ConnId bundles with one or more Connectors (#430) --- .../wizards/resources/ConnectorConfPanel.java | 8 +- .../wizards/resources/ConnectorDetailsPanel.java | 164 ++++++++++----------- .../wizards/resources/ConnectorWizardBuilder.java | 29 ++-- .../wizards/resources/ResourceDetailsPanel.java | 13 +- .../wizards/resources/ConnectorDetailsPanel.html | 4 + .../resources/ConnectorDetailsPanel.properties | 1 + .../ConnectorDetailsPanel_fr_CA.properties | 5 +- .../resources/ConnectorDetailsPanel_it.properties | 1 + .../resources/ConnectorDetailsPanel_ja.properties | 1 + .../ConnectorDetailsPanel_pt_BR.properties | 1 + .../resources/ConnectorDetailsPanel_ru.properties | 1 + .../src/test/resources/domains/MasterContent.xml | 16 +- .../src/test/resources/domains/MasterContent.xml | 16 +- .../apache/syncope/fit/core/ConnectorITCase.java | 24 +-- .../src/test/resources/test.properties | 2 +- pom.xml | 12 +- .../configuration/connectorbundles.adoc | 6 +- 17 files changed, 135 insertions(+), 169 deletions(-) diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java index 4574260c8d..a9588bf736 100644 --- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java +++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorConfPanel.java @@ -45,13 +45,7 @@ public abstract class ConnectorConfPanel extends AbstractConnConfPanel<ConnInsta ConnectorConfPanel.this.modelObject.getConf().clear(); // re-order properties - properties.sort((o1, o2) -> { - if (o1 == null) { - return -1; - } else { - return o1.compareTo(o2); - } - }); + properties.sort((o1, o2) -> o1 == null ? -1 : o1.compareTo(o2)); ConnectorConfPanel.this.modelObject.getConf().addAll(properties); return properties; diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java index e285ed2bc9..f769716a09 100644 --- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java +++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java @@ -18,14 +18,13 @@ */ package org.apache.syncope.client.console.wizards.resources; -import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.commons.RealmsUtils; -import org.apache.syncope.client.console.rest.ConnectorRestClient; import org.apache.syncope.client.console.rest.RealmRestClient; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel; import org.apache.syncope.client.ui.commons.Constants; @@ -41,7 +40,6 @@ import org.apache.syncope.common.lib.to.RealmTO; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteSettings; import org.apache.wicket.extensions.wizard.WizardStep; -import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.model.PropertyModel; public class ConnectorDetailsPanel extends WizardStep { @@ -76,79 +74,40 @@ public class ConnectorDetailsPanel extends WizardStep { add(realm.addRequiredLabel().setOutputMarkupId(true)); AjaxTextFieldPanel displayName = new AjaxTextFieldPanel( - "displayName", "displayName", new PropertyModel<>(connInstanceTO, "displayName"), false); - displayName.setOutputMarkupId(true); - displayName.addRequiredLabel(); - add(displayName); + "displayName", + "displayName", + new PropertyModel<>(connInstanceTO, "displayName"), false); + add(displayName.addRequiredLabel().setOutputMarkupId(true)); - final AjaxDropDownChoicePanel<String> bundleName = new AjaxDropDownChoicePanel<>( + AjaxTextFieldPanel location = new AjaxTextFieldPanel( + "location", "location", new PropertyModel<>(connInstanceTO, "location"), false); + add(location.addRequiredLabel().setOutputMarkupId(true).setEnabled(false)); + + AjaxDropDownChoicePanel<String> bundleName = new AjaxDropDownChoicePanel<>( "bundleName", "bundleName", new PropertyModel<>(connInstanceTO, "bundleName"), false); - - if (StringUtils.isNotBlank(connInstanceTO.getLocation())) { - AjaxTextFieldPanel location = new AjaxTextFieldPanel( - "location", "location", new PropertyModel<>(connInstanceTO, "location"), false); - location.addRequiredLabel(); - location.setOutputMarkupId(true); - location.setEnabled(false); - add(location); - } else { - final AjaxDropDownChoicePanel<String> location = new AjaxDropDownChoicePanel<>( - "location", "location", new PropertyModel<>(connInstanceTO, "location"), false); - location.setChoices(new ArrayList<>(SyncopeConsoleSession.get().getPlatformInfo().getConnIdLocations())); - location.addRequiredLabel(); - location.setOutputMarkupId(true); - location.getField().setOutputMarkupId(true); - add(location); - - location.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { - - private static final long serialVersionUID = -5609231641453245929L; - - @Override - protected void onUpdate(final AjaxRequestTarget target) { - ((DropDownChoice<String>) location.getField()).setNullValid(false); - bundleName.setEnabled(true); - - List<ConnIdBundle> bundles = ConnectorRestClient.getAllBundles().stream(). - filter(object -> object.getLocation().equals(connInstanceTO.getLocation())). - collect(Collectors.toList()); - - List<String> listBundles = getBundles(connInstanceTO, bundles); - if (listBundles.size() == 1) { - connInstanceTO.setBundleName(listBundles.get(0)); - bundleName.getField().setModelObject(listBundles.get(0)); - } - bundleName.setChoices(listBundles); - - target.add(bundleName); - } - }); - } - - ((DropDownChoice<String>) bundleName.getField()).setNullValid(true); - - List<String> bundleNames = new ArrayList<>(); - bundles.stream(). - filter(bundle -> (!bundleNames.contains(bundle.getBundleName()))). - forEachOrdered(bundle -> bundleNames.add(bundle.getBundleName())); - - bundleName.setChoices(bundleNames); - bundleName.addRequiredLabel(); - bundleName.setOutputMarkupId(true); bundleName.setEnabled(connInstanceTO.getKey() == null); + bundleName.setChoices(bundles.stream().map(ConnIdBundle::getBundleName). + distinct().sorted().collect(Collectors.toList())); bundleName.getField().setOutputMarkupId(true); - add(bundleName); - - final AjaxDropDownChoicePanel<String> version = new AjaxDropDownChoicePanel<>( + add(bundleName.addRequiredLabel().setOutputMarkupId(true)); + + AjaxDropDownChoicePanel<String> connectorName = new AjaxDropDownChoicePanel<>( + "connectorName", + "connectorName", + new PropertyModel<>(connInstanceTO, "connectorName"), false); + connectorName.setEnabled(connInstanceTO.getBundleName() == null); + Optional.ofNullable(connInstanceTO.getConnectorName()).ifPresent(v -> connectorName.setChoices(List.of(v))); + connectorName.getField().setOutputMarkupId(true); + add(connectorName.addRequiredLabel().setOutputMarkupId(true)); + + AjaxDropDownChoicePanel<String> version = new AjaxDropDownChoicePanel<>( "version", "version", new PropertyModel<>(connInstanceTO, "version"), false); - version.setChoices(getVersions(connInstanceTO, bundles)); - version.addRequiredLabel(); - version.setEnabled(connInstanceTO.getBundleName() != null); - version.setOutputMarkupId(true); + version.setEnabled(connInstanceTO.getConnectorName() == null); + Optional.ofNullable(connInstanceTO.getVersion()).ifPresent(v -> version.setChoices(List.of(v))); version.getField().setOutputMarkupId(true); - add(version); + add(version.addRequiredLabel().setOutputMarkupId(true)); bundleName.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { @@ -156,18 +115,54 @@ public class ConnectorDetailsPanel extends WizardStep { @Override protected void onUpdate(final AjaxRequestTarget target) { - ((DropDownChoice<String>) bundleName.getField()).setNullValid(false); - version.setEnabled(true); - - List<String> versions; - if (bundles.isEmpty()) { - List<ConnIdBundle> bundles = ConnectorRestClient.getAllBundles().stream(). - filter(object -> object.getLocation().equals(connInstanceTO.getLocation())). - collect(Collectors.toList()); - versions = getVersions(connInstanceTO, bundles); + connectorName.setEnabled(true); + + List<Pair<String, String>> connectors = bundles.stream(). + filter(bundle -> bundle.getBundleName().equals(connInstanceTO.getBundleName())). + map(bundle -> Pair.of(bundle.getConnectorName(), bundle.getVersion())). + collect(Collectors.toList()); + if (connectors.size() == 1) { + Pair<String, String> entry = connectors.get(0); + + connInstanceTO.setConnectorName(entry.getLeft()); + connectorName.getField().setModelObject(entry.getLeft()); + connectorName.setChoices(List.of(entry.getLeft())); + + connInstanceTO.setVersion(entry.getRight()); + version.getField().setModelObject(entry.getRight()); + version.setChoices(List.of(entry.getRight())); } else { - versions = getVersions(connInstanceTO, bundles); + connectorName.setChoices(connectors.stream(). + map(Pair::getLeft).distinct().sorted().collect(Collectors.toList())); + + List<String> versions = connectors.stream(). + map(Pair::getRight).distinct().sorted().collect(Collectors.toList()); + version.setChoices(versions); + + if (versions.size() == 1) { + connInstanceTO.setVersion(versions.get(0)); + version.getField().setModelObject(versions.get(0)); + } else { + connInstanceTO.setVersion(null); + version.getField().setModelObject(null); + } } + + target.add(version); + target.add(connectorName); + } + }); + + connectorName.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @Override + protected void onUpdate(final AjaxRequestTarget target) { + List<String> versions = bundles.stream(). + filter(bundle -> bundle.getBundleName().equals(connInstanceTO.getBundleName()) + && bundle.getConnectorName().equals(connInstanceTO.getConnectorName())). + map(ConnIdBundle::getVersion).collect(Collectors.toList()); if (versions.size() == 1) { connInstanceTO.setVersion(versions.get(0)); version.getField().setModelObject(versions.get(0)); @@ -206,15 +201,4 @@ public class ConnectorDetailsPanel extends WizardStep { "poolMinEvictableIdleTime", "poolMinEvictableIdleTime", Long.class, new PropertyModel<>(connInstanceTO.getPoolConf(), "minEvictableIdleTimeMillis"))); } - - private static List<String> getVersions(final ConnInstanceTO connInstanceTO, final List<ConnIdBundle> bundles) { - return bundles.stream().filter(object -> object.getLocation().equals(connInstanceTO.getLocation()) - && object.getBundleName().equals(connInstanceTO.getBundleName())). - map(ConnIdBundle::getVersion).collect(Collectors.toList()); - } - - private List<String> getBundles(final ConnInstanceTO connInstanceTO, final List<ConnIdBundle> bundles) { - return bundles.stream().filter(object -> object.getLocation().equals(connInstanceTO.getLocation())). - map(ConnIdBundle::getBundleName).collect(Collectors.toList()); - } } diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java index 7fc06a4dd1..1b5e18f19d 100644 --- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java +++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorWizardBuilder.java @@ -99,39 +99,32 @@ public class ConnectorWizardBuilder extends AbstractResourceWizardBuilder<ConnIn connInstanceTO.setPoolConf(null); } - ConnInstanceTO res; + ConnInstanceTO connInstance; if (mode == AjaxWizard.Mode.CREATE) { - res = ConnectorRestClient.create(connInstanceTO); + connInstance = ConnectorRestClient.create(connInstanceTO); } else { ConnectorRestClient.update(connInstanceTO); - res = connInstanceTO; + connInstance = connInstanceTO; } - return res; + return connInstance; } @Override protected Serializable getCreateCustomPayloadEvent(final Serializable afterObject, final AjaxRequestTarget target) { - final ConnInstanceTO actual = ConnInstanceTO.class.cast(afterObject); + ConnInstanceTO connInstance = ConnInstanceTO.class.cast(afterObject); return new CreateEvent( - actual.getKey(), - actual.getDisplayName(), + connInstance.getKey(), + connInstance.getDisplayName(), TopologyNode.Kind.CONNECTOR, - URI.create(actual.getLocation()).toASCIIString(), + URI.create(connInstance.getLocation()).toASCIIString(), target); } protected static ConnIdBundle getBundle(final ConnInstanceTO connInstanceTO, final List<ConnIdBundle> bundles) { - List<ConnIdBundle> bundlesList; - if (bundles.isEmpty()) { - bundlesList = ConnectorRestClient.getAllBundles().stream(). - filter(object -> object.getLocation().equals(connInstanceTO.getLocation())). - collect(Collectors.toList()); - } else { - bundlesList = bundles; - } - return bundlesList.stream().filter(bundle - -> bundle.getBundleName().equals(connInstanceTO.getBundleName()) + return bundles.stream(). + filter(bundle -> bundle.getBundleName().equals(connInstanceTO.getBundleName()) + && bundle.getConnectorName().equals(connInstanceTO.getConnectorName()) && bundle.getVersion().equals(connInstanceTO.getVersion())). findFirst().orElse(null); } diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceDetailsPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceDetailsPanel.java index 03bb66fbbb..1a4e2f871d 100644 --- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceDetailsPanel.java +++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceDetailsPanel.java @@ -18,11 +18,10 @@ */ package org.apache.syncope.client.console.wizards.resources; -import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import org.apache.syncope.client.console.rest.ConnectorRestClient; import org.apache.syncope.client.console.rest.ImplementationRestClient; @@ -32,6 +31,7 @@ import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoiceP import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel; import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel; import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel; +import org.apache.syncope.common.lib.to.ConnInstanceTO; import org.apache.syncope.common.lib.to.ImplementationTO; import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.syncope.common.lib.types.IdMImplementationType; @@ -157,10 +157,9 @@ public class ResourceDetailsPanel extends WizardStep { "connector", new ResourceModel("connector", "connector").getObject(), new PropertyModel<>(resourceTO, "connector"), false); - Map<String, String> connectorsMap = new HashMap<>(); - ConnectorRestClient.getAllConnectors().forEach(conn -> connectorsMap.put(conn.getKey(), - conn.getDisplayName())); - connector.setChoices(new ArrayList<>(connectorsMap.keySet())); + Map<String, String> connectorsMap = ConnectorRestClient.getAllConnectors().stream(). + collect(Collectors.toMap(ConnInstanceTO::getKey, ConnInstanceTO::getDisplayName)); + connector.setChoices(connectorsMap.keySet().stream().sorted().collect(Collectors.toList())); connector.setChoiceRenderer(new IChoiceRenderer<>() { private static final long serialVersionUID = 91313845533448846L; @@ -169,7 +168,7 @@ public class ResourceDetailsPanel extends WizardStep { @Override public String getDisplayValue(final String value) { - return valueMap.get(value) == null ? value : valueMap.get(value); + return Optional.ofNullable(valueMap.get(value)).orElse(null); } @Override diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.html b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.html index 01ac512470..0a032723bf 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.html +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.html @@ -38,6 +38,10 @@ under the License. <span wicket:id="bundleName">[bundleName]</span> </div> + <div class="form-group"> + <span wicket:id="connectorName">[bundleName]</span> + </div> + <div class="form-group"> <span wicket:id="version">[version]</span> </div> diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.properties index 23711a979a..65edc08dd0 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.properties @@ -25,3 +25,4 @@ poolMaxIdle=Max idle objects poolMaxWait=Max waiting time (msec) poolMinEvictableIdleTime=Min eviction time (msec) adminRealm=Administration Realm +connectorName=Connector diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_fr_CA.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_fr_CA.properties index 05fd6a980b..9407d943c4 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_fr_CA.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_fr_CA.properties @@ -16,12 +16,13 @@ # under the License. displayName=Afficher nom location=Emplacement -bundleName=Offre group�e +bundleName=Offre group\u00e9e version=Version -connRequestTimeout=D�lai de demande (sec) +connRequestTimeout=D\u00e9lai de demande (sec) poolMaxObjects=Nombre maximum d'objets (inactif+actif) poolMinIdle=Nombre minimum d'objets inactifs poolMaxIdle=Nombre maximal d'objets inactifs poolMaxWait=Temps d'attente max (msec) poolMinEvictableIdleTime=Temps minimum d'expulsion (msec) adminRealm=Domaine de l'administration +connectorName=Connector diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_it.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_it.properties index 0fd9aa775c..b162f30e21 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_it.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_it.properties @@ -25,3 +25,4 @@ poolMaxIdle=Max oggetti inattivi poolMaxWait=Tempo max attesa poolMinEvictableIdleTime=Tempo min espulsione adminRealm=Realm di amministrazione +connectorName=Connettore diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ja.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ja.properties index d12baa207d..3ce4e9cd20 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ja.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ja.properties @@ -25,3 +25,4 @@ poolMaxIdle=\u6700\u5927\u30a2\u30a4\u30c9\u30eb\u30aa\u30d6\u30b8\u30a7\u30af\u poolMaxWait=\u6700\u5927\u5f85\u6a5f\u6642\u9593 (\u30df\u30ea\u79d2) poolMinEvictableIdleTime=\u6700\u5c0f\u6392\u51fa\u6642\u9593 (\u30df\u30ea\u79d2) adminRealm=\u7ba1\u7406\u30ec\u30eb\u30e0 +connectorName=Connector diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_pt_BR.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_pt_BR.properties index db06733e5d..23c3a09ec6 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_pt_BR.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_pt_BR.properties @@ -25,3 +25,4 @@ poolMaxIdle=Max idle objects poolMaxWait=Max waiting time (msec) poolMinEvictableIdleTime=Min eviction time (msec) adminRealm=Administration Realm +connectorName=Connector diff --git a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ru.properties b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ru.properties index c5d4b3f6fa..81db5b8f32 100644 --- a/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ru.properties +++ b/client/idm/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel_ru.properties @@ -26,3 +26,4 @@ poolMaxIdle=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043e\u0431\u044a\ poolMaxWait=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f (\u043c\u0441) poolMinEvictableIdleTime=\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f (\u043c\u0441) adminRealm=Administration Realm +connectorName=Connector diff --git a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml index 223c6b0719..d061c253f4 100644 --- a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml @@ -474,9 +474,9 @@ under the License. <ConnInstance id="5aa5b8be-7521-481a-9651-c557aea078c1" displayName="H2" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" - bundleName="net.tirasa.connid.bundles.db.table" + bundleName="net.tirasa.connid.bundles.db" connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" - version="${connid.database.version}" + version="${connid.db.version}" jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpM [...] capabilities='["AUTHENTICATE","CREATE","UPDATE","DELETE","SEARCH","SYNC"]'/> @@ -519,25 +519,25 @@ under the License. <ConnInstance id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" displayName="H2-test2" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" - bundleName="net.tirasa.connid.bundles.db.table" + bundleName="net.tirasa.connid.bundles.db" connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" - version="${connid.database.version}" + version="${connid.db.version}" jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpM [...] capabilities='["CREATE","UPDATE","SYNC","SEARCH"]'/> - <ConnInstance id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" bundleName="net.tirasa.connid.bundles.db.table" + <ConnInstance id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" bundleName="net.tirasa.connid.bundles.db" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" - displayName="H2-testpull" version="${connid.database.version}" + displayName="H2-testpull" version="${connid.db.version}" jsonConf='[{"schema":{"name":"changeLogColumn","displayName":"Change Log Column (Sync)","helpMessage":"=<b>Change Log Column</b><br>The change log column store the latest change time. Providing this value the Pull capabilities are activated.","type":"java.lang.String","required":false,"order":21,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"nativeTimestamps","displayName":"Native Timestamps ","helpMessage" [...] capabilities='["CREATE","UPDATE","DELETE","SEARCH"]'/> - <ConnInstance id="a6d017fd-a705-4507-bb7c-6ab6a6745997" bundleName="net.tirasa.connid.bundles.db.scriptedsql" + <ConnInstance id="a6d017fd-a705-4507-bb7c-6ab6a6745997" bundleName="net.tirasa.connid.bundles.db" adminRealm_id="0679e069-7355-4b20-bd11-a5a0a5453c7c" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorName="net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector" - displayName="Scripted SQL" version="${connid.database.version}" + displayName="Scripted SQL" version="${connid.db.version}" jsonConf='[{"schema":{"name":"updateScriptFileName","displayName":"updateScriptFileName","helpMessage":"updateScriptFileName","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":[]},"overridable":false,"values":["${syncope.conf.dir}/scriptedsql/UpdateScript.groovy"]},{"sch [...] capabilities='["CREATE","UPDATE","UPDATE_DELTA","DELETE","SEARCH","SYNC"]'/> diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml index a2f86a8566..61ad9a8925 100644 --- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml @@ -560,9 +560,9 @@ under the License. <ConnInstance id="5aa5b8be-7521-481a-9651-c557aea078c1" displayName="H2" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" - bundleName="net.tirasa.connid.bundles.db.table" + bundleName="net.tirasa.connid.bundles.db" connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" - version="${connid.database.version}" + version="${connid.db.version}" jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpM [...] capabilities='["AUTHENTICATE","CREATE","UPDATE","DELETE","SEARCH","SYNC"]'/> @@ -605,25 +605,25 @@ under the License. <ConnInstance id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" displayName="H2-test2" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" - bundleName="net.tirasa.connid.bundles.db.table" + bundleName="net.tirasa.connid.bundles.db" connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" - version="${connid.database.version}" + version="${connid.db.version}" jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpM [...] capabilities='["CREATE","UPDATE","SYNC","SEARCH"]'/> - <ConnInstance id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" bundleName="net.tirasa.connid.bundles.db.table" + <ConnInstance id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" bundleName="net.tirasa.connid.bundles.db" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" - displayName="H2-testpull" version="${connid.database.version}" + displayName="H2-testpull" version="${connid.db.version}" jsonConf='[{"schema":{"name":"changeLogColumn","displayName":"Change Log Column (Sync)","helpMessage":"=<b>Change Log Column</b><br>The change log column store the latest change time. Providing this value the Pull capabilities are activated.","type":"java.lang.String","required":false,"order":21,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"nativeTimestamps","displayName":"Native Timestamps ","helpMessage" [...] capabilities='["CREATE","UPDATE","DELETE","SEARCH"]'/> - <ConnInstance id="a6d017fd-a705-4507-bb7c-6ab6a6745997" bundleName="net.tirasa.connid.bundles.db.scriptedsql" + <ConnInstance id="a6d017fd-a705-4507-bb7c-6ab6a6745997" bundleName="net.tirasa.connid.bundles.db" adminRealm_id="0679e069-7355-4b20-bd11-a5a0a5453c7c" location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorName="net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector" - displayName="Scripted SQL" version="${connid.database.version}" + displayName="Scripted SQL" version="${connid.db.version}" jsonConf='[{"schema":{"name":"updateScriptFileName","displayName":"updateScriptFileName","helpMessage":"updateScriptFileName","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":[]},"overridable":false,"values":["${syncope.conf.dir}/scriptedsql/UpdateScript.groovy"]},{"sch [...] capabilities='["CREATE","UPDATE","UPDATE_DELTA","DELETE","SEARCH","SYNC"]'/> diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java index 74ca0c171a..682f3b0eac 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java @@ -81,7 +81,7 @@ public class ConnectorITCase extends AbstractITCase { props.load(propStream); CONNID_SOAP_VERSION = props.getProperty("connid.soap.version"); - CONNID_DB_VERSION = props.getProperty("connid.database.version"); + CONNID_DB_VERSION = props.getProperty("connid.db.version"); TEST_JDBC_URL = props.getProperty("testdb.url"); } catch (Exception e) { @@ -350,22 +350,14 @@ public class ConnectorITCase extends AbstractITCase { @Test public void checkSelectedLanguage() { // 1. Check Italian - List<ConnInstanceTO> connInstances = CONNECTOR_SERVICE.list("it"); - - for (ConnInstanceTO instance : connInstances) { - if ("net.tirasa.connid.bundles.db.table".equals(instance.getBundleName())) { - assertEquals("Utente", instance.getConf("user").get().getSchema().getDisplayName()); - } - } + assertTrue(CONNECTOR_SERVICE.list("it").stream(). + filter(i -> "net.tirasa.connid.bundles.db.table.DatabaseTableConnector".equals(i.getConnectorName())). + allMatch(i -> "Utente".equals(i.getConf("user").get().getSchema().getDisplayName()))); // 2. Check English (default) - connInstances = CONNECTOR_SERVICE.list(null); - - for (ConnInstanceTO instance : connInstances) { - if ("net.tirasa.connid.bundles.db.table".equals(instance.getBundleName())) { - assertEquals("User", instance.getConf("user").get().getSchema().getDisplayName()); - } - } + assertTrue(CONNECTOR_SERVICE.list(null).stream(). + filter(i -> "net.tirasa.connid.bundles.db.table.DatabaseTableConnector".equals(i.getConnectorName())). + allMatch(i -> "User".equals(i.getConf("user").get().getSchema().getDisplayName()))); } @Test @@ -375,7 +367,7 @@ public class ConnectorITCase extends AbstractITCase { connectorTO.setLocation(CONNECTOR_SERVER_LOCATION); connectorTO.setVersion(CONNID_DB_VERSION); connectorTO.setConnectorName("net.tirasa.connid.bundles.db.table.DatabaseTableConnector"); - connectorTO.setBundleName("net.tirasa.connid.bundles.db.table"); + connectorTO.setBundleName("net.tirasa.connid.bundles.db"); connectorTO.setDisplayName("H2Test"); // set the connector configuration using PropertyTO diff --git a/fit/core-reference/src/test/resources/test.properties b/fit/core-reference/src/test/resources/test.properties index 0d0312daef..6e96e78237 100644 --- a/fit/core-reference/src/test/resources/test.properties +++ b/fit/core-reference/src/test/resources/test.properties @@ -30,6 +30,6 @@ testdb.username=${testdb.username} testdb.password=${testdb.password} connid.soap.version=${connid.soap.version} -connid.database.version=${connid.database.version} +connid.db.version=${connid.db.version} springActiveProfiles=${spring.profiles.active} diff --git a/pom.xml b/pom.xml index 600295eb57..7973b5334a 100644 --- a/pom.xml +++ b/pom.xml @@ -400,7 +400,7 @@ under the License. <connid.version>1.6.0.0-SNAPSHOT</connid.version> <connid.soap.version>1.5.0-SNAPSHOT</connid.soap.version> <connid.rest.version>1.1.0-SNAPSHOT</connid.rest.version> - <connid.database.version>2.2.10</connid.database.version> + <connid.db.version>2.3.0-SNAPSHOT</connid.db.version> <connid.csvdir.version>0.8.9</connid.csvdir.version> <connid.ldap.version>1.5.7</connid.ldap.version> <connid.ad.version>1.3.8</connid.ad.version> @@ -1500,14 +1500,8 @@ under the License. </artifactItem> <artifactItem> <groupId>net.tirasa.connid.bundles.db</groupId> - <artifactId>net.tirasa.connid.bundles.db.table</artifactId> - <version>${connid.database.version}</version> - <classifier>bundle</classifier> - </artifactItem> - <artifactItem> - <groupId>net.tirasa.connid.bundles.db</groupId> - <artifactId>net.tirasa.connid.bundles.db.scriptedsql</artifactId> - <version>${connid.database.version}</version> + <artifactId>net.tirasa.connid.bundles.db</artifactId> + <version>${connid.db.version}</version> <classifier>bundle</classifier> </artifactItem> <artifactItem> diff --git a/src/main/asciidoc/reference-guide/configuration/connectorbundles.adoc b/src/main/asciidoc/reference-guide/configuration/connectorbundles.adoc index 757160f571..15c4323d9a 100644 --- a/src/main/asciidoc/reference-guide/configuration/connectorbundles.adoc +++ b/src/main/asciidoc/reference-guide/configuration/connectorbundles.adoc @@ -41,14 +41,14 @@ bundle's version. If you want your own project to use a different version of a given connector bundle, all you need to do is to override the related property in your own project's root pom.xml. -Hence, supposing that you would like to use `net.tirasa.connid.bundles.db.table` version `2.2.8-SNAPSHOT` rather than -`2.2.7` shipped with Apache Syncope, add the following property to your own project's root `pom.xml`: +Hence, supposing that you would like to use `net.tirasa.connid.bundles.db` version `3.0.0-SNAPSHOT` rather than +the one with version shipped with Apache Syncope, add the following property to your own project's root `pom.xml`: [source,xml] .... <properties> ... - <connid.database.version>2.2.8-SNAPSHOT</connid.database.version> + <connid.db.version>3.0.0-SNAPSHOT</connid.db.version> </properties> ....