[SYNCOPE-898] provides the possibility to specify the destination realm
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/46e642ea Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/46e642ea Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/46e642ea Branch: refs/heads/2_0_NO_JAXB Commit: 46e642eaf3a3375f2d51f422e0f91ded5cf74e19 Parents: 0656bc0 Author: fmartelli <[email protected]> Authored: Fri Jul 8 13:20:23 2016 +0200 Committer: fmartelli <[email protected]> Committed: Fri Jul 8 13:20:23 2016 +0200 ---------------------------------------------------------------------- .../console/commons/AnyTypeComparator.java | 6 +- .../client/console/commons/GroupComparator.java | 37 ++++++++++ .../client/console/rest/GroupRestClient.java | 24 +++++-- .../console/tasks/TemplatesTogglePanel.java | 2 +- .../console/wizards/any/AnyObjectDetails.java | 2 +- .../any/AnyObjectTemplateWizardBuilder.java | 6 +- .../console/wizards/any/AnyWizardBuilder.java | 8 ++- .../client/console/wizards/any/Details.java | 17 ++++- .../console/wizards/any/GroupDetails.java | 2 +- .../wizards/any/GroupTemplateWizardBuilder.java | 7 +- .../client/console/wizards/any/Groups.java | 75 ++++++++++---------- .../client/console/wizards/any/UserDetails.java | 6 +- .../wizards/any/UserTemplateWizardBuilder.java | 7 +- .../client/console/wizards/any/Details.html | 3 + .../console/wizards/any/Details.properties | 22 ++++++ .../console/wizards/any/Details_it.properties | 22 ++++++ .../wizards/any/Details_pt_BR.properties | 22 ++++++ .../console/wizards/any/Details_ru.properties | 26 +++++++ .../console/wizards/any/UserDetails.properties | 21 ------ .../wizards/any/UserDetails_it.properties | 21 ------ .../wizards/any/UserDetails_pt_BR.properties | 21 ------ .../wizards/any/UserDetails_ru.properties | 25 ------- .../syncope/fit/console/RealmsITCase.java | 10 ++- 23 files changed, 244 insertions(+), 148 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyTypeComparator.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyTypeComparator.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyTypeComparator.java index d19d205..06dcb13 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyTypeComparator.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/AnyTypeComparator.java @@ -18,12 +18,15 @@ */ package org.apache.syncope.client.console.commons; +import java.io.Serializable; import java.util.Comparator; import org.apache.commons.collections4.ComparatorUtils; import org.apache.syncope.common.lib.to.AnyTypeTO; import org.apache.syncope.common.lib.types.AnyTypeKind; -public class AnyTypeComparator implements Comparator<AnyTypeTO> { +public class AnyTypeComparator implements Comparator<AnyTypeTO>, Serializable { + + private static final long serialVersionUID = -8227715253094467138L; @Override public int compare(final AnyTypeTO o1, final AnyTypeTO o2) { @@ -41,5 +44,4 @@ public class AnyTypeComparator implements Comparator<AnyTypeTO> { } return ComparatorUtils.<String>naturalComparator().compare(o1.getKey(), o2.getKey()); } - } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/commons/GroupComparator.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/GroupComparator.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/GroupComparator.java new file mode 100644 index 0000000..b45633f --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/GroupComparator.java @@ -0,0 +1,37 @@ +/* + * 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.io.Serializable; +import java.util.Comparator; +import org.apache.syncope.common.lib.to.GroupTO; + +public class GroupComparator implements Comparator<GroupTO>, Serializable { + + private static final long serialVersionUID = 3584905855352863080L; + + @Override + public int compare(final GroupTO left, final GroupTO right) { + return left == null || left.getName() == null + ? -1 + : right == null || right.getName() == null + ? 1 + : left.getName().compareTo(right.getName()); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java index 36b2845..c4f78c9 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java @@ -18,9 +18,13 @@ */ package org.apache.syncope.client.console.rest; +import static org.apache.syncope.client.console.rest.BaseRestClient.getService; + +import java.util.ArrayList; import java.util.List; import org.apache.syncope.common.lib.patch.GroupPatch; import org.apache.syncope.common.lib.to.GroupTO; +import org.apache.syncope.common.lib.to.PagedResult; import org.apache.syncope.common.lib.types.BulkMembersActionType; import org.apache.syncope.common.rest.api.beans.AnyQuery; import org.apache.syncope.common.rest.api.service.AnyService; @@ -48,13 +52,23 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO, GroupPatch> @Override public List<GroupTO> search( - final String realm, final String fiql, final int page, final int size, final SortParam<String> sort, + final String realm, + final String fiql, + final int page, + final int size, + final SortParam<String> sort, final String type) { - return getService(GroupService.class). - search(new AnyQuery.Builder().realm(realm).fiql(fiql).page(page).size(size). - orderBy(toOrderBy(sort)).details(false).build()). - getResult(); + List<GroupTO> result = new ArrayList<>(); + PagedResult<GroupTO> res; + do { + res = getService(GroupService.class). + search(new AnyQuery.Builder().realm(realm).fiql(fiql).page(page).size(size). + orderBy(toOrderBy(sort)).details(false).build()); + result.addAll(res.getResult()); + } while (page == -1 && size == -1 && res.getNext() != null); + + return result; } public void bulkMembersAction(final String key, final BulkMembersActionType actionType) { http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java index 32c171e..53edb6e 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java @@ -102,7 +102,7 @@ public abstract class TemplatesTogglePanel extends TogglePanel<Serializable> { protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) { try { final AjaxWizard.NewItemActionEvent<AnyTO> payload - = new AjaxWizard.NewItemActionEvent<AnyTO>(null, target); + = new AjaxWizard.NewItemActionEvent<>(null, target); payload.setResourceModel(new StringResourceModel("inner.template.edit", container, Model.of(Pair.of(typeModel.getObject(), targetObject))).setDefaultValue( http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java index 5d149e7..dc48586 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java @@ -37,7 +37,7 @@ public class AnyObjectDetails extends Details<AnyObjectTO> { final boolean includeStatusPanel, final PageReference pageRef) { - super(wrapper, statusModel, includeStatusPanel, pageRef); + super(wrapper, statusModel, templateMode, includeStatusPanel, pageRef); AnyObjectTO anyObjectTO = wrapper.getInnerObject(); http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java index 6f60db3..da37ad5 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.syncope.client.console.layout.AnyObjectFormLayoutInfo; import org.apache.syncope.client.console.wizards.AjaxWizard; import org.apache.syncope.common.lib.to.AnyObjectTO; +import org.apache.syncope.common.lib.to.RealmTO; import org.apache.syncope.common.lib.to.TemplatableTO; import org.apache.wicket.PageReference; @@ -43,7 +44,10 @@ public class AnyObjectTemplateWizardBuilder extends AnyObjectWizardBuilder } else { AnyObjectTO anyObjectTO = new AnyObjectTO(); anyObjectTO.setType(anyType); - setItem(new AnyWrapper<>(new AnyObjectTO())); + if (templatable instanceof RealmTO) { + anyObjectTO.setRealm(RealmTO.class.cast(templatable).getFullPath()); + } + setItem(new AnyWrapper<>(anyObjectTO)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/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 41fa6bb..793ebc7 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 @@ -108,7 +108,7 @@ public abstract class AnyWizardBuilder<A extends AnyTO> extends AjaxWizardBuilde || formLayoutInfo instanceof AnyObjectFormLayoutInfo && AnyObjectFormLayoutInfo.class.cast(formLayoutInfo).isGroups()) { - wizardModel.add(new Groups(modelObject.getInnerObject())); + wizardModel.add(new Groups(modelObject.getInnerObject(), mode == AjaxWizard.Mode.TEMPLATE)); } // attributes panel steps @@ -160,7 +160,11 @@ public abstract class AnyWizardBuilder<A extends AnyTO> extends AjaxWizardBuilde if (modelObject.getInnerObject().getKey() != null) { wizardModel.add(new Details<>( - modelObject, new ListModel<>(Collections.<StatusBean>emptyList()), true, pageRef)); + modelObject, + new ListModel<>(Collections.<StatusBean>emptyList()), + mode == AjaxWizard.Mode.TEMPLATE, + true, + pageRef)); } return this; } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java index a30d6bf..483539a 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java @@ -19,11 +19,14 @@ package org.apache.syncope.client.console.wizards.any; import java.util.List; +import org.apache.commons.lang3.StringUtils; import org.apache.syncope.client.console.commons.status.StatusBean; +import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel; import org.apache.syncope.common.lib.to.AnyTO; import org.apache.wicket.PageReference; import org.apache.wicket.extensions.wizard.WizardStep; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,19 +43,27 @@ public class Details<T extends AnyTO> extends WizardStep { public Details( final AnyWrapper<T> wrapper, final IModel<List<StatusBean>> statusModel, + final boolean templateMode, final boolean includeStatusPanel, final PageReference pageRef) { this.pageRef = pageRef; - T anyTO = wrapper.getInnerObject(); + final T inner = wrapper.getInnerObject(); - statusPanel = new StatusPanel("status", anyTO, statusModel, pageRef); + final AjaxTextFieldPanel realm = new AjaxTextFieldPanel( + "destinationRealm", "destinationRealm", new PropertyModel<String>(inner, "realm"), false); + add(realm.setReadOnly(StringUtils.isNotEmpty(inner.getRealm()))); + if (templateMode) { + realm.enableJexlHelp(); + } + + statusPanel = new StatusPanel("status", inner, statusModel, pageRef); add(statusPanel.setEnabled(includeStatusPanel). setVisible(includeStatusPanel).setRenderBodyOnly(true)); - add(getGeneralStatusInformation("generalStatusInformation", anyTO). + add(getGeneralStatusInformation("generalStatusInformation", inner). setEnabled(includeStatusPanel).setVisible(includeStatusPanel).setRenderBodyOnly(true)); } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java index e61e89c..9c19541 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java @@ -37,7 +37,7 @@ public class GroupDetails extends Details<GroupTO> { final boolean includeStatusPanel, final PageReference pageRef) { - super(wrapper, statusModel, includeStatusPanel, pageRef); + super(wrapper, statusModel, templateMode, includeStatusPanel, pageRef); GroupTO groupTO = GroupWrapper.class.cast(wrapper).getInnerObject(); http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java index 3f07a38..cccc25f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.syncope.client.console.layout.GroupFormLayoutInfo; import org.apache.syncope.client.console.wizards.AjaxWizard; import org.apache.syncope.common.lib.to.GroupTO; +import org.apache.syncope.common.lib.to.RealmTO; import org.apache.syncope.common.lib.to.TemplatableTO; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.wicket.PageReference; @@ -40,7 +41,11 @@ public class GroupTemplateWizardBuilder extends GroupWizardBuilder implements Te if (templatable.getTemplates().containsKey(AnyTypeKind.GROUP.name())) { setItem(new GroupWrapper(GroupTO.class.cast(templatable.getTemplates().get(AnyTypeKind.GROUP.name())))); } else { - setItem(new GroupWrapper(new GroupTO())); + GroupTO groupTO = new GroupTO(); + if (templatable instanceof RealmTO) { + groupTO.setRealm(RealmTO.class.cast(templatable).getFullPath()); + } + setItem(new GroupWrapper(groupTO)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java index 5131ce6..2e17763 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java @@ -48,7 +48,7 @@ public class Groups extends WizardStep { private final GroupRestClient groupRestClient = new GroupRestClient(); - public <T extends AnyTO> Groups(final T anyTO) { + public <T extends AnyTO> Groups(final T anyTO, final boolean templateMode) { super(); setOutputMarkupId(true); @@ -57,31 +57,31 @@ public class Groups extends WizardStep { AjaxPalettePanel.Builder<MembershipTO> builder = new AjaxPalettePanel.Builder<MembershipTO>(). setRenderer(new IChoiceRenderer<MembershipTO>() { - private static final long serialVersionUID = -3086661086073628855L; + private static final long serialVersionUID = -3086661086073628855L; - @Override - public Object getDisplayValue(final MembershipTO object) { - return object.getGroupName(); - } + @Override + public Object getDisplayValue(final MembershipTO object) { + return object.getGroupName(); + } - @Override - public String getIdValue(final MembershipTO object, final int index) { - return object.getGroupName(); - } + @Override + public String getIdValue(final MembershipTO object, final int index) { + return object.getGroupName(); + } - @Override - public MembershipTO getObject( - final String id, final IModel<? extends List<? extends MembershipTO>> choices) { + @Override + public MembershipTO getObject( + final String id, final IModel<? extends List<? extends MembershipTO>> choices) { - return IterableUtils.find(choices.getObject(), new Predicate<MembershipTO>() { + return IterableUtils.find(choices.getObject(), new Predicate<MembershipTO>() { - @Override - public boolean evaluate(final MembershipTO object) { - return id.equalsIgnoreCase(object.getGroupName()); - } - }); + @Override + public boolean evaluate(final MembershipTO object) { + return id.equalsIgnoreCase(object.getGroupName()); } }); + } + }); add(builder.setAllowOrder(true).withFilter().build("groups", new ListModel<>(GroupableRelatableTO.class.cast(anyTO).getMemberships()), @@ -93,12 +93,12 @@ public class Groups extends WizardStep { public List<MembershipTO> execute(final String filter) { return CollectionUtils.collect( groupRestClient.search( - anyTO.getRealm(), - SyncopeClient.getGroupSearchConditionBuilder(). - isAssignable().and().is("name").equalTo(filter).query(), - -1, -1, - new SortParam<>("name", true), - null), + anyTO.getRealm(), + SyncopeClient.getGroupSearchConditionBuilder(). + isAssignable().and().is("name").equalTo(filter).query(), + -1, -1, + new SortParam<>("name", true), + null), new Transformer<GroupTO, MembershipTO>() { @Override @@ -112,27 +112,28 @@ public class Groups extends WizardStep { }).hideLabel().setOutputMarkupId(true)); List<GroupTO> allGroups = groupRestClient.search( - anyTO.getRealm(), null, -1, -1, new SortParam<>("name", true), null); + templateMode ? "/" : anyTO.getRealm(), null, -1, -1, new SortParam<>("name", true), null); + final Map<String, GroupTO> allGroupsByKey = new LinkedHashMap<>(allGroups.size()); for (GroupTO group : allGroups) { allGroupsByKey.put(group.getKey(), group); } add(new AjaxPalettePanel.Builder<String>().setAllowOrder(true).build("dyngroups", new ListModel<>(CollectionUtils.collect(GroupableRelatableTO.class.cast(anyTO).getDynGroups(), - new Transformer<String, String>() { + new Transformer<String, String>() { - @Override - public String transform(final String input) { - return allGroupsByKey.get(input).getName(); - } - }, new ArrayList<String>())), + @Override + public String transform(final String input) { + return allGroupsByKey.get(input).getName(); + } + }, new ArrayList<String>())), new ListModel<>(CollectionUtils.collect(allGroups, new Transformer<GroupTO, String>() { - @Override - public String transform(final GroupTO input) { - return input.getName(); - } - }, new ArrayList<String>()))). + @Override + public String transform(final GroupTO input) { + return input.getName(); + } + }, new ArrayList<String>()))). hideLabel().setEnabled(false).setOutputMarkupId(true)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java index ac02a6e..8dbfcff 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java @@ -51,8 +51,7 @@ public class UserDetails extends Details<UserTO> { final boolean includeStatusPanel, final boolean showPasswordManagement, final PageReference pageRef) { - - super(wrapper, statusModel, includeStatusPanel, pageRef); + super(wrapper, statusModel, templateMode, includeStatusPanel, pageRef); final UserTO userTO = wrapper.getInnerObject(); // ------------------------ @@ -85,8 +84,7 @@ public class UserDetails extends Details<UserTO> { panel.setEnabled(model.getObject() >= 0); return panel; } - } - ), model) { + }), model) { private static final long serialVersionUID = -2898628183677758699L; http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java index 4e99a5e..a795cd7 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java @@ -21,6 +21,7 @@ package org.apache.syncope.client.console.wizards.any; import java.util.List; import org.apache.syncope.client.console.layout.UserFormLayoutInfo; import org.apache.syncope.client.console.wizards.AjaxWizard; +import org.apache.syncope.common.lib.to.RealmTO; import org.apache.syncope.common.lib.to.TemplatableTO; import org.apache.syncope.common.lib.to.UserTO; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -40,7 +41,11 @@ public class UserTemplateWizardBuilder extends UserWizardBuilder implements Temp if (templatable.getTemplates().containsKey(AnyTypeKind.USER.name())) { setItem(new UserWrapper(UserTO.class.cast(templatable.getTemplates().get(AnyTypeKind.USER.name())))); } else { - setItem(new UserWrapper(new UserTO())); + UserTO userTO = new UserTO(); + if (templatable instanceof RealmTO) { + userTO.setRealm(RealmTO.class.cast(templatable).getFullPath()); + } + setItem(new UserWrapper(userTO)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.html index 829de18..b8ec7ca 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.html @@ -21,6 +21,9 @@ under the License. <body> <wicket:panel> <div class="details"> + <div class="form-group"> + <span wicket:id="destinationRealm">[DESTINATION REALM]</span> + </div> <wicket:child/> <span wicket:id="status">[STATUS]</span> </div> http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.properties new file mode 100644 index 0000000..7366c21 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details.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. +username=Username +password=Password +confirmPassword=Password (confirm) +password.change=Password management +storePasswordInSyncope=Store password in Syncope +destinationRealm=Destination realm http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_it.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_it.properties new file mode 100644 index 0000000..b090895 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_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. +username=Username +password=Password +confirmPassword=Password (conferma) +password.change=Gestisci password +storePasswordInSyncope=Salva password in Syncope +destinationRealm=Realm di destinazione http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_pt_BR.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_pt_BR.properties new file mode 100644 index 0000000..5a6f1a4 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_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. +username=Nome do Usu\u00e1rio +password=Senha +confirmPassword=Senha (confirmar) +password.change=Gest\u00e3o password +storePasswordInSyncope=Salvar senha in Syncope +destinationRealm=Destination realm http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_ru.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_ru.properties new file mode 100644 index 0000000..5e6998f --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Details_ru.properties @@ -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. +# username=\u00d0\u0098\u00d0\u00bc\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008f +username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +# password=\u00d0\u009f\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c +password=\u041f\u0430\u0440\u043e\u043b\u044c +# confirmPassword=\u00d0\u009f\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c (\u00d0\u00bf\u00d0\u00be\u00d0\u00b4\u00d1\u0082\u00d0\u00b2\u00d0\u00b5\u00d1\u0080\u00d0\u00b6\u00d0\u00b4\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5) +confirmPassword=\u041f\u0430\u0440\u043e\u043b\u044c (\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435) +# password.change=\u00d0\u00a1\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c \u00d0\u00bf\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c ... +password.change=\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c ... +storePasswordInSyncope=Store password in Syncope +destinationRealm=Destination realm http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails.properties deleted file mode 100644 index 6eebcae..0000000 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails.properties +++ /dev/null @@ -1,21 +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. -username=Username -password=Password -confirmPassword=Password (confirm) -password.change=Password management -storePasswordInSyncope=Store password in Syncope http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_it.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_it.properties deleted file mode 100644 index 638a8c6..0000000 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_it.properties +++ /dev/null @@ -1,21 +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. -username=Username -password=Password -confirmPassword=Password (conferma) -password.change=Gestisci password -storePasswordInSyncope=Salva password in Syncope http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_pt_BR.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_pt_BR.properties deleted file mode 100644 index 5b7dc9d..0000000 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_pt_BR.properties +++ /dev/null @@ -1,21 +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. -username=Nome do Usu\u00e1rio -password=Senha -confirmPassword=Senha (confirmar) -password.change=Gest\u00e3o password -storePasswordInSyncope=Salvar senha in Syncope http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_ru.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_ru.properties deleted file mode 100644 index 4fe286d..0000000 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/UserDetails_ru.properties +++ /dev/null @@ -1,25 +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. -# username=\u00d0\u0098\u00d0\u00bc\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008f -username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -# password=\u00d0\u009f\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c -password=\u041f\u0430\u0440\u043e\u043b\u044c -# confirmPassword=\u00d0\u009f\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c (\u00d0\u00bf\u00d0\u00be\u00d0\u00b4\u00d1\u0082\u00d0\u00b2\u00d0\u00b5\u00d1\u0080\u00d0\u00b6\u00d0\u00b4\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5) -confirmPassword=\u041f\u0430\u0440\u043e\u043b\u044c (\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435) -# password.change=\u00d0\u00a1\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c \u00d0\u00bf\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c ... -password.change=\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c ... -storePasswordInSyncope=Store password in Syncope http://git-wip-us.apache.org/repos/asf/syncope/blob/46e642ea/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java index 6b75ee7..ec17ed3 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java @@ -110,6 +110,12 @@ public class RealmsITCase extends AbstractConsoleITCase { @Test public void addUserTemplate() { + TESTER.executeAjaxEvent("body:content:realmChoicePanel:container:realms:btn", Constants.ON_CLICK); + TESTER.executeAjaxEvent("body:content:realmChoicePanel:container:realms:dropdown-menu:buttons:3:button", + Constants.ON_CLICK); + + TESTER.assertLabel("body:content:realmChoicePanel:container:realm", "/odd"); + TESTER.clickLink( "body:content:body:container:content:tabbedPanel:panel:actions:actions:panelTemplate:templateLink"); TESTER.assertComponent("body:content:toggleTemplates", TogglePanel.class); @@ -127,6 +133,8 @@ public class RealmsITCase extends AbstractConsoleITCase { TESTER.assertInfoMessages("Operation executed successfully"); TESTER.cleanupFeedbackMessages(); + + TESTER.assertLabel("body:content:realmChoicePanel:container:realm", "/odd"); TESTER.clickLink( "body:content:body:container:content:tabbedPanel:panel:actions:actions:panelTemplate:templateLink"); @@ -141,7 +149,7 @@ public class RealmsITCase extends AbstractConsoleITCase { TESTER.assertModelValue("body:content:templateModal:form:content:form:view:username:textField", "'k' + firstname"); - + formTester = TESTER.newFormTester("body:content:templateModal:form:content:form"); formTester.setValue("view:username:textField", ""); formTester.submit("buttons:finish");
