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/06/11 16:17:50 UTC
[60/70] syncope git commit: [SYNCOPE-666] Any* tests added
[SYNCOPE-666] Any* tests added
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/a45a46bb
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/a45a46bb
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/a45a46bb
Branch: refs/heads/master
Commit: a45a46bba7186ef43b4877482d636901bc40cbc5
Parents: 46aaa9e
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Jun 10 14:33:59 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Jun 10 14:33:59 2015 +0200
----------------------------------------------------------------------
.../client/console/commons/AnyDataProvider.java | 101 ++++
.../commons/AttributableDataProvider.java | 103 ----
.../console/pages/BulkActionModalPage.java | 8 +-
.../pages/BulkActionResultModalPage.java | 8 +-
.../console/pages/ProvisioningModalPage.java | 38 +-
.../client/console/pages/ResourceModalPage.java | 52 +-
.../panels/AbstractSearchResultPanel.java | 22 +-
.../console/panels/AjaxDataTablePanel.java | 4 +-
.../console/panels/AnnotatedBeanPanel.java | 4 +-
.../console/panels/ResourceConnConfPanel.java | 18 +-
.../console/panels/ResourceDetailsPanel.java | 10 +-
.../console/panels/ResourceMappingPanel.java | 228 +++++----
.../client/console/panels/Resources.java | 485 -------------------
.../console/rest/ConnectorRestClient.java | 6 +-
.../client/console/rest/GroupRestClient.java | 47 +-
.../client/console/rest/UserRestClient.java | 48 +-
.../repeater/data/table/ActionResultColumn.java | 17 +-
.../console/pages/ResourceModalPage.properties | 6 +-
.../pages/ResourceModalPage_it.properties | 6 +-
.../pages/ResourceModalPage_pt_BR.properties | 6 +-
.../console/panels/ResourceMappingPanel.html | 14 +-
.../client/console/panels/Resources.html | 52 --
.../client/console/panels/Resources.properties | 34 --
.../console/panels/Resources_it.properties | 34 --
.../console/panels/Resources_pt_BR.properties | 32 --
.../syncope/client/lib/SyncopeClient.java | 13 +-
.../lib/builders/AnyListQueryBuilder.java | 1 +
.../apache/syncope/common/lib/mod/AnyMod.java | 2 +
.../AbstractFiqlSearchConditionBuilder.java | 1 +
.../AnyObjectFiqlSearchConditionBuilder.java | 71 +++
.../common/lib/search/AnyObjectProperty.java | 23 +
.../syncope/common/lib/search/SpecialAttr.java | 1 +
.../common/lib/to/ConnIdObjectClassTO.java | 74 ---
.../apache/syncope/common/lib/to/MappingTO.java | 2 +-
.../common/lib/types/IntMappingType.java | 18 +-
.../common/lib/wrap/ConnIdObjectClass.java | 30 ++
.../rest/api/service/AnyObjectService.java | 49 ++
.../common/rest/api/service/AnyService.java | 191 ++++++++
.../rest/api/service/ConnectorService.java | 4 +-
.../common/rest/api/service/GroupService.java | 158 +-----
.../common/rest/api/service/UserService.java | 160 +-----
.../syncope/core/logic/AbstractAnyLogic.java | 16 +-
.../syncope/core/logic/AnyObjectLogic.java | 27 +-
.../apache/syncope/core/logic/AnyTypeLogic.java | 10 +-
.../apache/syncope/core/logic/GroupLogic.java | 1 +
.../apache/syncope/core/logic/UserLogic.java | 6 +
.../syncope/core/misc/ConnObjectUtils.java | 5 +
.../apache/syncope/core/misc/MappingUtils.java | 14 +-
.../core/misc/search/SearchCondVisitor.java | 7 +
.../misc/search/SearchCondConverterTest.java | 14 +
.../core/persistence/api/dao/AnyObjectDAO.java | 8 +-
.../persistence/api/dao/search/AnyTypeCond.java | 40 ++
.../persistence/api/dao/search/SearchCond.java | 22 +-
.../persistence/jpa/dao/JPAAnyObjectDAO.java | 24 +-
.../persistence/jpa/dao/JPAAnySearchDAO.java | 22 +
.../persistence/jpa/entity/JPAAnyUtils.java | 6 +-
.../jpa/entity/resource/JPAMapping.java | 2 +-
.../jpa/entity/resource/JPAMappingItem.java | 2 +-
.../persistence/jpa/entity/AnyObjectTest.java | 10 +
.../persistence/jpa/entity/AnySearchTest.java | 24 +-
.../persistence/jpa/entity/AnyTypeTest.java | 8 +-
.../persistence/jpa/entity/PlainSchemaTest.java | 2 +-
.../persistence/jpa/entity/ResourceTest.java | 4 +-
.../core/persistence/jpa/entity/TaskTest.java | 2 +-
.../persistence/jpa/relationship/GroupTest.java | 16 +-
.../jpa/relationship/PlainSchemaTest.java | 12 +-
.../persistence/jpa/relationship/RoleTest.java | 2 +-
.../src/test/resources/content.xml | 70 ++-
.../provisioning/java/ConnectorFacadeProxy.java | 35 +-
.../provisioning/java/VirAttrHandlerImpl.java | 2 +-
.../java/data/AbstractAnyDataBinder.java | 2 +-
.../java/data/AnyObjectDataBinderImpl.java | 16 +
.../propagation/PropagationManagerImpl.java | 1 +
.../provisioning/java/sync/SyncJobImpl.java | 39 +-
.../core/provisioning/java/sync/SyncUtils.java | 6 +-
.../rest/cxf/service/AbstractAnyService.java | 290 +++++++++++
.../rest/cxf/service/AnyObjectServiceImpl.java | 71 +++
.../rest/cxf/service/ConnectorServiceImpl.java | 12 +-
.../core/rest/cxf/service/GroupServiceImpl.java | 205 +-------
.../core/rest/cxf/service/UserServiceImpl.java | 259 +---------
.../core/logic/init/CamelRouteLoader.java | 4 +
.../CamelAnyObjectProvisioningManager.java | 163 +++++++
.../processor/AnyObjectCreateProcessor.java | 71 +++
.../processor/AnyObjectDeleteProcessor.java | 83 ++++
.../AnyObjectDeprovisionProcessor.java | 78 +++
.../processor/AnyObjectUpdateProcessor.java | 90 ++++
.../src/main/resources/anyObjectRoutes.xml | 121 +++++
.../src/main/resources/provisioning.properties | 2 +-
.../main/resources/provisioningCamelContext.xml | 6 +-
fit/build-tools/pom.xml | 10 +-
.../fit/buildtools/ConnIdStartStopListener.java | 3 +-
.../src/main/resources/buildToolsContext.xml | 7 +-
fit/build-tools/src/main/resources/testdb.sql | 8 +-
.../src/main/resources/connid.properties | 2 +-
.../resources/scriptedsql/CreateScript.groovy | 52 ++
.../resources/scriptedsql/DeleteScript.groovy | 43 ++
.../resources/scriptedsql/SchemaScript.groovy | 50 ++
.../resources/scriptedsql/SearchScript.groovy | 94 ++++
.../resources/scriptedsql/SyncScript.groovy | 98 ++++
.../resources/scriptedsql/TestScript.groovy | 31 ++
.../resources/scriptedsql/UpdateScript.groovy | 67 +++
.../fit/core/reference/AbstractITCase.java | 35 +-
.../fit/core/reference/AnyObjectITCase.java | 126 +++++
.../fit/core/reference/AnyTypeClassITCase.java | 117 +++++
.../fit/core/reference/AnyTypeITCase.java | 169 +++++++
.../fit/core/reference/ConnectorITCase.java | 15 +-
.../syncope/fit/core/reference/GroupITCase.java | 24 +-
.../fit/core/reference/SearchITCase.java | 93 ++--
.../fit/core/reference/SyncTaskITCase.java | 45 ++
.../syncope/fit/core/reference/UserITCase.java | 4 +-
pom.xml | 11 +-
111 files changed, 3166 insertions(+), 2051 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
new file mode 100644
index 0000000..bd4183b
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyDataProvider.java
@@ -0,0 +1,101 @@
+/*
+ * 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.client.console.commons;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+
+public class AnyDataProvider extends SortableDataProvider<AnyTO, String> {
+
+ private static final long serialVersionUID = 6267494272884913376L;
+
+ private final SortableAnyProviderComparator comparator;
+
+ private String fiql = null;
+
+ private final int paginatorRows;
+
+ private final boolean filtered;
+
+ private final AbstractAnyRestClient restClient;
+
+ private final String realm = "/";
+
+ public AnyDataProvider(final AbstractAnyRestClient restClient, final int paginatorRows, final boolean filtered) {
+ super();
+
+ this.restClient = restClient;
+ this.filtered = filtered;
+ this.paginatorRows = paginatorRows;
+
+ // default sorting
+ setSort("key", SortOrder.ASCENDING);
+
+ this.comparator = new SortableAnyProviderComparator(this);
+ }
+
+ public void setFIQL(final String fiql) {
+ this.fiql = fiql;
+ }
+
+ @Override
+ public Iterator<? extends AnyTO> iterator(final long first, final long count) {
+ List<? extends AnyTO> result;
+
+ final int page = ((int) first / paginatorRows);
+
+ if (filtered) {
+ result = fiql == null
+ ? Collections.<AnyTO>emptyList()
+ : restClient.search(realm, fiql, (page < 0 ? 0 : page) + 1, paginatorRows, getSort());
+ } else {
+ result = restClient.list(realm, (page < 0 ? 0 : page) + 1, paginatorRows, getSort());
+ }
+
+ Collections.sort(result, comparator);
+ return result.iterator();
+ }
+
+ @Override
+ public long size() {
+ long result;
+
+ if (filtered) {
+ result = fiql == null
+ ? 0
+ : restClient.searchCount(realm, fiql);
+ } else {
+ result = restClient.count(realm);
+ }
+
+ return result;
+ }
+
+ @Override
+ public IModel<AnyTO> model(final AnyTO object) {
+ return new CompoundPropertyModel<>(object);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
deleted file mode 100644
index 1890a80..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
+++ /dev/null
@@ -1,103 +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.client.console.commons;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.syncope.client.console.rest.AbstractSubjectRestClient;
-import org.apache.syncope.common.lib.to.AbstractAttributableTO;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-
-public class AttributableDataProvider extends SortableDataProvider<AbstractAttributableTO, String> {
-
- private static final long serialVersionUID = 6267494272884913376L;
-
- private final SortableAttributableProviderComparator comparator;
-
- private String fiql = null;
-
- private final int paginatorRows;
-
- private final boolean filtered;
-
- private final AbstractSubjectRestClient restClient;
-
- private final String realm = "/";
-
- public AttributableDataProvider(final AbstractSubjectRestClient restClient,
- final int paginatorRows, final boolean filtered) {
-
- super();
-
- this.restClient = restClient;
- this.filtered = filtered;
- this.paginatorRows = paginatorRows;
-
- // default sorting
- setSort("key", SortOrder.ASCENDING);
-
- this.comparator = new SortableAttributableProviderComparator(this);
- }
-
- public void setFIQL(final String fiql) {
- this.fiql = fiql;
- }
-
- @Override
- public Iterator<? extends AbstractAttributableTO> iterator(final long first, final long count) {
- List<? extends AbstractAttributableTO> result;
-
- final int page = ((int) first / paginatorRows);
-
- if (filtered) {
- result = fiql == null
- ? Collections.<AbstractAttributableTO>emptyList()
- : restClient.search(realm, fiql, (page < 0 ? 0 : page) + 1, paginatorRows, getSort());
- } else {
- result = restClient.list(realm, (page < 0 ? 0 : page) + 1, paginatorRows, getSort());
- }
-
- Collections.sort(result, comparator);
- return result.iterator();
- }
-
- @Override
- public long size() {
- long result;
-
- if (filtered) {
- result = fiql == null
- ? 0
- : restClient.searchCount(realm, fiql);
- } else {
- result = restClient.count(realm);
- }
-
- return result;
- }
-
- @Override
- public IModel<AbstractAttributableTO> model(final AbstractAttributableTO object) {
- return new CompoundPropertyModel<>(object);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
index 65dfa58..5567094 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
@@ -53,7 +53,7 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
final List<IColumn<T, S>> columns,
final Collection<ActionLink.ActionType> actions,
final BaseRestClient bulkActionExecutor,
- final String idFieldName,
+ final String keyFieldName,
final String pageId) {
super();
@@ -92,9 +92,9 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
final BulkAction bulkAction = new BulkAction();
for (T item : items) {
try {
- bulkAction.getTargets().add(getTargetId(item, idFieldName).toString());
+ bulkAction.getTargets().add(getTargetId(item, keyFieldName).toString());
} catch (IllegalAccessException | InvocationTargetException e) {
- LOG.error("Error retrieving item id {}", idFieldName, e);
+ LOG.error("Error retrieving item id {}", keyFieldName, e);
}
}
@@ -128,7 +128,7 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
final BulkActionResult res = (BulkActionResult) bulkActionExecutor.getClass().
getMethod("bulkAction", BulkAction.class).invoke(bulkActionExecutor, bulkAction);
- setResponsePage(new BulkActionResultModalPage<>(window, items, columns, res, idFieldName));
+ setResponsePage(new BulkActionResultModalPage<>(window, items, columns, res, keyFieldName));
} catch (NoSuchMethodException | SecurityException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException e) {
error(getString(Constants.ERROR)
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
index 72a789f..98ac15c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
@@ -36,14 +36,12 @@ import org.apache.wicket.model.IModel;
/**
* Show user or group status after performing a successful operation.
+ *
* @param <T>
* @param <S>
*/
public class BulkActionResultModalPage<T, S> extends BaseModalPage {
- /**
- * Serial version id.
- */
private static final long serialVersionUID = 2646115294319713724L;
public BulkActionResultModalPage(
@@ -51,12 +49,12 @@ public class BulkActionResultModalPage<T, S> extends BaseModalPage {
final Collection<T> items,
final List<IColumn<T, S>> columns,
final BulkActionResult results,
- final String idFieldName) {
+ final String keyFieldName) {
super();
final List<IColumn<T, S>> newColumnList = new ArrayList<>(columns.subList(1, columns.size() - 1));
- newColumnList.add(newColumnList.size(), new ActionResultColumn<T, S>(results, idFieldName));
+ newColumnList.add(newColumnList.size(), new ActionResultColumn<T, S>(results, keyFieldName));
final SortableDataProvider<T, S> dataProvider = new SortableDataProvider<T, S>() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
index af1d0b5..6f56bbb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
@@ -31,15 +31,13 @@ import org.apache.syncope.client.console.commons.status.StatusUtils;
import org.apache.syncope.client.console.panels.ActionDataTablePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.common.lib.to.AbstractAttributableTO;
-import org.apache.syncope.common.lib.to.AbstractSubjectTO;
+import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.syncope.common.lib.to.BulkActionResult;
import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.ResourceDeassociationActionType;
import org.apache.syncope.common.lib.wrap.AbstractWrappable;
-import org.apache.syncope.common.lib.wrap.SubjectKey;
+import org.apache.syncope.common.lib.wrap.AnyKey;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
@@ -54,7 +52,7 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.StringResourceModel;
-public class ProvisioningModalPage<T extends AbstractAttributableTO> extends AbstractStatusModalPage {
+public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalPage {
private static final long serialVersionUID = -4285220460543213901L;
@@ -62,7 +60,7 @@ public class ProvisioningModalPage<T extends AbstractAttributableTO> extends Abs
private final ResourceTO resourceTO;
- private final Class<? extends AbstractAttributableTO> typeRef;
+ private final AnyTypeKind anyTypeKind;
private final PageReference pageRef;
@@ -76,16 +74,16 @@ public class ProvisioningModalPage<T extends AbstractAttributableTO> extends Abs
final PageReference pageRef,
final ModalWindow window,
final ResourceTO resourceTO,
- final Class<T> typeRef) {
+ final AnyTypeKind anyTypeKind) {
super();
this.pageRef = pageRef;
this.window = window;
this.resourceTO = resourceTO;
- this.typeRef = typeRef;
+ this.anyTypeKind = anyTypeKind;
- statusUtils = new StatusUtils((UserTO.class.isAssignableFrom(typeRef) ? userRestClient : groupRestClient));
+ statusUtils = new StatusUtils(anyTypeKind == AnyTypeKind.USER ? userRestClient : groupRestClient);
add(new Label("displayName", StringUtils.EMPTY));
@@ -100,8 +98,8 @@ public class ProvisioningModalPage<T extends AbstractAttributableTO> extends Abs
new StringResourceModel("resourceName", this, null, "Resource name"),
"resourceName", "resourceName"));
columns.add(new PropertyColumn<StatusBean, String>(
- new StringResourceModel("accountLink", this, null, "Account link"),
- "accountLink", "accountLink"));
+ new StringResourceModel("connObjectLink", this, null, "ConnObjectLink"),
+ "connObjectLink", "connObjectLink"));
columns.add(new AbstractColumn<StatusBean, String>(
new StringResourceModel("status", this, null, "")) {
@@ -198,7 +196,7 @@ public class ProvisioningModalPage<T extends AbstractAttributableTO> extends Abs
final String fiql = SyncopeClient.getUserSearchConditionBuilder().hasResources(resourceTO.getKey()).query();
final List<T> subjects = new ArrayList<>();
- if (UserTO.class.isAssignableFrom(typeRef)) {
+ if (anyTypeKind == AnyTypeKind.USER) {
subjects.addAll((List<T>) userRestClient.search(
realm, fiql, 1, ROWS_PER_PAGE, new SortParam<>("key", true)));
} else {
@@ -207,16 +205,16 @@ public class ProvisioningModalPage<T extends AbstractAttributableTO> extends Abs
}
final List<ConnObjectWrapper> connObjects = statusUtils.getConnectorObjects(
- (List<AbstractSubjectTO>) subjects, Collections.<String>singleton(resourceTO.getKey()));
+ (List<AnyTO>) subjects, Collections.<String>singleton(resourceTO.getKey()));
final List<StatusBean> statusBeans = new ArrayList<>(connObjects.size() + 1);
final LinkedHashMap<String, StatusBean> initialStatusBeanMap = new LinkedHashMap<>(connObjects.size());
for (ConnObjectWrapper entry : connObjects) {
- final StatusBean statusBean = statusUtils.getStatusBean(entry.getAttributable(),
+ StatusBean statusBean = statusUtils.getStatusBean(entry.getAny(),
entry.getResourceName(),
entry.getConnObjectTO(),
- GroupTO.class.isAssignableFrom(typeRef));
+ anyTypeKind == AnyTypeKind.GROUP);
initialStatusBeanMap.put(entry.getResourceName(), statusBean);
statusBeans.add(statusBean);
@@ -233,21 +231,21 @@ public class ProvisioningModalPage<T extends AbstractAttributableTO> extends Abs
final List<IColumn<StatusBean, String>> columns) {
final List<StatusBean> beans = new ArrayList<>(table.getModelObject());
- List<SubjectKey> subjectKeys = new ArrayList<>();
+ List<AnyKey> subjectKeys = new ArrayList<>();
for (StatusBean bean : beans) {
LOG.debug("Selected bean {}", bean);
- subjectKeys.add(AbstractWrappable.getInstance(SubjectKey.class, bean.getAttributableId()));
+ subjectKeys.add(AbstractWrappable.getInstance(AnyKey.class, bean.getAnyKey()));
}
if (beans.isEmpty()) {
window.close(target);
} else {
final BulkActionResult res = resourceRestClient.bulkAssociationAction(
- resourceTO.getKey(), typeRef, type, subjectKeys);
+ resourceTO.getKey(), anyTypeKind.name(), type, subjectKeys);
((BasePage) pageRef.getPage()).setModalResult(true);
- setResponsePage(new BulkActionResultModalPage<>(window, beans, columns, res, "attributableKey"));
+ setResponsePage(new BulkActionResultModalPage<>(window, beans, columns, res, "anyKey"));
}
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/pages/ResourceModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/ResourceModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/ResourceModalPage.java
index aa9dbfc..e578255 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/ResourceModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/ResourceModalPage.java
@@ -18,6 +18,8 @@
*/
package org.apache.syncope.client.console.pages;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.panels.AnnotatedBeanPanel;
import org.apache.syncope.client.console.panels.ResourceConnConfPanel;
@@ -25,8 +27,9 @@ import org.apache.syncope.client.console.panels.ResourceDetailsPanel;
import org.apache.syncope.client.console.panels.ResourceMappingPanel;
import org.apache.syncope.client.console.panels.ResourceSecurityPanel;
import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.types.AttributableType;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.Entitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -66,8 +69,8 @@ public class ResourceModalPage extends BaseModalPage {
//--------------------------------
// Resource mapping panels
//--------------------------------
- form.add(new ResourceMappingPanel("umapping", resourceTO, AttributableType.USER));
- form.add(new ResourceMappingPanel("gmapping", resourceTO, AttributableType.GROUP));
+ form.add(new ResourceMappingPanel("umapping", resourceTO, AnyTypeKind.USER));
+ form.add(new ResourceMappingPanel("gmapping", resourceTO, AnyTypeKind.GROUP));
//--------------------------------
//--------------------------------
@@ -84,7 +87,7 @@ public class ResourceModalPage extends BaseModalPage {
form.add(new ResourceSecurityPanel("security", resourceTO));
//--------------------------------
- final AjaxButton submit = new IndicatingAjaxButton(APPLY, new ResourceModel(SUBMIT, SUBMIT)) {
+ AjaxButton submit = new IndicatingAjaxButton(APPLY, new ResourceModel(SUBMIT, SUBMIT)) {
private static final long serialVersionUID = -958724007591692537L;
@@ -92,34 +95,29 @@ public class ResourceModalPage extends BaseModalPage {
protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
final ResourceTO resourceTO = (ResourceTO) form.getDefaultModelObject();
- boolean accountIdError = false;
+ boolean connObjectKeyError = false;
- if (resourceTO.getUmapping() == null || resourceTO.getUmapping().getItems().isEmpty()) {
- resourceTO.setUmapping(null);
- } else {
- int uAccountIdCount = 0;
- for (MappingItemTO item : resourceTO.getUmapping().getItems()) {
- if (item.isAccountid()) {
- uAccountIdCount++;
- }
- }
- accountIdError = uAccountIdCount != 1;
- }
+ for (ProvisionTO provision : resourceTO.getProvisions()) {
+ if (provision != null) {
+ if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
+ resourceTO.getProvisions().remove(provision);
+ } else {
+ int uConnObjectKeyCount = CollectionUtils.countMatches(
+ provision.getMapping().getItems(), new Predicate<MappingItemTO>() {
- if (resourceTO.getGmapping() == null || resourceTO.getGmapping().getItems().isEmpty()) {
- resourceTO.setGmapping(null);
- } else {
- int rAccountIdCount = 0;
- for (MappingItemTO item : resourceTO.getGmapping().getItems()) {
- if (item.isAccountid()) {
- rAccountIdCount++;
+ @Override
+ public boolean evaluate(final MappingItemTO item) {
+ return item.isConnObjectKey();
+ }
+ });
+
+ connObjectKeyError = uConnObjectKeyCount != 1;
}
}
- accountIdError |= rAccountIdCount != 1;
}
- if (accountIdError) {
- error(getString("accountIdValidation"));
+ if (connObjectKeyError) {
+ error(getString("connObjectKeyValidation"));
feedbackPanel.refresh(target);
} else {
try {
@@ -142,6 +140,7 @@ public class ResourceModalPage extends BaseModalPage {
}
@Override
+
protected void onError(final AjaxRequestTarget target, final Form<?> form) {
feedbackPanel.refresh(target);
}
@@ -171,6 +170,7 @@ public class ResourceModalPage extends BaseModalPage {
MetaDataRoleAuthorizationStrategy.authorize(
submit, ENABLE, createFlag ? Entitlement.RESOURCE_CREATE : Entitlement.RESOURCE_UPDATE);
+
}
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
index 0af8a0b..20f62d5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
@@ -21,12 +21,12 @@ package org.apache.syncope.client.console.panels;
import java.util.Collection;
import java.util.List;
import org.apache.syncope.client.console.PreferenceManager;
-import org.apache.syncope.client.console.commons.AttributableDataProvider;
+import org.apache.syncope.client.console.commons.AnyDataProvider;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.AbstractBasePage;
-import org.apache.syncope.client.console.rest.AbstractSubjectRestClient;
+import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.common.lib.to.AbstractAttributableTO;
+import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
@@ -89,7 +89,7 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
@SpringBean
protected PreferenceManager prefMan;
- protected final AbstractSubjectRestClient restClient;
+ protected final AbstractAnyRestClient restClient;
/**
* Number of rows per page.
@@ -120,12 +120,12 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
/**
* Result table.
*/
- private AjaxDataTablePanel<AbstractAttributableTO, String> resultTable;
+ private AjaxDataTablePanel<AnyTO, String> resultTable;
/**
* Data provider used to search for users.
*/
- private AttributableDataProvider dataProvider;
+ private AnyDataProvider dataProvider;
/**
* Modal window to be used for user profile editing. Global visibility is required ...
@@ -147,8 +147,8 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
*/
protected final AbstractBasePage page;
- protected <T extends AbstractAttributableTO> AbstractSearchResultPanel(final String id, final boolean filtered,
- final String fiql, final PageReference pageRef, final AbstractSubjectRestClient restClient) {
+ protected <T extends AnyTO> AbstractSearchResultPanel(final String id, final boolean filtered,
+ final String fiql, final PageReference pageRef, final AbstractAnyRestClient restClient) {
super(id);
@@ -238,7 +238,7 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
}
private void updateResultTable(final boolean create, final int rows) {
- dataProvider = new AttributableDataProvider(restClient, rows, filtered);
+ dataProvider = new AnyDataProvider(restClient, rows, filtered);
dataProvider.setFIQL(fiql);
final int currentPage = resultTable != null
@@ -265,7 +265,7 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
container.addOrReplace(resultTable);
}
- protected abstract List<IColumn<AbstractAttributableTO, String>> getColumns();
+ protected abstract List<IColumn<AnyTO, String>> getColumns();
@Override
public void onEvent(final IEvent<?> event) {
@@ -340,7 +340,7 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
}
}
- protected abstract <T extends AbstractAttributableTO> Collection<ActionLink.ActionType> getBulkActions();
+ protected abstract <T extends AnyTO> Collection<ActionLink.ActionType> getBulkActions();
protected abstract String getPageId();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index 563bd17..daaaa23 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -52,7 +52,7 @@ public class AjaxDataTablePanel<T, S> extends DataTablePanel<T, S> {
final int rowsPerPage,
final Collection<ActionLink.ActionType> actions,
final BaseRestClient bulkActionExecutor,
- final String itemIdField,
+ final String itemKeyField,
final String pageId,
final PageReference pageRef) {
@@ -130,7 +130,7 @@ public class AjaxDataTablePanel<T, S> extends DataTablePanel<T, S> {
columns,
actions,
bulkActionExecutor,
- itemIdField,
+ itemKeyField,
pageId);
}
});
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/panels/AnnotatedBeanPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnnotatedBeanPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnnotatedBeanPanel.java
index e809263..ab1e7e0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnnotatedBeanPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnnotatedBeanPanel.java
@@ -20,7 +20,7 @@ package org.apache.syncope.client.console.panels;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.common.lib.to.AbstractAnnotatedBean;
-import org.apache.syncope.common.lib.to.AbstractAttributableTO;
+import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
@@ -29,7 +29,7 @@ public class AnnotatedBeanPanel extends Panel {
private static final long serialVersionUID = 4228064224811390809L;
- public <T extends AbstractAttributableTO> AnnotatedBeanPanel(
+ public <T extends AnyTO> AnnotatedBeanPanel(
final String id, final AbstractAnnotatedBean sysInfoTO) {
super(id);
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
index c1d01e0..6f2a17b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
@@ -57,9 +57,9 @@ public class ResourceConnConfPanel extends Panel {
private List<ConnConfProperty> connConfProperties;
- private WebMarkupContainer connConfPropContainer;
+ private final WebMarkupContainer connConfPropContainer;
- private AjaxButton check;
+ private final AjaxButton check;
public ResourceConnConfPanel(final String id, final ResourceTO resourceTO, final boolean createFlag) {
super(id);
@@ -103,7 +103,7 @@ public class ResourceConnConfPanel extends Panel {
check.setEnabled(!connConfProperties.isEmpty());
check.setVisible(!connConfProperties.isEmpty());
-
+
connConfPropContainer.add(check);
}
@@ -113,10 +113,10 @@ public class ResourceConnConfPanel extends Panel {
* @return overridable properties.
*/
private List<ConnConfProperty> getConnConfProperties() {
- final List<ConnConfProperty> props = new ArrayList<ConnConfProperty>();
- final Long connectorId = resourceTO.getConnectorId();
- if (connectorId != null && connectorId > 0) {
- for (ConnConfProperty property : restClient.getConnectorProperties(connectorId)) {
+ List<ConnConfProperty> props = new ArrayList<>();
+ Long connectorKey = resourceTO.getConnector();
+ if (connectorKey != null && connectorKey > 0) {
+ for (ConnConfProperty property : restClient.getConnectorProperties(connectorKey)) {
if (property.isOverridable()) {
props.add(property);
}
@@ -125,7 +125,7 @@ public class ResourceConnConfPanel extends Panel {
if (createFlag || resourceTO.getConnConfProperties().isEmpty()) {
resourceTO.getConnConfProperties().clear();
} else {
- Map<String, ConnConfProperty> valuedProps = new HashMap<String, ConnConfProperty>();
+ Map<String, ConnConfProperty> valuedProps = new HashMap<>();
for (ConnConfProperty prop : resourceTO.getConnConfProperties()) {
valuedProps.put(prop.getSchema().getName(), prop);
}
@@ -169,7 +169,7 @@ public class ResourceConnConfPanel extends Panel {
*/
public static class ConnConfModEvent extends ResourceEvent {
- private List<ConnConfProperty> configuration;
+ private final List<ConnConfProperty> configuration;
/**
* Constructor.
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
index 3bff23f..3095b4e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
@@ -222,7 +222,7 @@ public class ResourceDetailsPanel extends Panel {
new ResourceModel("connector", "connector").getObject(),
new PropertyModel<ConnInstanceTO>(this, "connInstanceTO"));
conn.setChoices(connectors.getObject());
- conn.setChoiceRenderer(new ChoiceRenderer("displayName", "key"));
+ conn.setChoiceRenderer(new ChoiceRenderer<String>("displayName", "key"));
conn.getField().setModel(new IModel<ConnInstanceTO>() {
@@ -235,7 +235,7 @@ public class ResourceDetailsPanel extends Panel {
@Override
public void setObject(final ConnInstanceTO connector) {
- resourceTO.setConnectorId(connector.getKey());
+ resourceTO.setConnector(connector.getKey());
connInstanceTO = connector;
}
@@ -270,20 +270,20 @@ public class ResourceDetailsPanel extends Panel {
*/
private ConnInstanceTO getConectorInstanceTO(final List<ConnInstanceTO> connectorTOs, final ResourceTO resourceTO) {
if (connectorTOs.isEmpty()) {
- resourceTO.setConnectorId(null);
+ resourceTO.setConnector(null);
return null;
} else {
// use the first element as default
ConnInstanceTO res = connectorTOs.get(0);
for (ConnInstanceTO to : connectorTOs) {
- if (Long.valueOf(to.getKey()).equals(resourceTO.getConnectorId())) {
+ if (Long.valueOf(to.getKey()).equals(resourceTO.getConnector())) {
res = to;
}
}
// in case of no match
- resourceTO.setConnectorId(res.getKey());
+ resourceTO.setConnector(res.getKey());
return res;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
index b00bc1b..17ae3bf 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
@@ -36,12 +36,12 @@ import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownCho
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.MappingPurposePanel;
-import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.MappingItemTO;
import org.apache.syncope.common.lib.to.MappingTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.types.AttributableType;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.common.lib.types.IntMappingType;
import org.apache.syncope.common.lib.types.MappingPurpose;
@@ -122,37 +122,28 @@ public class ResourceMappingPanel extends Panel {
/**
* User / group.
*/
- private final AttributableType attrType;
+ private final AnyTypeKind anyTypeKind;
/**
* Mapping container.
*/
private final WebMarkupContainer mappingContainer;
- /**
- * AccountLink container.
- */
- private final WebMarkupContainer accountLinkContainer;
+ private final WebMarkupContainer connObjectLinkContainer;
- private final AjaxCheckBoxPanel accountLinkCheckbox;
+ private final AjaxCheckBoxPanel connObjectLinkCheckbox;
private MappingTO getMapping() {
- MappingTO result = null;
-
- if (AttributableType.USER == this.attrType) {
- if (this.resourceTO.getUmapping() == null) {
- this.resourceTO.setUmapping(new MappingTO());
- }
- result = this.resourceTO.getUmapping();
+ ProvisionTO provision = resourceTO.getProvision(this.anyTypeKind.name());
+ if (provision == null) {
+ provision = new ProvisionTO();
+ resourceTO.getProvisions().add(provision);
}
- if (AttributableType.GROUP == this.attrType) {
- if (this.resourceTO.getGmapping() == null) {
- this.resourceTO.setGmapping(new MappingTO());
- }
- result = this.resourceTO.getGmapping();
+ if (provision.getMapping() == null) {
+ provision.setMapping(new MappingTO());
}
- return result;
+ return provision.getMapping();
}
/**
@@ -160,25 +151,25 @@ public class ResourceMappingPanel extends Panel {
*
* @param id panel id
* @param resourceTO external resource
- * @param attrType USER / GROUP
+ * @param anyTypeKind USER / GROUP
*/
- public ResourceMappingPanel(final String id, final ResourceTO resourceTO, final AttributableType attrType) {
+ public ResourceMappingPanel(final String id, final ResourceTO resourceTO, final AnyTypeKind anyTypeKind) {
super(id);
setOutputMarkupId(true);
this.resourceTO = resourceTO;
- this.attrType = attrType;
+ this.anyTypeKind = anyTypeKind;
this.mappingContainer = new WebMarkupContainer("mappingContainer");
this.mappingContainer.setOutputMarkupId(true);
add(this.mappingContainer);
- this.accountLinkContainer = new WebMarkupContainer("accountLinkContainer");
- this.accountLinkContainer.setOutputMarkupId(true);
- add(this.accountLinkContainer);
+ this.connObjectLinkContainer = new WebMarkupContainer("connObjectLinkContainer");
+ this.connObjectLinkContainer.setOutputMarkupId(true);
+ add(this.connObjectLinkContainer);
- if (this.resourceTO.getConnectorId() != null && this.resourceTO.getConnectorId() > 0) {
- schemaNames = getSchemaNames(this.resourceTO.getConnectorId(), this.resourceTO.getConnConfProperties());
+ if (this.resourceTO.getConnector() != null && this.resourceTO.getConnector() > 0) {
+ schemaNames = getSchemaNames(this.resourceTO.getConnector(), this.resourceTO.getConnConfProperties());
setEnabled();
} else {
@@ -193,7 +184,7 @@ public class ResourceMappingPanel extends Panel {
final Label passwordLabel = new Label("passwordLabel", new ResourceModel("password"));
mappingContainer.add(passwordLabel);
- if (AttributableType.USER != ResourceMappingPanel.this.attrType) {
+ if (AnyTypeKind.USER != ResourceMappingPanel.this.anyTypeKind) {
passwordLabel.setVisible(false);
}
@@ -213,8 +204,8 @@ public class ResourceMappingPanel extends Panel {
} else if (left.getPurpose() != MappingPurpose.BOTH && right.getPurpose() == MappingPurpose.BOTH) {
compared = 1;
} else if (left.getPurpose() == MappingPurpose.PROPAGATION
- && (right.getPurpose() == MappingPurpose.SYNCHRONIZATION || right.getPurpose()
- == MappingPurpose.NONE)) {
+ && (right.getPurpose() == MappingPurpose.SYNCHRONIZATION
+ || right.getPurpose() == MappingPurpose.NONE)) {
compared = -1;
} else if (left.getPurpose() == MappingPurpose.SYNCHRONIZATION
&& right.getPurpose() == MappingPurpose.PROPAGATION) {
@@ -225,9 +216,9 @@ public class ResourceMappingPanel extends Panel {
} else if (left.getPurpose() == MappingPurpose.NONE
&& right.getPurpose() != MappingPurpose.NONE) {
compared = 1;
- } else if (left.isAccountid()) {
+ } else if (left.isConnObjectKey()) {
compared = -1;
- } else if (right.isAccountid()) {
+ } else if (right.isConnObjectKey()) {
compared = 1;
} else if (left.isPassword()) {
compared = -1;
@@ -251,14 +242,12 @@ public class ResourceMappingPanel extends Panel {
mapItem.setPurpose(MappingPurpose.BOTH);
}
- AttributableType entity = null;
+ AnyTypeKind entity = null;
if (mapItem.getIntMappingType() != null) {
- entity = mapItem.getIntMappingType().getAttributableType();
+ entity = mapItem.getIntMappingType().getAnyTypeKind();
}
- final List<IntMappingType> attrTypes = new ArrayList<IntMappingType>(getAttributeTypes(entity));
-
- item.add(new AjaxDecoratedCheckbox("toRemove", new Model<Boolean>(Boolean.FALSE)) {
+ item.add(new AjaxDecoratedCheckbox("toRemove", new Model<>(Boolean.FALSE)) {
private static final long serialVersionUID = 7170946748485726506L;
@@ -282,7 +271,7 @@ public class ResourceMappingPanel extends Panel {
protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
- final AjaxCallListener ajaxCallListener = new AjaxCallListener() {
+ AjaxCallListener ajaxCallListener = new AjaxCallListener() {
private static final long serialVersionUID = 7160235486520935153L;
@@ -296,7 +285,7 @@ public class ResourceMappingPanel extends Panel {
});
final AjaxDropDownChoicePanel<String> intAttrNames =
- new AjaxDropDownChoicePanel<String>("intAttrNames", getString("intAttrNames"),
+ new AjaxDropDownChoicePanel<>("intAttrNames", getString("intAttrNames"),
new PropertyModel<String>(mapItem, "intAttrName"), false);
intAttrNames.setChoices(schemaNames);
intAttrNames.setRequired(true);
@@ -311,8 +300,9 @@ public class ResourceMappingPanel extends Panel {
});
item.add(intAttrNames);
+ final List<IntMappingType> attrTypes = new ArrayList<>(getAttributeTypes(entity));
final AjaxDropDownChoicePanel<IntMappingType> intMappingTypes =
- new AjaxDropDownChoicePanel<IntMappingType>("intMappingTypes",
+ new AjaxDropDownChoicePanel<>("intMappingTypes",
new ResourceModel("intMappingTypes", "intMappingTypes").getObject(),
new PropertyModel<IntMappingType>(mapItem, "intMappingType"));
intMappingTypes.setRequired(true);
@@ -320,13 +310,13 @@ public class ResourceMappingPanel extends Panel {
intMappingTypes.setStyleSheet(FIELD_STYLE);
item.add(intMappingTypes);
- final AjaxDropDownChoicePanel<AttributableType> entitiesPanel =
- new AjaxDropDownChoicePanel<AttributableType>("entities",
- new ResourceModel("entities", "entities").getObject(), new Model<AttributableType>(
- entity));
- entitiesPanel.setChoices(attrType == AttributableType.GROUP
- ? Collections.<AttributableType>singletonList(AttributableType.GROUP)
- : Arrays.asList(AttributableType.values()));
+ final AjaxDropDownChoicePanel<AnyTypeKind> entitiesPanel =
+ new AjaxDropDownChoicePanel<>("entities",
+ new ResourceModel("entities", "entities").getObject(),
+ new Model<>(entity));
+ entitiesPanel.setChoices(anyTypeKind == AnyTypeKind.GROUP
+ ? Collections.<AnyTypeKind>singletonList(AnyTypeKind.GROUP)
+ : Arrays.asList(AnyTypeKind.values()));
entitiesPanel.setStyleSheet(DEF_FIELD_STYLE);
entitiesPanel.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
@@ -369,16 +359,16 @@ public class ResourceMappingPanel extends Panel {
mandatory.setStyleSheet(SHORT_FIELD_STYLE);
item.add(mandatory);
- final AjaxCheckBoxPanel accountId = new AjaxCheckBoxPanel("accountId",
- new ResourceModel("accountId", "accountId").getObject(),
- new PropertyModel<Boolean>(mapItem, "accountid"));
- accountId.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+ final AjaxCheckBoxPanel connObjectKey = new AjaxCheckBoxPanel("connObjectKey",
+ new ResourceModel("connObjectKey", "connObjectKey").getObject(),
+ new PropertyModel<Boolean>(mapItem, "connObjectKey"));
+ connObjectKey.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
- if (accountId.getModelObject()) {
+ if (connObjectKey.getModelObject()) {
mapItem.setMandatoryCondition("true");
mandatory.setEnabled(false);
} else {
@@ -388,7 +378,7 @@ public class ResourceMappingPanel extends Panel {
target.add(mandatory);
}
});
- item.add(accountId);
+ item.add(connObjectKey);
final AjaxCheckBoxPanel password = new AjaxCheckBoxPanel("password",
new ResourceModel("password", "password").getObject(),
@@ -399,17 +389,17 @@ public class ResourceMappingPanel extends Panel {
@Override
protected void onUpdate(final AjaxRequestTarget target) {
- extAttrNames.setEnabled(!mapItem.isAccountid() && !password.getModelObject());
+ extAttrNames.setEnabled(!mapItem.isConnObjectKey() && !password.getModelObject());
extAttrNames.setModelObject(null);
extAttrNames.setRequired(!password.getModelObject());
target.add(extAttrNames);
- setAccountId(intMappingTypes.getModelObject(), accountId, password);
- target.add(accountId);
+ setConnObjectKey(intMappingTypes.getModelObject(), connObjectKey, password);
+ target.add(connObjectKey);
}
});
item.add(password);
- if (AttributableType.USER != ResourceMappingPanel.this.attrType) {
+ if (AnyTypeKind.USER != ResourceMappingPanel.this.anyTypeKind) {
password.setVisible(false);
}
@@ -432,13 +422,13 @@ public class ResourceMappingPanel extends Panel {
setAttrNames(intMappingTypes.getModelObject(), intAttrNames);
target.add(intAttrNames);
- setAccountId(intMappingTypes.getModelObject(), accountId, password);
- target.add(accountId);
+ setConnObjectKey(intMappingTypes.getModelObject(), connObjectKey, password);
+ target.add(connObjectKey);
}
});
setAttrNames(mapItem.getIntMappingType(), intAttrNames);
- setAccountId(mapItem.getIntMappingType(), accountId, password);
+ setConnObjectKey(mapItem.getIntMappingType(), connObjectKey, password);
}
};
@@ -456,41 +446,41 @@ public class ResourceMappingPanel extends Panel {
}
};
addMappingBtn.setDefaultFormProcessing(false);
- addMappingBtn.setEnabled(this.resourceTO.getConnectorId() != null && this.resourceTO.getConnectorId() > 0);
+ addMappingBtn.setEnabled(this.resourceTO.getConnector() != null && this.resourceTO.getConnector() > 0);
mappingContainer.add(addMappingBtn);
- boolean accountLinkEnabled = false;
- if (getMapping().getAccountLink() != null) {
- accountLinkEnabled = true;
+ boolean connObjectLinkEnabled = false;
+ if (getMapping().getConnObjectLink() != null) {
+ connObjectLinkEnabled = true;
}
- accountLinkCheckbox = new AjaxCheckBoxPanel("accountLinkCheckbox",
- new ResourceModel("accountLinkCheckbox", "accountLinkCheckbox").getObject(),
- new Model<Boolean>(Boolean.valueOf(accountLinkEnabled)));
- accountLinkCheckbox.setEnabled(true);
+ connObjectLinkCheckbox = new AjaxCheckBoxPanel("connObjectLinkCheckbox",
+ new ResourceModel("connObjectLinkCheckbox", "connObjectLinkCheckbox").getObject(),
+ new Model<>(connObjectLinkEnabled));
+ connObjectLinkCheckbox.setEnabled(true);
- accountLinkContainer.add(accountLinkCheckbox);
+ connObjectLinkContainer.add(connObjectLinkCheckbox);
- final AjaxTextFieldPanel accountLink = new AjaxTextFieldPanel("accountLink",
- new ResourceModel("accountLink", "accountLink").getObject(),
- new PropertyModel<String>(getMapping(), "accountLink"));
- accountLink.setEnabled(accountLinkEnabled);
- accountLinkContainer.add(accountLink);
+ final AjaxTextFieldPanel connObjectLink = new AjaxTextFieldPanel("connObjectLink",
+ new ResourceModel("connObjectLink", "connObjectLink").getObject(),
+ new PropertyModel<String>(getMapping(), "connObjectLink"));
+ connObjectLink.setEnabled(connObjectLinkEnabled);
+ connObjectLinkContainer.add(connObjectLink);
- accountLinkCheckbox.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+ connObjectLinkCheckbox.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
- if (accountLinkCheckbox.getModelObject()) {
- accountLink.setEnabled(Boolean.TRUE);
- accountLink.setModelObject("");
+ if (connObjectLinkCheckbox.getModelObject()) {
+ connObjectLink.setEnabled(Boolean.TRUE);
+ connObjectLink.setModelObject("");
} else {
- accountLink.setEnabled(Boolean.FALSE);
- accountLink.setModelObject("");
+ connObjectLink.setEnabled(Boolean.FALSE);
+ connObjectLink.setModelObject("");
}
- target.add(accountLink);
+ target.add(connObjectLink);
}
});
}
@@ -504,25 +494,22 @@ public class ResourceMappingPanel extends Panel {
}
private void setEnabled() {
- final ConnInstanceTO connInstanceTO = new ConnInstanceTO();
- connInstanceTO.setKey(this.resourceTO.getConnectorId());
+ ConnInstanceTO connInstanceTO = new ConnInstanceTO();
+ connInstanceTO.setKey(this.resourceTO.getConnector());
connInstanceTO.getConfiguration().addAll(this.resourceTO.getConnConfProperties());
- List<ConnIdObjectClassTO> objectClasses = connRestClient.getSupportedObjectClasses(connInstanceTO);
+ boolean enabled = resourceTO.getProvision(anyTypeKind.name()) != null;
- boolean enabled = objectClasses.isEmpty()
- || (AttributableType.USER == attrType && objectClasses.contains(ConnIdObjectClassTO.ACCOUNT))
- || (AttributableType.GROUP == attrType && objectClasses.contains(ConnIdObjectClassTO.GROUP));
this.mappingContainer.setEnabled(enabled);
this.mappingContainer.setVisible(enabled);
- this.accountLinkContainer.setEnabled(enabled);
- this.accountLinkContainer.setVisible(enabled);
+ this.connObjectLinkContainer.setEnabled(enabled);
+ this.connObjectLinkContainer.setVisible(enabled);
if (!enabled) {
getMapping().getItems().clear();
- getMapping().setAccountLink(null);
- if (this.accountLinkCheckbox != null) {
- this.accountLinkCheckbox.setModelObject(null);
+ getMapping().setConnObjectLink(null);
+ if (this.connObjectLinkCheckbox != null) {
+ this.connObjectLinkCheckbox.setModelObject(null);
}
}
}
@@ -536,10 +523,10 @@ public class ResourceMappingPanel extends Panel {
mappings.removeAll();
- addMappingBtn.setEnabled(resourceTO.getConnectorId() != null && resourceTO.getConnectorId() > 0);
+ addMappingBtn.setEnabled(resourceTO.getConnector() != null && resourceTO.getConnector() > 0);
schemaNames.clear();
- schemaNames.addAll(getSchemaNames(resourceTO.getConnectorId(), new HashSet<ConnConfProperty>(conf)));
+ schemaNames.addAll(getSchemaNames(resourceTO.getConnector(), new HashSet<ConnConfProperty>(conf)));
setEnabled();
@@ -557,34 +544,35 @@ public class ResourceMappingPanel extends Panel {
toBeUpdated.setRequired(true);
toBeUpdated.setEnabled(true);
- if (type == null || type.getAttributableType() == null) {
+ if (type == null || type.getAnyTypeKind() == null) {
toBeUpdated.setChoices(Collections.<String>emptyList());
} else {
switch (type) {
// user attribute names
case UserPlainSchema:
case GroupPlainSchema:
- case MembershipPlainSchema:
- toBeUpdated.setChoices(schemaRestClient.getPlainSchemaNames(type.getAttributableType()));
+ case AnyObjectPlainSchema:
+ toBeUpdated.setChoices(schemaRestClient.getPlainSchemaNames());
break;
case UserDerivedSchema:
case GroupDerivedSchema:
- case MembershipDerivedSchema:
- toBeUpdated.setChoices(schemaRestClient.getDerSchemaNames(type.getAttributableType()));
+ case AnyObjectDerivedSchema:
+ toBeUpdated.setChoices(schemaRestClient.getDerSchemaNames());
break;
case UserVirtualSchema:
case GroupVirtualSchema:
- case MembershipVirtualSchema:
- toBeUpdated.setChoices(schemaRestClient.getVirSchemaNames(type.getAttributableType()));
+ case AnyObjectVirtualSchema:
+ toBeUpdated.setChoices(schemaRestClient.getVirSchemaNames());
break;
- case UserId:
+ case UserKey:
case Password:
case Username:
- case GroupId:
+ case GroupKey:
case GroupName:
+ case AnyObjectKey:
default:
toBeUpdated.setRequired(false);
toBeUpdated.setEnabled(false);
@@ -594,33 +582,33 @@ public class ResourceMappingPanel extends Panel {
}
/**
- * Enable/Disable accountId checkbox.
+ * Enable/Disable connObjectKey checkbox.
*
* @param type attribute type.
- * @param accountId accountId checkbox.
+ * @param connObjectKey connObjectKey checkbox.
* @param password password checkbox.
*/
- private void setAccountId(final IntMappingType type, final AjaxCheckBoxPanel accountId,
- final AjaxCheckBoxPanel password) {
+ private void setConnObjectKey(
+ final IntMappingType type, final AjaxCheckBoxPanel connObjectKey, final AjaxCheckBoxPanel password) {
- if (type != null && type.getAttributableType() != null) {
+ if (type != null && type.getAnyTypeKind() != null) {
switch (type) {
case UserVirtualSchema:
case GroupVirtualSchema:
- case MembershipVirtualSchema:
- // Virtual accountId is not permitted
+ case AnyObjectVirtualSchema:
+ // Virtual connObjectKey is not permitted
case Password:
- // AccountId cannot be derived from password.
- accountId.setReadOnly(true);
- accountId.setModelObject(false);
+ // connObjectKey cannot be derived from password.
+ connObjectKey.setReadOnly(true);
+ connObjectKey.setModelObject(false);
break;
default:
if (password.getModelObject()) {
- accountId.setReadOnly(true);
- accountId.setModelObject(false);
+ connObjectKey.setReadOnly(true);
+ connObjectKey.setModelObject(false);
} else {
- accountId.setReadOnly(false);
+ connObjectKey.setReadOnly(false);
}
}
}
@@ -632,11 +620,11 @@ public class ResourceMappingPanel extends Panel {
* @param entity entity.
* @return all attribute types.
*/
- private List<IntMappingType> getAttributeTypes(final AttributableType entity) {
+ private List<IntMappingType> getAttributeTypes(final AnyTypeKind entity) {
final List<IntMappingType> res = new ArrayList<>();
if (entity != null) {
- res.addAll(IntMappingType.getAttributeTypes(AttributableType.valueOf(entity.name())));
+ res.addAll(IntMappingType.getAttributeTypes(entity));
}
return res;