You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2015/11/19 12:18:29 UTC
syncope git commit: [SYNCOPE-156] providing wizard step to add
resources to ANY
Repository: syncope
Updated Branches:
refs/heads/master 1ffc62e57 -> 6ea34cd36
[SYNCOPE-156] providing wizard step to add resources to ANY
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/6ea34cd3
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/6ea34cd3
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/6ea34cd3
Branch: refs/heads/master
Commit: 6ea34cd36a4943537abf65eee1a94ef3982679b5
Parents: 1ffc62e
Author: fmartelli <fa...@gmail.com>
Authored: Thu Nov 19 12:17:52 2015 +0100
Committer: fmartelli <fa...@gmail.com>
Committed: Thu Nov 19 12:17:52 2015 +0100
----------------------------------------------------------------------
.../client/console/commons/AnyDataProvider.java | 4 +-
.../panels/AbstractSearchResultPanel.java | 8 +-
.../panels/AnyObjectSearchResultPanel.java | 250 +++++++++++++++++++
.../console/panels/AnySearchResultPanel.java | 250 -------------------
.../console/panels/GroupSearchResultPanel.java | 2 +-
.../syncope/client/console/panels/Realm.java | 2 +-
.../console/panels/UserSearchResultPanel.java | 2 +-
.../client/console/rest/UserRestClient.java | 6 +-
.../markup/html/form/AjaxPalettePanel.java | 2 +-
.../console/wizards/any/AnyWizardBuilder.java | 12 +-
.../client/console/wizards/any/AuxClasses.java | 5 +-
.../client/console/wizards/any/Resources.java | 67 +++++
.../console/wizards/any/UserWizardBuilder.java | 1 -
.../client/console/wizards/any/Resources.html | 26 ++
14 files changed, 361 insertions(+), 276 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/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
index 6a2d226..f36d3c5 100644
--- 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
@@ -95,9 +95,7 @@ public class AnyDataProvider<T extends AnyTO> extends SortableDataProvider<T, St
long result;
if (filtered) {
- result = fiql == null
- ? 0
- : restClient.searchCount(realm, fiql, type);
+ result = fiql == null ? 0 : restClient.searchCount(realm, fiql, type);
} else {
result = restClient.count(type, realm);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/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 4907f77..9c534d0 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
@@ -191,10 +191,7 @@ public abstract class AbstractSearchResultPanel<T extends AnyTO> extends WizardM
dataProvider.setFIQL(fiql);
final int currentPage = resultTable != null
- ? (create
- ? (int) resultTable.getPageCount() - 1
- : (int) resultTable.getCurrentPage())
- : 0;
+ ? (create ? (int) resultTable.getPageCount() - 1 : (int) resultTable.getCurrentPage()) : 0;
resultTable = new AjaxDataTablePanel<>(
"resultTable",
@@ -303,8 +300,7 @@ public abstract class AbstractSearchResultPanel<T extends AnyTO> extends WizardM
/**
* Specify if results are about a filtered search or not. Using this attribute it is possible to use this panel
- * to
- * show results about user list and user search.
+ * to show results about user list and user search.
*/
protected final boolean filtered;
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
new file mode 100644
index 0000000..0d9c7ed
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectSearchResultPanel.java
@@ -0,0 +1,250 @@
+/*
+ * 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.panels;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.AnyDisplayAttributesModalPage;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
+import org.apache.syncope.client.console.rest.SchemaRestClient;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AttrColumn;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+import org.springframework.util.ReflectionUtils;
+
+public class AnyObjectSearchResultPanel<T extends AnyTO> extends AbstractSearchResultPanel<T> {
+
+ private static final long serialVersionUID = -1100228004207271270L;
+
+ protected final SchemaRestClient schemaRestClient = new SchemaRestClient();
+
+ protected final List<String> schemaNames;
+
+ protected final List<String> dSchemaNames;
+
+ protected final String pageID = "Any";
+
+ protected final String entitlement;
+
+ protected AnyObjectSearchResultPanel(
+ final String type,
+ final String parentId,
+ final boolean filtered,
+ final String fiql,
+ final PageReference callerRef,
+ final AbstractAnyRestClient<T> restClient,
+ final List<AnyTypeClassTO> anyTypeClassTOs,
+ final String realm,
+ final String entitlement) {
+
+ super(parentId, filtered, fiql, callerRef, restClient, realm, type);
+ modal.size(Modal.Size.Large);
+
+ this.entitlement = entitlement;
+
+ add(new Label("name", type));
+
+ this.schemaNames = new ArrayList<>();
+ for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
+ this.schemaNames.addAll(anyTypeClassTO.getPlainSchemas());
+ }
+ this.dSchemaNames = new ArrayList<>();
+ for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
+ this.dSchemaNames.addAll(anyTypeClassTO.getDerSchemas());
+ }
+
+ initResultTable();
+ }
+
+ @Override
+ protected List<IColumn<T, String>> getColumns() {
+ final List<IColumn<T, String>> columns = new ArrayList<>();
+
+ for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_DETAILS_VIEW)) {
+ final Field field = ReflectionUtils.findField(AnyObjectTO.class, name);
+
+ if ("token".equalsIgnoreCase(name)) {
+ columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
+ } else if (field != null && field.getType().equals(Date.class)) {
+ columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
+ } else {
+ columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
+ }
+ }
+
+ for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_ATTRIBUTES_VIEW)) {
+ if (schemaNames.contains(name)) {
+ columns.add(new AttrColumn<T>(name, SchemaType.PLAIN));
+ }
+ }
+
+ for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_DERIVED_ATTRIBUTES_VIEW)) {
+ if (dSchemaNames.contains(name)) {
+ columns.add(new AttrColumn<T>(name, SchemaType.DERIVED));
+ }
+ }
+
+ // Add defaults in case of no selection
+ if (columns.isEmpty()) {
+ for (String name : AnyDisplayAttributesModalPage.ANY_DEFAULT_SELECTION) {
+ columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
+ }
+
+ }
+
+ columns.add(new ActionColumn<T, String>(new ResourceModel("actions", "")) {
+
+ private static final long serialVersionUID = -3503023501954863131L;
+
+ @Override
+ public ActionLinksPanel<T> getActions(final String componentId, final IModel<T> model) {
+ final ActionLinksPanel.Builder<T> panel = ActionLinksPanel.builder(page.getPageReference());
+
+ panel.add(new ActionLink<T>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final AnyTO anyTO) {
+ send(AnyObjectSearchResultPanel.this, Broadcast.EXACT,
+ new AjaxWizard.EditItemActionEvent<>(model.getObject(), target));
+ }
+ }, ActionLink.ActionType.EDIT, entitlement).add(new ActionLink<T>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final T anyTO) {
+ try {
+ restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ error(getString(Constants.ERROR) + ": " + e.getMessage());
+ LOG.error("While deleting object {}", anyTO.getKey(), e);
+ }
+ ((BasePage) getPage()).getFeedbackPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, entitlement);
+
+ return panel.build(componentId, model.getObject());
+ }
+
+ @Override
+ public ActionLinksPanel<Serializable> getHeader(final String componentId) {
+ final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder(page.getPageReference());
+
+ panel.add(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ // still missing content
+ target.add(modal.setContent(new AnyDisplayAttributesModalPage<>(
+ modal, page.getPageReference(), schemaNames, dSchemaNames)));
+
+ modal.header(new ResourceModel("any.attr.display", ""));
+ modal.show(true);
+ }
+ }, ActionLink.ActionType.CHANGE_VIEW, entitlement).add(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ if (target != null) {
+ target.add(container);
+ }
+ }
+ }, ActionLink.ActionType.RELOAD, entitlement);
+
+ return panel.build(componentId);
+ }
+ });
+
+ return columns;
+ }
+
+ @Override
+ protected <T extends AnyTO> Collection<ActionLink.ActionType> getBulkActions() {
+ final List<ActionLink.ActionType> bulkActions = new ArrayList<>();
+
+ bulkActions.add(ActionLink.ActionType.DELETE);
+ bulkActions.add(ActionLink.ActionType.SUSPEND);
+ bulkActions.add(ActionLink.ActionType.REACTIVATE);
+
+ return bulkActions;
+ }
+
+ @Override
+ protected String getPageId() {
+ return pageID;
+ }
+
+ public static final class Builder extends AbstractSearchResultPanel.Builder<AnyObjectTO> {
+
+ private static final long serialVersionUID = -6828423611982275640L;
+
+ private final List<AnyTypeClassTO> anyTypeClassTOs;
+
+ public Builder(
+ final boolean filtered,
+ final String fiql,
+ final PageReference pageRef,
+ final AbstractAnyRestClient<AnyObjectTO> restClient,
+ final List<AnyTypeClassTO> anyTypeClassTOs,
+ final String realm,
+ final String type) {
+
+ super(AnyObjectTO.class, filtered, fiql, pageRef, restClient, realm, type);
+ this.anyTypeClassTOs = anyTypeClassTOs;
+ }
+
+ @Override
+ protected WizardMgtPanel<AnyObjectTO> newInstance(final String parentId) {
+ return new AnyObjectSearchResultPanel<>(
+ type, parentId, filtered, fiql, pageRef, restClient, anyTypeClassTOs, realm, type + "_LIST");
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
deleted file mode 100644
index 77ca759..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
+++ /dev/null
@@ -1,250 +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.panels;
-
-import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.AnyDisplayAttributesModalPage;
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
-import org.apache.syncope.client.console.rest.SchemaRestClient;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AttrColumn;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
-import org.apache.syncope.client.console.wizards.AjaxWizard;
-import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.AnyTypeClassTO;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
-import org.springframework.util.ReflectionUtils;
-
-public class AnySearchResultPanel<T extends AnyTO> extends AbstractSearchResultPanel<T> {
-
- private static final long serialVersionUID = -1100228004207271270L;
-
- protected final SchemaRestClient schemaRestClient = new SchemaRestClient();
-
- protected final List<String> schemaNames;
-
- protected final List<String> dSchemaNames;
-
- protected final String pageID = "Any";
-
- protected final String entitlement;
-
- protected AnySearchResultPanel(
- final String type,
- final String parentId,
- final boolean filtered,
- final String fiql,
- final PageReference callerRef,
- final AbstractAnyRestClient<T> restClient,
- final List<AnyTypeClassTO> anyTypeClassTOs,
- final String realm,
- final String entitlement) {
-
- super(parentId, filtered, fiql, callerRef, restClient, realm, type);
- modal.size(Modal.Size.Large);
-
- this.entitlement = entitlement;
-
- add(new Label("name", type));
-
- this.schemaNames = new ArrayList<>();
- for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
- this.schemaNames.addAll(anyTypeClassTO.getPlainSchemas());
- }
- this.dSchemaNames = new ArrayList<>();
- for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
- this.dSchemaNames.addAll(anyTypeClassTO.getDerSchemas());
- }
-
- initResultTable();
- }
-
- @Override
- protected List<IColumn<T, String>> getColumns() {
- final List<IColumn<T, String>> columns = new ArrayList<>();
-
- for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_DETAILS_VIEW)) {
- final Field field = ReflectionUtils.findField(AnyObjectTO.class, name);
-
- if ("token".equalsIgnoreCase(name)) {
- columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
- } else if (field != null && field.getType().equals(Date.class)) {
- columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
- } else {
- columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
- }
- }
-
- for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_ATTRIBUTES_VIEW)) {
- if (schemaNames.contains(name)) {
- columns.add(new AttrColumn<T>(name, SchemaType.PLAIN));
- }
- }
-
- for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_DERIVED_ATTRIBUTES_VIEW)) {
- if (dSchemaNames.contains(name)) {
- columns.add(new AttrColumn<T>(name, SchemaType.DERIVED));
- }
- }
-
- // Add defaults in case of no selection
- if (columns.isEmpty()) {
- for (String name : AnyDisplayAttributesModalPage.ANY_DEFAULT_SELECTION) {
- columns.add(new PropertyColumn<T, String>(new ResourceModel(name, name), name, name));
- }
-
- }
-
- columns.add(new ActionColumn<T, String>(new ResourceModel("actions", "")) {
-
- private static final long serialVersionUID = -3503023501954863131L;
-
- @Override
- public ActionLinksPanel<T> getActions(final String componentId, final IModel<T> model) {
- final ActionLinksPanel.Builder<T> panel = ActionLinksPanel.builder(page.getPageReference());
-
- panel.add(new ActionLink<T>() {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final AnyTO anyTO) {
- send(AnySearchResultPanel.this, Broadcast.EXACT,
- new AjaxWizard.EditItemActionEvent<>(model.getObject(), target));
- }
- }, ActionLink.ActionType.EDIT, entitlement).add(new ActionLink<T>() {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final T anyTO) {
- try {
- restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
- info(getString(Constants.OPERATION_SUCCEEDED));
- target.add(container);
- } catch (SyncopeClientException e) {
- error(getString(Constants.ERROR) + ": " + e.getMessage());
- LOG.error("While deleting object {}", anyTO.getKey(), e);
- }
- ((BasePage) getPage()).getFeedbackPanel().refresh(target);
- }
- }, ActionLink.ActionType.DELETE, entitlement);
-
- return panel.build(componentId, model.getObject());
- }
-
- @Override
- public ActionLinksPanel<Serializable> getHeader(final String componentId) {
- final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder(page.getPageReference());
-
- panel.add(new ActionLink<Serializable>() {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
- // still missing content
- target.add(modal.setContent(new AnyDisplayAttributesModalPage<>(
- modal, page.getPageReference(), schemaNames, dSchemaNames)));
-
- modal.header(new ResourceModel("any.attr.display", ""));
- modal.show(true);
- }
- }, ActionLink.ActionType.CHANGE_VIEW, entitlement).add(new ActionLink<Serializable>() {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
- if (target != null) {
- target.add(container);
- }
- }
- }, ActionLink.ActionType.RELOAD, entitlement);
-
- return panel.build(componentId);
- }
- });
-
- return columns;
- }
-
- @Override
- protected <T extends AnyTO> Collection<ActionLink.ActionType> getBulkActions() {
- final List<ActionLink.ActionType> bulkActions = new ArrayList<>();
-
- bulkActions.add(ActionLink.ActionType.DELETE);
- bulkActions.add(ActionLink.ActionType.SUSPEND);
- bulkActions.add(ActionLink.ActionType.REACTIVATE);
-
- return bulkActions;
- }
-
- @Override
- protected String getPageId() {
- return pageID;
- }
-
- public static final class Builder extends AbstractSearchResultPanel.Builder<AnyObjectTO> {
-
- private static final long serialVersionUID = -6828423611982275640L;
-
- private final List<AnyTypeClassTO> anyTypeClassTOs;
-
- public Builder(
- final boolean filtered,
- final String fiql,
- final PageReference pageRef,
- final AbstractAnyRestClient<AnyObjectTO> restClient,
- final List<AnyTypeClassTO> anyTypeClassTOs,
- final String realm,
- final String type) {
-
- super(AnyObjectTO.class, filtered, fiql, pageRef, restClient, realm, type);
- this.anyTypeClassTOs = anyTypeClassTOs;
- }
-
- @Override
- protected WizardMgtPanel<AnyObjectTO> newInstance(final String parentId) {
- return new AnySearchResultPanel<>(
- type, parentId, filtered, fiql, pageRef, restClient, anyTypeClassTOs, realm, type + "_LIST");
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
index 186e766..86ccb13 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
@@ -51,7 +51,7 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.springframework.util.ReflectionUtils;
-public final class GroupSearchResultPanel extends AnySearchResultPanel<GroupTO> {
+public final class GroupSearchResultPanel extends AnyObjectSearchResultPanel<GroupTO> {
private static final long serialVersionUID = -1100228004207271270L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
index edf35ee..626bcaa 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
@@ -143,7 +143,7 @@ public class Realm extends Panel {
final AnyObjectTO anyObjectTO = new AnyObjectTO();
anyObjectTO.setRealm(realmTO.getFullPath());
anyObjectTO.setType(anyTypeTO.getKey());
- panel = new AnySearchResultPanel.Builder(
+ panel = new AnyObjectSearchResultPanel.Builder(
false, null, pageReference, anyObjectRestClient,
anyTypeRestClient.getAnyTypeClass(anyTypeTO.getClasses().toArray(new String[] {})),
realmTO.getFullPath(),
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
index 1fd3289..3e7ce11 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
@@ -55,7 +55,7 @@ import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.springframework.util.ReflectionUtils;
-public final class UserSearchResultPanel extends AnySearchResultPanel<UserTO> {
+public final class UserSearchResultPanel extends AnyObjectSearchResultPanel<UserTO> {
private static final long serialVersionUID = -1100228004207271270L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
index 8fb4a6e..dd79b3a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
@@ -65,8 +65,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
final String type) {
return getService(UserService.class).
list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(page).size(size).
- orderBy(toOrderBy(sort)).details(false).build()).
- getResult();
+ orderBy(toOrderBy(sort)).details(false).build()).getResult();
}
public ProvisioningResult<UserTO> create(final UserTO userTO, final boolean storePassword) {
@@ -115,8 +114,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
return getService(UserService.class).
search(SyncopeClient.getAnySearchQueryBuilder().realm(realm).fiql(fiql).page(page).size(size).
- orderBy(toOrderBy(sort)).details(false).build()).
- getResult();
+ orderBy(toOrderBy(sort)).details(false).build()).getResult();
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
index 97866e3..bb86e7f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
@@ -51,7 +51,7 @@ public class AjaxPalettePanel<T> extends AbstractFieldPanel<List<T>> {
setOutputMarkupId(true);
}
- protected Palette<T> createPalette(final IModel<List<T>> model, final ListModel<T> choices,
+ protected final Palette<T> createPalette(final IModel<List<T>> model, final ListModel<T> choices,
final IChoiceRenderer<T> renderer, final boolean allowOrder, final boolean allowMoveAll) {
return new NonI18nPalette<>("paletteField", model, choices, renderer, 8, allowOrder, allowMoveAll);
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
index a722223..92ae247 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
@@ -16,8 +16,10 @@
package org.apache.syncope.client.console.wizards.any;
import java.io.Serializable;
+
import java.util.Collections;
import java.util.List;
+
import org.apache.syncope.client.console.commons.Mode;
import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.rest.AnyTypeRestClient;
@@ -55,11 +57,13 @@ public class AnyWizardBuilder<T extends AnyTO> extends AjaxWizardBuilder<T> impl
@Override
protected WizardModel buildModelSteps(final T modelObject, final WizardModel wizardModel) {
+ final String[] clazzes = anyTypeClasses.toArray(new String[] {});
addOptionalDetailsPanel(modelObject, wizardModel);
- wizardModel.add(new AuxClasses(modelObject, anyTypeClasses.toArray(new String[] {})));
- wizardModel.add(new PlainAttrs(modelObject, null, Mode.ADMIN, anyTypeClasses.toArray(new String[] {})));
- wizardModel.add(new DerAttrs(modelObject, anyTypeClasses.toArray(new String[] {})));
- wizardModel.add(new VirAttrs(modelObject, anyTypeClasses.toArray(new String[] {})));
+ wizardModel.add(new AuxClasses(modelObject, clazzes));
+ wizardModel.add(new PlainAttrs(modelObject, null, Mode.ADMIN, clazzes));
+ wizardModel.add(new DerAttrs(modelObject, clazzes));
+ wizardModel.add(new VirAttrs(modelObject, clazzes));
+ wizardModel.add(new Resources(modelObject));
return wizardModel;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
index a33df7c..c30ad98 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
@@ -34,11 +34,8 @@ public class AuxClasses extends WizardStep {
private static final long serialVersionUID = 552437609667518888L;
- private final AnyTO entityTO;
-
public <T extends AnyTO> AuxClasses(final T entityTO, final String... anyTypeClass) {
this.setOutputMarkupId(true);
- this.entityTO = entityTO;
final AnyTypeClassService service = SyncopeConsoleSession.get().getService(AnyTypeClassService.class);
@@ -53,7 +50,7 @@ public class AuxClasses extends WizardStep {
add(new AjaxPalettePanel<>(
"auxClasses",
- new PropertyModel<List<String>>(this.entityTO, "auxClasses"),
+ new PropertyModel<List<String>>(entityTO, "auxClasses"),
new ListModel<>(choices),
true).setOutputMarkupId(true));
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
new file mode 100644
index 0000000..194bbce
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
@@ -0,0 +1,67 @@
+/*
+ * 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.wizards.any;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.rest.api.service.ResourceService;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.util.ListModel;
+
+public class Resources extends WizardStep {
+
+ private static final long serialVersionUID = 552437609667518888L;
+
+ public <T extends AnyTO> Resources(final T entityTO) {
+ this.setOutputMarkupId(true);
+
+ add(new AjaxPalettePanel<>("resources",
+ new PropertyModel<List<String>>(entityTO, "resources") {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public List<String> getObject() {
+ return new ArrayList<>(entityTO.getResources());
+ }
+
+ @Override
+ public void setObject(final List<String> object) {
+ entityTO.getResources().clear();
+ entityTO.getResources().addAll(object);
+ }
+ },
+ new ListModel<>(CollectionUtils.collect(
+ SyncopeConsoleSession.get().getService(ResourceService.class).list(),
+ new Transformer<ResourceTO, String>() {
+
+ @Override
+ public String transform(final ResourceTO input) {
+ return input.getKey();
+ }
+ }, new ArrayList<String>()))).setOutputMarkupId(true));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
index 0e15e16..f18e6dd 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
@@ -60,7 +60,6 @@ public class UserWizardBuilder extends AnyWizardBuilder<UserTO> {
actual = userRestClient.create(modelObject, StringUtils.isNotBlank(modelObject.getPassword()));
} else {
final UserPatch patch = AnyOperations.diff(modelObject, getOriginalItem(), true);
-
if (!statusModel.getObject().isEmpty()) {
patch.setPassword(StatusUtils.buildPasswordPatch(modelObject.getPassword(), statusModel.getObject()));
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/6ea34cd3/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Resources.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Resources.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Resources.html
new file mode 100644
index 0000000..7ae16d6
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Resources.html
@@ -0,0 +1,26 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <head><title></title></head>
+ <body>
+ <wicket:panel>
+ <span wicket:id="resources">[RESOURCES]</span>
+ </wicket:panel>
+ </body>
+</html>
\ No newline at end of file