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 2016/04/06 13:50:10 UTC
syncope git commit: [SYNCOPE-807] Fixed
Repository: syncope
Updated Branches:
refs/heads/master 692e1f91c -> 0e89478de
[SYNCOPE-807] Fixed
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/0e89478d
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/0e89478d
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/0e89478d
Branch: refs/heads/master
Commit: 0e89478de51df598b10bfb22b93f173d6fe4ca2b
Parents: 692e1f9
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Apr 6 13:50:01 2016 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Apr 6 13:50:01 2016 +0200
----------------------------------------------------------------------
.../syncope/client/console/pages/Realms.java | 11 +-
.../client/console/panels/RealmChoicePanel.java | 19 +--
.../client/console/panels/RealmDetails.java | 74 ++++++++--
.../console/panels/ResourceSecurityPanel.java | 140 +++++++------------
.../html/form/AjaxDropDownChoicePanel.java | 3 +-
.../wicket/markup/html/form/PolicyRenderer.java | 45 ++++++
.../syncope/client/console/pages/Realms.html | 3 -
.../console/panels/RealmDetails.properties | 19 +++
.../console/panels/RealmDetails_it.properties | 19 +++
.../panels/RealmDetails_pt_BR.properties | 19 +++
.../console/panels/ResourceSecurityPanel.html | 4 +-
.../panels/ResourceSecurityPanel.properties | 4 +-
.../panels/ResourceSecurityPanel_it.properties | 4 +-
.../ResourceSecurityPanel_pt_BR.properties | 4 +-
.../html/form/AjaxDropDownChoicePanel.html | 3 -
.../java/data/RealmDataBinderImpl.java | 25 ++--
16 files changed, 258 insertions(+), 138 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
index 2ee818f..0002d62 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
@@ -24,7 +24,7 @@ import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.panels.Realm;
import org.apache.syncope.client.console.panels.RealmModalPanel;
import org.apache.syncope.client.console.panels.RealmChoicePanel;
-import org.apache.syncope.client.console.panels.RealmChoicePanel.ChoosenRealm;
+import org.apache.syncope.client.console.panels.RealmChoicePanel.ChosenRealm;
import org.apache.syncope.client.console.rest.RealmRestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.RealmTO;
@@ -75,6 +75,7 @@ public class Realms extends BasePage {
@Override
public void onClose(final AjaxRequestTarget target) {
target.add(realmChoicePanel.reloadRealmTree(target));
+ target.add(content);
modal.show(false);
}
});
@@ -86,9 +87,9 @@ public class Realms extends BasePage {
public void onEvent(final IEvent<?> event) {
super.onEvent(event);
- if (event.getPayload() instanceof ChoosenRealm) {
+ if (event.getPayload() instanceof ChosenRealm) {
@SuppressWarnings("unchecked")
- final ChoosenRealm<RealmTO> choosenRealm = ChoosenRealm.class.cast(event.getPayload());
+ final ChosenRealm<RealmTO> choosenRealm = ChosenRealm.class.cast(event.getPayload());
updateRealmContent(choosenRealm.getObj());
choosenRealm.getTarget().add(content);
}
@@ -151,10 +152,10 @@ public class Realms extends BasePage {
realmRestClient.delete(realmTO.getFullPath());
RealmTO parent = realmChoicePanel.moveToParentRealm(realmTO.getKey());
target.add(realmChoicePanel.reloadRealmTree(target));
-
+
info(getString(Constants.OPERATION_SUCCEEDED));
updateRealmContent(parent);
- target.add(content);
+ target.add(content);
} catch (Exception e) {
LOG.error("While deleting realm", e);
// Escape line breaks
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
index 0a33538..eed2a4e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
@@ -70,10 +70,10 @@ public class RealmChoicePanel extends Panel {
this.pageRef = pageRef;
tree = new HashMap<>();
- final RealmTO def = new RealmTO();
- def.setName("/");
- def.setFullPath("/");
- model = Model.of(def);
+ RealmTO fakeRootRealm = new RealmTO();
+ fakeRootRealm.setName("/");
+ fakeRootRealm.setFullPath("/");
+ model = Model.of(fakeRootRealm);
ldm = new LoadableDetachableModel<List<Pair<String, RealmTO>>>() {
@@ -96,8 +96,11 @@ public class RealmChoicePanel extends Panel {
@Override
protected List<Pair<String, RealmTO>> load() {
+ Map<Long, Pair<RealmTO, List<RealmTO>>> map = reloadRealmParentMap();
+ model.setObject(map.get(1L).getKey());
+
final List<Pair<String, RealmTO>> full = new ArrayList<>();
- getChildren(full, 0L, reloadRealmParentMap(), StringUtils.EMPTY);
+ getChildren(full, 0L, map, StringUtils.EMPTY);
return full;
}
};
@@ -138,7 +141,7 @@ public class RealmChoicePanel extends Panel {
model.setObject(realmTO);
label.setDefaultModelObject(model.getObject().getFullPath());
target.add(label);
- send(pageRef.getPage(), Broadcast.EXACT, new ChoosenRealm<>(realmTO, target));
+ send(pageRef.getPage(), Broadcast.EXACT, new ChosenRealm<>(realmTO, target));
}
});
}
@@ -232,13 +235,13 @@ public class RealmChoicePanel extends Panel {
return null;
}
- public static class ChoosenRealm<T> {
+ public static class ChosenRealm<T> {
private final AjaxRequestTarget target;
private final T obj;
- public ChoosenRealm(final T obj, final AjaxRequestTarget target) {
+ public ChosenRealm(final T obj, final AjaxRequestTarget target) {
this.obj = obj;
this.target = target;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmDetails.java
index c27b6cb..4958f9e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmDetails.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmDetails.java
@@ -18,14 +18,26 @@
*/
package org.apache.syncope.client.console.panels;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.syncope.client.console.rest.PolicyRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+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.wicket.markup.html.form.PolicyRenderer;
+import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
import org.apache.syncope.common.lib.to.RealmTO;
+import org.apache.syncope.common.lib.types.PolicyType;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,6 +47,36 @@ public class RealmDetails extends Panel {
protected static final Logger LOG = LoggerFactory.getLogger(RealmDetails.class);
+ private final PolicyRestClient policyRestClient = new PolicyRestClient();
+
+ private final IModel<Map<Long, String>> accountPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+
+ private static final long serialVersionUID = -2012833443695917883L;
+
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.ACCOUNT)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
+ }
+ return res;
+ }
+ };
+
+ private final IModel<Map<Long, String>> passwordPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+
+ private static final long serialVersionUID = -2012833443695917883L;
+
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PASSWORD)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
+ }
+ return res;
+ }
+ };
+
private final WebMarkupContainer container;
public RealmDetails(final String id, final RealmTO realmTO) {
@@ -42,30 +84,46 @@ public class RealmDetails extends Panel {
}
public RealmDetails(
- final String id, final RealmTO realmTO, final ActionLinksPanel<?> actions, final boolean unwraped) {
+ final String id,
+ final RealmTO realmTO,
+ final ActionLinksPanel<?> actions,
+ final boolean unwrapped) {
+
super(id);
container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
- container.setRenderBodyOnly(unwraped);
+ container.setRenderBodyOnly(unwrapped);
add(container);
- final FieldPanel<String> name = new AjaxTextFieldPanel(
+ FieldPanel<String> name = new AjaxTextFieldPanel(
"name", "name", new PropertyModel<String>(realmTO, "name"), false);
name.addRequiredLabel();
container.add(name);
- final FieldPanel<String> fullPath = new AjaxTextFieldPanel(
+ FieldPanel<String> fullPath = new AjaxTextFieldPanel(
"fullPath", "fullPath", new PropertyModel<String>(realmTO, "fullPath"), false);
fullPath.setEnabled(false);
container.add(fullPath);
- final FieldPanel<String> accountPolicy = new AjaxTextFieldPanel(
- "accountPolicy", "accountPolicy", new PropertyModel<String>(realmTO, "accountPolicy"), false);
+ AjaxDropDownChoicePanel<Long> accountPolicy = new AjaxDropDownChoicePanel<>(
+ "accountPolicy",
+ new ResourceModel("accountPolicy", "accountPolicy").getObject(),
+ new PropertyModel<Long>(realmTO, "accountPolicy"),
+ false);
+ accountPolicy.setChoiceRenderer(new PolicyRenderer(accountPolicies));
+ accountPolicy.setChoices(new ArrayList<>(accountPolicies.getObject().keySet()));
+ ((DropDownChoice<?>) accountPolicy.getField()).setNullValid(true);
container.add(accountPolicy);
- final FieldPanel<String> passwordPolicy = new AjaxTextFieldPanel(
- "passwordPolicy", "passwordPolicy", new PropertyModel<String>(realmTO, "passwordPolicy"), false);
+ AjaxDropDownChoicePanel<Long> passwordPolicy = new AjaxDropDownChoicePanel<>(
+ "passwordPolicy",
+ new ResourceModel("passwordPolicy", "passwordPolicy").getObject(),
+ new PropertyModel<Long>(realmTO, "passwordPolicy"),
+ false);
+ passwordPolicy.setChoiceRenderer(new PolicyRenderer(passwordPolicies));
+ passwordPolicy.setChoices(new ArrayList<>(passwordPolicies.getObject().keySet()));
+ ((DropDownChoice<?>) passwordPolicy.getField()).setNullValid(true);
container.add(passwordPolicy);
if (actions == null) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
index ad56e9e..25e22ce 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
@@ -23,11 +23,11 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.syncope.client.console.rest.PolicyRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.PolicyRenderer;
import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.types.PolicyType;
import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
@@ -41,139 +41,97 @@ public class ResourceSecurityPanel extends Panel {
private final PolicyRestClient policyRestClient = new PolicyRestClient();
- private IModel<Map<Long, String>> passwordPolicies = null;
+ private final IModel<Map<Long, String>> passwordPolicies = new LoadableDetachableModel<Map<Long, String>>() {
- private IModel<Map<Long, String>> accountPolicies = null;
+ private static final long serialVersionUID = 5275935387613157437L;
- private IModel<Map<Long, String>> pullPolicies = null;
-
- public ResourceSecurityPanel(final String id, final IModel<ResourceTO> model) {
-
- super(id);
-
- final WebMarkupContainer container = new WebMarkupContainer("container");
- container.setOutputMarkupId(true);
- container.setRenderBodyOnly(true);
- add(container);
-
- setOutputMarkupId(true);
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PASSWORD)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
+ }
+ return res;
+ }
+ };
- passwordPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+ private final IModel<Map<Long, String>> accountPolicies = new LoadableDetachableModel<Map<Long, String>>() {
- private static final long serialVersionUID = 5275935387613157437L;
+ private static final long serialVersionUID = -2012833443695917883L;
- @Override
- protected Map<Long, String> load() {
- Map<Long, String> res = new HashMap<>();
- for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PASSWORD)) {
- res.put(policyTO.getKey(), policyTO.getDescription());
- }
- return res;
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.ACCOUNT)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
}
- };
+ return res;
+ }
+ };
- accountPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+ private final IModel<Map<Long, String>> pullPolicies = new LoadableDetachableModel<Map<Long, String>>() {
- private static final long serialVersionUID = -2012833443695917883L;
+ private static final long serialVersionUID = -2012833443695917883L;
- @Override
- protected Map<Long, String> load() {
- Map<Long, String> res = new HashMap<>();
- for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.ACCOUNT)) {
- res.put(policyTO.getKey(), policyTO.getDescription());
- }
- return res;
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PULL)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
}
- };
-
- pullPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+ return res;
+ }
+ };
- private static final long serialVersionUID = -2012833443695917883L;
+ public ResourceSecurityPanel(final String id, final IModel<ResourceTO> model) {
+ super(id);
+ setOutputMarkupId(true);
- @Override
- protected Map<Long, String> load() {
- Map<Long, String> res = new HashMap<>();
- for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PULL)) {
- res.put(policyTO.getKey(), policyTO.getDescription());
- }
- return res;
- }
- };
+ final WebMarkupContainer container = new WebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ container.setRenderBodyOnly(true);
+ add(container);
// -------------------------------
- // Password policy specification
+ // Password policy selection
// -------------------------------
- final AjaxDropDownChoicePanel<Long> passwordPolicy = new AjaxDropDownChoicePanel<Long>(
+ AjaxDropDownChoicePanel<Long> passwordPolicy = new AjaxDropDownChoicePanel<>(
"passwordPolicy",
new ResourceModel("passwordPolicy", "passwordPolicy").getObject(),
new PropertyModel<Long>(model, "passwordPolicy"),
false);
-
- passwordPolicy.setChoiceRenderer(new PolicyRenderer(PolicyType.PASSWORD));
+ passwordPolicy.setChoiceRenderer(new PolicyRenderer(passwordPolicies));
passwordPolicy.setChoices(new ArrayList<>(passwordPolicies.getObject().keySet()));
((DropDownChoice<?>) passwordPolicy.getField()).setNullValid(true);
container.add(passwordPolicy);
// -------------------------------
// -------------------------------
- // Account policy specification
+ // Account policy selection
// -------------------------------
- final AjaxDropDownChoicePanel<Long> accountPolicy = new AjaxDropDownChoicePanel<Long>(
+ AjaxDropDownChoicePanel<Long> accountPolicy = new AjaxDropDownChoicePanel<>(
"accountPolicy",
new ResourceModel("accountPolicy", "accountPolicy").getObject(),
new PropertyModel<Long>(model, "accountPolicy"),
false);
-
- accountPolicy.setChoiceRenderer(new PolicyRenderer(PolicyType.ACCOUNT));
- accountPolicy.setChoices(new ArrayList<Long>(accountPolicies.getObject().keySet()));
+ accountPolicy.setChoiceRenderer(new PolicyRenderer(accountPolicies));
+ accountPolicy.setChoices(new ArrayList<>(accountPolicies.getObject().keySet()));
((DropDownChoice<?>) accountPolicy.getField()).setNullValid(true);
container.add(accountPolicy);
// -------------------------------
// -------------------------------
- // Pull policy specification
+ // Pull policy selection
// -------------------------------
AjaxDropDownChoicePanel<Long> pullPolicy = new AjaxDropDownChoicePanel<>(
"pullPolicy",
new ResourceModel("pullPolicy", "pullPolicy").getObject(),
new PropertyModel<Long>(model, "pullPolicy"),
false);
-
- pullPolicy.setChoiceRenderer(new PolicyRenderer(PolicyType.PULL));
- pullPolicy.setChoices(new ArrayList<Long>(pullPolicies.getObject().keySet()));
+ pullPolicy.setChoiceRenderer(new PolicyRenderer(pullPolicies));
+ pullPolicy.setChoices(new ArrayList<>(pullPolicies.getObject().keySet()));
((DropDownChoice<?>) pullPolicy.getField()).setNullValid(true);
container.add(pullPolicy);
// -------------------------------
}
-
- private class PolicyRenderer extends ChoiceRenderer<Long> {
-
- private static final long serialVersionUID = 8060500161321947000L;
-
- private final PolicyType type;
-
- PolicyRenderer(final PolicyType type) {
- super();
- this.type = type;
- }
-
- @Override
- public Object getDisplayValue(final Long object) {
- switch (type) {
- case ACCOUNT:
- return accountPolicies.getObject().get(object);
- case PASSWORD:
- return passwordPolicies.getObject().get(object);
- case PULL:
- return pullPolicies.getObject().get(object);
- default:
- return "";
- }
- }
-
- @Override
- public String getIdValue(final Long object, final int index) {
- return String.valueOf(object != null ? object : 0L);
- }
- };
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
index 0ca72be..f08684f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
@@ -46,7 +46,6 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
field = new BootstrapSelect<>(
"dropDownChoiceField", model, Collections.<T>emptyList(), new ChoiceRenderer<T>());
-
add(field.setLabel(new Model<>(name)).setOutputMarkupId(true));
if (enableOnBlur) {
@@ -84,7 +83,7 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
BootstrapSelect.class.cast(field).setNullValid(validity);
return this;
}
-
+
@Override
@SuppressWarnings("unchecked")
public FieldPanel<T> clone() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
new file mode 100644
index 0000000..a3fdbb0
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
@@ -0,0 +1,45 @@
+/*
+ * 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.wicket.markup.html.form;
+
+import java.util.Map;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.model.IModel;
+
+public class PolicyRenderer extends ChoiceRenderer<Long> {
+
+ private static final long serialVersionUID = 8060500161321947000L;
+
+ private final IModel<Map<Long, String>> policies;
+
+ public PolicyRenderer(final IModel<Map<Long, String>> policies) {
+ super();
+ this.policies = policies;
+ }
+
+ @Override
+ public Object getDisplayValue(final Long object) {
+ return policies.getObject().get(object);
+ }
+
+ @Override
+ public String getIdValue(final Long object, final int index) {
+ return String.valueOf(object != null ? object : 0L);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
index 3588eb5..649c884 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
@@ -18,9 +18,6 @@ under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
- <script lang="text/javascript">
-
- </script>
<section class="content-header">
<h1> </h1>
<ol class="breadcrumb">
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.properties
new file mode 100644
index 0000000..a5e8d78
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.properties
@@ -0,0 +1,19 @@
+# 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.
+fullPath=Path
+accountPolicy=Account Policy
+passwordPolicy=Password Policy
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_it.properties
new file mode 100644
index 0000000..0b97cf9
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_it.properties
@@ -0,0 +1,19 @@
+# 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.
+fullPath=Percorso
+accountPolicy=Account Policy
+passwordPolicy=Password Policy
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_pt_BR.properties
new file mode 100644
index 0000000..5d68eda
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails_pt_BR.properties
@@ -0,0 +1,19 @@
+# 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.
+fullPath=Caminho
+accountPolicy=Pol\u00edtica de Conta
+passwordPolicy=Pol\u00edtica de Senha
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
index f39d19e..5177e26 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
@@ -19,10 +19,10 @@ under the License.
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="container" class="summarize">
- <span wicket:id="passwordPolicy">
+ <span wicket:id="accountPolicy">
[panel for dynamic input type markup]
</span>
- <span wicket:id="accountPolicy">
+ <span wicket:id="passwordPolicy">
[panel for dynamic input type markup]
</span>
<span wicket:id="pullPolicy">
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.properties
index 279e499..0d2d9c4 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-passwordPolicy = Password Policy
-accountPolicy = Account Policy
+passwordPolicy=Password Policy
+accountPolicy=Account Policy
pullPolicy=Pull Policy
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_it.properties
index 279e499..0d2d9c4 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_it.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-passwordPolicy = Password Policy
-accountPolicy = Account Policy
+passwordPolicy=Password Policy
+accountPolicy=Account Policy
pullPolicy=Pull Policy
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_pt_BR.properties
index 4c774d5..48e925f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel_pt_BR.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-passwordPolicy = Pol\u00edtica de Senha
-accountPolicy = Pol\u00edtica de Conta
+passwordPolicy=Pol\u00edtica de Senha
+accountPolicy=Pol\u00edtica de Conta
pullPolicy=Pol\u00edtica de Pull
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
index b9af868..c4b3da7 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
@@ -17,9 +17,6 @@ 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>Drop down choice</title>
- </head>
<wicket:extend>
<wicket:enclosure child="field-label">
<label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/0e89478d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
index 7771f06..70e7877 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
@@ -134,24 +134,29 @@ public class RealmDataBinderImpl implements RealmDataBinder {
realm.setName(realmTO.getName());
realm.setParent(realmTO.getParent() == 0 ? null : realmDAO.find(realmTO.getParent()));
- if (realmTO.getPasswordPolicy() != null) {
- Policy policy = policyDAO.find(realmTO.getPasswordPolicy());
- if (policy instanceof PasswordPolicy) {
- realm.setPasswordPolicy((PasswordPolicy) policy);
+ if (realmTO.getAccountPolicy() == null) {
+ realm.setAccountPolicy(null);
+ } else {
+ Policy policy = policyDAO.find(realmTO.getAccountPolicy());
+ if (policy instanceof AccountPolicy) {
+ realm.setAccountPolicy((AccountPolicy) policy);
} else {
SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidPolicy);
- sce.getElements().add("Expected " + PasswordPolicy.class.getSimpleName()
+ sce.getElements().add("Expected " + AccountPolicy.class.getSimpleName()
+ ", found " + policy.getClass().getSimpleName());
throw sce;
}
}
- if (realmTO.getAccountPolicy() != null) {
- Policy policy = policyDAO.find(realmTO.getAccountPolicy());
- if (policy instanceof AccountPolicy) {
- realm.setAccountPolicy((AccountPolicy) policy);
+
+ if (realmTO.getPasswordPolicy() == null) {
+ realm.setPasswordPolicy(null);
+ } else {
+ Policy policy = policyDAO.find(realmTO.getPasswordPolicy());
+ if (policy instanceof PasswordPolicy) {
+ realm.setPasswordPolicy((PasswordPolicy) policy);
} else {
SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidPolicy);
- sce.getElements().add("Expected " + AccountPolicy.class.getSimpleName()
+ sce.getElements().add("Expected " + PasswordPolicy.class.getSimpleName()
+ ", found " + policy.getClass().getSimpleName());
throw sce;
}