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 2017/07/28 07:50:28 UTC
[2/2] syncope git commit: [SYNCOPE-1167] Preliminary AnyType
selection when adding new provision rule - This closes #57
[SYNCOPE-1167] Preliminary AnyType selection when adding new provision rule - This closes #57
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/e06d18ae
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/e06d18ae
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/e06d18ae
Branch: refs/heads/master
Commit: e06d18ae329547fbf42924593fd68dd2d74dcbb6
Parents: 64ef5bf
Author: Matteo Alessandroni <ma...@tirasa.net>
Authored: Tue Jul 25 16:27:43 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Jul 28 09:50:10 2017 +0200
----------------------------------------------------------------------
.../console/wizards/AjaxWizardBuilder.java | 2 +-
.../client/console/wizards/WizardMgtPanel.java | 10 +++
.../resources/ObjectTypeTogglePanel.java | 85 ++++++++++++++++++
.../resources/ProvisionWizardBuilder.java | 84 ++++-------------
.../resources/ResourceProvisionPanel.java | 95 +++++++++++++++++++-
.../resources/ObjectTypeTogglePanel.html | 32 +++++++
.../resources/ObjectTypeTogglePanel.properties | 22 +++++
.../ObjectTypeTogglePanel_it.properties | 22 +++++
.../ObjectTypeTogglePanel_pt_BR.properties | 22 +++++
.../ObjectTypeTogglePanel_ru.properties | 22 +++++
.../ProvisionWizardBuilder$ObjectType.html | 3 -
...ProvisionWizardBuilder$ObjectType.properties | 7 +-
...visionWizardBuilder$ObjectType_it.properties | 6 +-
...ionWizardBuilder$ObjectType_pt_BR.properties | 8 +-
...visionWizardBuilder$ObjectType_ru.properties | 8 +-
.../resources/ResourceProvisionPanel.html | 5 +-
.../syncope/fit/console/TopologyITCase.java | 26 +++++-
17 files changed, 362 insertions(+), 97 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
index 9e3c6e4..32514ad 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
@@ -87,7 +87,7 @@ public abstract class AjaxWizardBuilder<T extends Serializable> extends Abstract
public AjaxWizard<T> build(final String id, final AjaxWizard.Mode mode) {
this.mode = mode;
- // ge the specified item if available
+ // get the specified item if available
final T modelObject = newModelObject();
return new AjaxWizard<T>(id, modelObject, buildModelSteps(modelObject, new WizardModel()), mode, this.pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
index 0ade92c..509dd92 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
@@ -296,6 +296,16 @@ public abstract class WizardMgtPanel<T extends Serializable> extends Panel imple
public MarkupContainer addInnerObject(final Component... childs) {
return initialFragment.add(childs);
}
+
+ /**
+ * Add or replace object inside the main container.
+ *
+ * @param childs components to be added.
+ * @return the current panel instance.
+ */
+ public MarkupContainer addOrReplaceInnerObject(final Component... childs) {
+ return initialFragment.addOrReplace(childs);
+ }
/**
* Add object outside the main container.
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.java
new file mode 100644
index 0000000..9e26700
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.java
@@ -0,0 +1,85 @@
+/*
+ * 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.resources;
+
+import java.io.Serializable;
+import java.util.List;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.panels.TogglePanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.PropertyModel;
+
+public abstract class ObjectTypeTogglePanel extends TogglePanel<Serializable> {
+
+ private static final long serialVersionUID = -1366846136630731264L;
+
+ protected PropertyModel<String> typeModel;
+
+ private final Form<Object> form;
+
+ ObjectTypeTogglePanel(
+ final String id,
+ final ResourceProvision item,
+ final LoadableDetachableModel<List<String>> anyTypes,
+ final PageReference pageRef) {
+ super(id, pageRef);
+
+ form = new Form<>("objectTypeForm");
+ addInnerObject(form);
+
+ typeModel = new PropertyModel<>(item, "anyType");
+
+ form.add(new AjaxDropDownChoicePanel<>(
+ "type", "type", typeModel, false).
+ setNullValid(false).
+ setChoices(anyTypes).
+ setStyleSheet("form-control").
+ hideLabel());
+
+ form.add(new AjaxSubmitLink("changeit", form) {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ ObjectTypeTogglePanel.this.onSubmit(typeModel.getObject(), target);
+ target.add(form);
+ toggle(target, false);
+
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+
+ @Override
+ protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ });
+ }
+
+ protected abstract void onSubmit(final String type, final AjaxRequestTarget target);
+
+ public void setHeaderLabel(final AjaxRequestTarget target) {
+ setHeader(target, getString("type"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
index e13d6bb..2ade6cf 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
@@ -19,25 +19,18 @@
package org.apache.syncope.client.console.wizards.resources;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.Predicate;
-import org.apache.commons.collections4.Transformer;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.commons.ConnIdSpecialName;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.panels.ProvisionAuxClassesPanel;
-import org.apache.syncope.client.console.rest.AnyTypeRestClient;
import org.apache.syncope.client.console.rest.ConnectorRestClient;
import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
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.wizards.AjaxWizardBuilder;
-import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.MappingTO;
import org.apache.syncope.common.lib.to.ProvisionTO;
import org.apache.syncope.common.lib.to.ResourceTO;
@@ -47,7 +40,6 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.wizard.WizardModel;
import org.apache.wicket.extensions.wizard.WizardStep;
import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
@@ -61,36 +53,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision>
private final ResourceTO resourceTO;
- private final LoadableDetachableModel<List<String>> anyTypes = new LoadableDetachableModel<List<String>>() {
-
- private static final long serialVersionUID = 5275935387613157437L;
-
- @Override
- protected List<String> load() {
- final List<String> currentlyAdded = new ArrayList<>();
-
- CollectionUtils.collect(resourceTO.getProvisions(), new Transformer<ProvisionTO, String>() {
-
- @Override
- public String transform(final ProvisionTO provisionTO) {
- return provisionTO.getAnyType();
- }
- }, currentlyAdded);
-
- List<String> result = ListUtils.select(new AnyTypeRestClient().list(), new Predicate<String>() {
-
- @Override
- public boolean evaluate(final String key) {
- return !currentlyAdded.contains(key);
- }
- });
- if (resourceTO.getOrgUnit() == null) {
- result.add(0, SyncopeConstants.REALM_ANYTYPE);
- }
-
- return result;
- }
- };
+ protected AjaxTextFieldPanel clazz;
/**
* The object type specification step.
@@ -100,41 +63,30 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision>
private static final long serialVersionUID = -1657800545799468278L;
ObjectType(final ResourceProvision item) {
- super(new ResourceModel("type.title", StringUtils.EMPTY),
- new ResourceModel("type.summary", StringUtils.EMPTY), new Model<>(item));
+ super(new ResourceModel("clazz.title", StringUtils.EMPTY),
+ new ResourceModel("clazz.summary", StringUtils.EMPTY), new Model<>(item));
final WebMarkupContainer container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
add(container);
- final FieldPanel<String> type = new AjaxDropDownChoicePanel<>(
- "type", "type", new PropertyModel<String>(item, "anyType"), false).
- setChoices(anyTypes).
- setStyleSheet("form-control").
- setRequired(true);
- container.add(type);
-
- final AjaxTextFieldPanel clazz = new AjaxTextFieldPanel(
+ clazz = new AjaxTextFieldPanel(
"clazz", "clazz", new PropertyModel<String>(item, "objectClass"));
clazz.setRequired(true);
clazz.setChoices(connectorRestClient.getObjectClasses(resourceTO.getConnector()));
container.add(clazz);
+ }
+ }
- type.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- if (AnyTypeKind.USER.name().equals(type.getModelObject())) {
- clazz.setModelObject(ConnIdSpecialName.ACCOUNT);
- target.add(container);
- } else if (AnyTypeKind.GROUP.name().equals(type.getModelObject())) {
- clazz.setModelObject(ConnIdSpecialName.GROUP);
- target.add(container);
- }
- }
- });
+ protected void setObjectClassModelObject(final String type) {
+ if (clazz != null) {
+ if (AnyTypeKind.USER.name().equals(type)) {
+ clazz.setModelObject(ConnIdSpecialName.ACCOUNT);
+ } else if (AnyTypeKind.GROUP.name().equals(type)) {
+ clazz.setModelObject(ConnIdSpecialName.GROUP);
+ } else {
+ clazz.setModelObject("");
+ }
}
}
@@ -230,12 +182,12 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision>
/**
* Construct.
*
- * @param resurceTO external resource to be updated.
+ * @param resourceTO external resource to be updated.
* @param pageRef Caller page reference.
*/
- public ProvisionWizardBuilder(final ResourceTO resurceTO, final PageReference pageRef) {
+ public ProvisionWizardBuilder(final ResourceTO resourceTO, final PageReference pageRef) {
super(new ResourceProvision(), pageRef);
- this.resourceTO = resurceTO;
+ this.resourceTO = resourceTO;
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index 26ce5d5..fa13fc7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -23,9 +23,12 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.IterableUtils;
import org.apache.commons.collections4.IteratorUtils;
+import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.Predicate;
+import org.apache.commons.collections4.Transformer;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.Constants;
@@ -37,6 +40,7 @@ import org.apache.syncope.client.console.rest.AnyTypeRestClient;
import org.apache.syncope.client.console.rest.ResourceRestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.common.lib.SyncopeClientException;
@@ -47,8 +51,10 @@ import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
@@ -62,6 +68,14 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
private final List<ResourceProvision> provisions;
+ private final ObjectTypeTogglePanel objectTypeTogglePanel;
+
+ private final WizardMgtPanel<ResourceProvision> list;
+
+ private final ProvisionWizardBuilder wizard;
+
+ private final AjaxLink<ResourceProvision> addAjaxLink;
+
public ResourceProvisionPanel(
final BaseModal<Serializable> modal,
final ResourceTO resourceTO,
@@ -72,7 +86,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
setOutputMarkupId(true);
- final ProvisionWizardBuilder wizard = new ProvisionWizardBuilder(resourceTO, pageRef);
+ wizard = new ProvisionWizardBuilder(resourceTO, pageRef);
final ListViewPanel.Builder<ResourceProvision> builder = new ListViewPanel.Builder<ResourceProvision>(
ResourceProvision.class, pageRef) {
@@ -111,6 +125,8 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
@Override
protected void customActionOnFinishCallback(final AjaxRequestTarget target) {
+ checkAddButton();
+
// keep list ordered - SYNCOPE-1154
sortProvisions();
@@ -141,7 +157,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
public void onClick(final AjaxRequestTarget target, final ResourceProvision provision) {
try {
send(ResourceProvisionPanel.this, Broadcast.DEPTH,
- new AjaxWizard.NewItemActionEvent<>(provision, 2, target).setResourceModel(
+ new AjaxWizard.NewItemActionEvent<>(provision, 1, target).setResourceModel(
new StringResourceModel("inner.provision.mapping",
ResourceProvisionPanel.this,
Model.of(provision))));
@@ -201,14 +217,53 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
resourceTO.getProvisions().remove(provision.getProvisionTO());
}
provisions.remove(provision);
+ checkAddButton();
send(ResourceProvisionPanel.this, Broadcast.DEPTH, new ListViewReload<>(target));
}
}, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_UPDATE);
builder.addNewItemPanelBuilder(wizard);
- final WizardMgtPanel<ResourceProvision> list = builder.build("provision");
+ list = builder.build("provision");
+
+ addAjaxLink = new AjaxLink<ResourceProvision>("add") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ objectTypeTogglePanel.setHeaderLabel(target);
+ objectTypeTogglePanel.toggle(target, true);
+ }
+ };
+ list.addOrReplaceInnerObject(addAjaxLink);
add(list);
+
+ // ----------------------------------------------------------------------
+ // toggle panel, used to choose 'type' before starting wizard - SYNCOPE-1167
+ final ResourceProvision provision = new ResourceProvision();
+ provision.setAnyType("");
+ objectTypeTogglePanel =
+ new ObjectTypeTogglePanel("objectTypeToggle", provision, getAnyTypes(), pageRef) {
+
+ private static final long serialVersionUID = 7878063325027015067L;
+
+ @Override
+ protected void onSubmit(final String type, final AjaxRequestTarget target) {
+
+ provision.setAnyType(type);
+
+ send(list, Broadcast.BREADTH,
+ new ActionLinksTogglePanel.ActionLinkToggleCloseEventPayload(target));
+ send(list, Broadcast.DEPTH,
+ new AjaxWizard.NewItemActionEvent<>(provision, target));
+
+ wizard.setObjectClassModelObject(type);
+ }
+
+ };
+ checkAddButton();
+ add(objectTypeTogglePanel);
}
private void checkConnObjectKeyCount(final String anyType, final List<ItemTO> items) {
@@ -263,4 +318,38 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
}
});
}
+
+ private LoadableDetachableModel<List<String>> getAnyTypes() {
+ return new LoadableDetachableModel<List<String>>() {
+
+ private static final long serialVersionUID = 5275935387613157437L;
+
+ @Override
+ protected List<String> load() {
+ final List<String> currentlyAdded = new ArrayList<>();
+
+ CollectionUtils.collect(resourceTO.getProvisions(), new Transformer<ProvisionTO, String>() {
+
+ @Override
+ public String transform(final ProvisionTO provisionTO) {
+ return provisionTO.getAnyType();
+ }
+ }, currentlyAdded);
+
+ return ListUtils.select(new AnyTypeRestClient().list(), new Predicate<String>() {
+
+ @Override
+ public boolean evaluate(final String key) {
+ return !currentlyAdded.contains(key);
+ }
+ });
+ }
+ };
+ }
+
+ private void checkAddButton() {
+ boolean test = !getAnyTypes().getObject().isEmpty();
+ addAjaxLink.setVisible(test);
+ objectTypeTogglePanel.setEnabled(test);
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.html
new file mode 100644
index 0000000..cea7a63
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.html
@@ -0,0 +1,32 @@
+<!--
+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">
+ <wicket:extend>
+ <div id="startAtContainer">
+ <form wicket:id="objectTypeForm">
+ <div class="input-group">
+ <span wicket:id="type"/>
+ <div class="input-group-addon">
+ <a wicket:id="changeit"><i class="fa fa-list-alt" alt="object type icon" title="ObjectType"></i></a>
+ </div>
+ </div>
+ </form>
+ </div>
+ </wicket:extend>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.properties
new file mode 100644
index 0000000..e966cde
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel.properties
@@ -0,0 +1,22 @@
+# 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.
+
+type.title=Specify the type of the provisioning object
+type.summary=
+
+type=Type
+type.Required=Type is required
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_it.properties
new file mode 100644
index 0000000..263c9f1
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_it.properties
@@ -0,0 +1,22 @@
+# 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.
+
+type.title=Specifica il tipo del provisioning
+type.summary=
+
+type=Type
+type.Required=Type \u00e8 richiesto
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_pt_BR.properties
new file mode 100644
index 0000000..fe0c9f5
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_pt_BR.properties
@@ -0,0 +1,22 @@
+# 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.
+
+type.title=Especifique o tipo de objeto de provisioning
+type.summary=
+
+type=Type
+type.Required=Type \u00e9 necess\u00e1rio
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_ru.properties
new file mode 100644
index 0000000..c1f2f27
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ObjectTypeTogglePanel_ru.properties
@@ -0,0 +1,22 @@
+# 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.
+
+type.title=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438
+type.summary=
+
+type=Type
+type.Required=Type \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.html
index 285b25a..c5ff7b1 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.html
@@ -20,9 +20,6 @@ under the License.
<wicket:panel>
<div wicket:id="container">
<div class="form-group">
- <span wicket:id="type"/>
- </div>
- <div class="form-group">
<span wicket:id="clazz"/>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.properties
index d981343..08d4d61 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType.properties
@@ -15,11 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-type.title=Specify the type of the provisioning object
-type.summary=
+clazz.title=Specify the object class of the provisioning object
+clazz.summary=
-type=Type
-type.Required=Type is required
clazz=Object Class
clazz.Required=Object class is required
-
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_it.properties
index 87079bc..3219b30 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_it.properties
@@ -15,10 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-type.title=Specifica il tipo del provisioning
-type.summary=
+clazz.title=Specifica il campo object class del provisioning
+clazz.summary=
-type=Type
-type.Required=Type \u00e8 richiesto
clazz=Object Class
clazz.Required=Object class \u00e8 richiesto
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_pt_BR.properties
index 9d4a687..7e16e5c 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_pt_BR.properties
@@ -15,10 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-type.title=Specify the type of the provisioning object
-type.summary=
+clazz.title=Especifique a classe de objeto do objeto de provisioning
+clazz.summary=
-type=Type
-type.Required=Type is required
clazz=Object Class
-clazz.Required=Object class is required
+clazz.Required=Object class \u00e9 necess\u00e1ria
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_ru.properties
index 9d4a687..dd86e10 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder$ObjectType_ru.properties
@@ -15,10 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-type.title=Specify the type of the provisioning object
-type.summary=
+clazz.title=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438
+clazz.summary=
-type=Type
-type.Required=Type is required
clazz=Object Class
-clazz.Required=Object class is required
+clazz.Required=Object class \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
index ef243a8..1998775 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
@@ -17,7 +17,8 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
+ <wicket:extend>
<span wicket:id="provision">[PROVISION]</span>
- </wicket:panel>
+ <span wicket:id="objectTypeToggle"/>
+ </wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/e06d18ae/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
index de883c8..d2da2e2 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
@@ -119,6 +119,10 @@ public class TopologyITCase extends AbstractConsoleITCase {
"body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
formTester.submit("buttons:next");
+ formTester = TESTER.newFormTester(
+ "body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
+ formTester.submit("buttons:next");
+
TESTER.assertComponent("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:"
+ "container:content:wizard:form:view:mapping:mappingContainer:mappings:1", WebMarkupContainer.class);
@@ -166,23 +170,32 @@ public class TopologyITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath() + ":res", Constants.ON_CLICK);
TESTER.clickLink("body:toggle:container:content:togglePanelContainer:container:actions:provision");
+ // -- create new provision rules for the current resource
TESTER.clickLink("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:add");
formTester = TESTER.newFormTester(
- "body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
+ "body:toggle:outerObjectsRepeater:3:outer:form:content:objectTypeToggle:container:"
+ + "content:togglePanelContainer:objectTypeForm");
+ formTester.select("type:dropDownChoiceField", 1);
+ formTester.submit("changeit");
+ TESTER.assertNoErrorMessage();
+ TESTER.assertNoInfoMessage();
- formTester.setValue("view:container:type:dropDownChoiceField", "1");
- formTester.setValue("view:container:clazz:textField", "__ACCOUNT__");
+ // choose object class
+ formTester = TESTER.newFormTester(
+ "body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
formTester.submit("buttons:next");
TESTER.assertNoErrorMessage();
TESTER.assertNoInfoMessage();
+ // aux classes
formTester = TESTER.newFormTester(
"body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
formTester.submit("buttons:next");
TESTER.assertNoErrorMessage();
TESTER.assertNoInfoMessage();
+ // set a new mapping rule
TESTER.executeAjaxEvent("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:"
+ "content:wizard:form:view:mapping:mappingContainer:addMappingBtn", Constants.ON_CLICK);
@@ -202,6 +215,7 @@ public class TopologyITCase extends AbstractConsoleITCase {
TESTER.assertNoErrorMessage();
TESTER.assertNoInfoMessage();
+ // finish
TESTER.cleanupFeedbackMessages();
// ajax event required to retrieve AjaxRequestTarget (used into finish custom event)
TESTER.executeAjaxEvent("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:"
@@ -211,9 +225,11 @@ public class TopologyITCase extends AbstractConsoleITCase {
TESTER.assertComponent(
"body:toggle:outerObjectsRepeater:3:outer:dialog:footer:inputs:0:submit", AjaxSubmitLink.class);
+ // save
TESTER.cleanupFeedbackMessages();
TESTER.executeAjaxEvent(
"body:toggle:outerObjectsRepeater:3:outer:dialog:footer:inputs:0:submit", Constants.ON_CLICK);
+ TESTER.assertNoErrorMessage();
TESTER.assertInfoMessages("Operation executed successfully");
TESTER.clickLink("body:toggle:container:content:togglePanelContainer:container:actions:provision");
@@ -225,6 +241,10 @@ public class TopologyITCase extends AbstractConsoleITCase {
"body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
formTester.submit("buttons:next");
+ formTester = TESTER.newFormTester(
+ "body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
+ formTester.submit("buttons:next");
+
TESTER.assertComponent("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:"
+ "container:content:wizard:form:view:mapping:mappingContainer:mappings:0", WebMarkupContainer.class);