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/04 07:52:01 UTC
[1/2] syncope git commit: [SYNCOPE-1141] JAXB Map adapter cannot cope
with Enums, simplifying
Repository: syncope
Updated Branches:
refs/heads/2_0_X c102038a9 -> 09b1e9ace
refs/heads/master 615b29aa6 -> 631740d6f
[SYNCOPE-1141] JAXB Map adapter cannot cope with Enums, simplifying
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/09b1e9ac
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/09b1e9ac
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/09b1e9ac
Branch: refs/heads/2_0_X
Commit: 09b1e9ace1e6d74b7409127f0a70e09e52d761f8
Parents: c102038
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Jul 4 09:51:35 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Jul 4 09:51:35 2017 +0200
----------------------------------------------------------------------
.../console/widgets/CompletenessWidget.java | 51 ++++++++++----------
.../syncope/common/lib/info/NumbersInfo.java | 16 ++++--
.../org/apache/syncope/common/lib/JAXBTest.java | 41 +++++++++++++++-
.../apache/syncope/core/logic/SyncopeLogic.java | 18 +++----
4 files changed, 86 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/09b1e9ac/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
index 2f1390c..c3e0a07 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.widgets;
import com.pingunaut.wicket.chartjs.chart.impl.Doughnut;
import com.pingunaut.wicket.chartjs.core.panel.DoughnutChartPanel;
import java.util.Map;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
import org.apache.syncope.client.console.pages.Notifications;
@@ -42,7 +43,7 @@ public class CompletenessWidget extends BaseWidget {
private static final long serialVersionUID = 7667120094526529934L;
- private Map<NumbersInfo.ConfItem, Boolean> confCompleteness;
+ private Map<String, Boolean> confCompleteness;
private final DoughnutChartPanel chart;
@@ -60,7 +61,7 @@ public class CompletenessWidget extends BaseWidget {
private final BookmarkablePageLink<Page> roles;
- public CompletenessWidget(final String id, final Map<NumbersInfo.ConfItem, Boolean> confCompleteness) {
+ public CompletenessWidget(final String id, final Map<String, Boolean> confCompleteness) {
super(id);
this.confCompleteness = confCompleteness;
setOutputMarkupId(true);
@@ -82,45 +83,45 @@ public class CompletenessWidget extends BaseWidget {
MetaDataRoleAuthorizationStrategy.authorize(topology, WebPage.ENABLE,
String.format("%s,%s", StandardEntitlement.CONNECTOR_LIST, StandardEntitlement.RESOURCE_LIST));
topology.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE)
- || !confCompleteness.get(NumbersInfo.ConfItem.SYNC_TASK));
+ !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PULL_TASK.name()));
policies = BookmarkablePageLinkBuilder.build("policies", Policies.class);
policies.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(policies, WebPage.ENABLE, StandardEntitlement.POLICY_LIST);
actions.add(policies);
policies.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY)
- || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY));
+ !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY.name()));
notifications = BookmarkablePageLinkBuilder.build("notifications", Notifications.class);
notifications.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(
notifications, WebPage.ENABLE, StandardEntitlement.NOTIFICATION_LIST);
actions.add(notifications);
- notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION));
+ notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION.name()));
types = BookmarkablePageLinkBuilder.build("types", Types.class);
types.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(types, WebPage.ENABLE, StandardEntitlement.SCHEMA_LIST);
actions.add(types);
types.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA)
- || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE));
+ !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE.name()));
securityquestions = BookmarkablePageLinkBuilder.build("securityquestions", SecurityQuestions.class);
securityquestions.setOutputMarkupPlaceholderTag(true);
actions.add(securityquestions);
- securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION));
+ securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION.name()));
roles = BookmarkablePageLinkBuilder.build("roles", Administration.class);
roles.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(roles, WebPage.ENABLE, StandardEntitlement.ROLE_LIST);
actions.add(roles);
- roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE));
+ roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE.name()));
}
- private Pair<Doughnut, Integer> build(final Map<NumbersInfo.ConfItem, Boolean> confCompleteness) {
+ private Pair<Doughnut, Integer> build(final Map<String, Boolean> confCompleteness) {
Doughnut doughnut = new Doughnut();
doughnut.getOptions().setResponsive(true);
doughnut.getOptions().setMaintainAspectRatio(true);
@@ -128,9 +129,9 @@ public class CompletenessWidget extends BaseWidget {
int done = 0;
int todo = 0;
- for (Map.Entry<NumbersInfo.ConfItem, Boolean> entry : confCompleteness.entrySet()) {
- if (entry.getValue()) {
- done += entry.getKey().getScore();
+ for (Map.Entry<String, Boolean> entry : confCompleteness.entrySet()) {
+ if (BooleanUtils.isTrue(entry.getValue())) {
+ done += NumbersInfo.ConfItem.getScore(entry.getKey());
} else {
todo++;
}
@@ -144,7 +145,7 @@ public class CompletenessWidget extends BaseWidget {
return Pair.of(doughnut, todo);
}
- public boolean refresh(final Map<NumbersInfo.ConfItem, Boolean> confCompleteness) {
+ public boolean refresh(final Map<String, Boolean> confCompleteness) {
if (!this.confCompleteness.equals(confCompleteness)) {
this.confCompleteness = confCompleteness;
@@ -155,22 +156,22 @@ public class CompletenessWidget extends BaseWidget {
actions.setVisible(built.getRight() > 0);
topology.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE)
- || !confCompleteness.get(NumbersInfo.ConfItem.SYNC_TASK));
+ !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PULL_TASK.name()));
policies.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY)
- || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY));
+ !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY.name()));
- notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION));
+ notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION.name()));
types.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA)
- || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE));
+ !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE.name()));
- securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION));
+ securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION.name()));
- roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE));
+ roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE.name()));
return true;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/09b1e9ac/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java b/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
index 293bb55..d53025c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
@@ -37,13 +37,13 @@ public class NumbersInfo extends AbstractBaseBean {
@XmlEnum
@XmlType(name = "confItem")
- public enum ConfItem {
+ public static enum ConfItem {
RESOURCE(20),
ACCOUNT_POLICY(10),
PASSWORD_POLICY(10),
NOTIFICATION(8),
- SYNC_TASK(10),
+ PULL_TASK(10),
VIR_SCHEMA(10),
ANY_TYPE(5),
SECURITY_QUESTION(12),
@@ -55,7 +55,13 @@ public class NumbersInfo extends AbstractBaseBean {
this.score = score;
}
- public int getScore() {
+ public static int getScore(final String name) {
+ int score = 0;
+ for (ConfItem value : values()) {
+ if (value.name().equals(name)) {
+ score = value.score;
+ }
+ }
return score;
}
@@ -99,7 +105,7 @@ public class NumbersInfo extends AbstractBaseBean {
@XmlJavaTypeAdapter(XmlGenericMapAdapter.class)
@JsonIgnore
- private final Map<ConfItem, Boolean> confCompleteness = new HashMap<>();
+ private final Map<String, Boolean> confCompleteness = new HashMap<>();
public int getTotalUsers() {
return totalUsers;
@@ -191,7 +197,7 @@ public class NumbersInfo extends AbstractBaseBean {
}
@JsonProperty
- public Map<ConfItem, Boolean> getConfCompleteness() {
+ public Map<String, Boolean> getConfCompleteness() {
return confCompleteness;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/09b1e9ac/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
----------------------------------------------------------------------
diff --git a/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java b/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
index a14b878..529e604 100644
--- a/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
+++ b/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
@@ -29,6 +29,7 @@ import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.syncope.common.lib.info.NumbersInfo;
import org.apache.syncope.common.lib.patch.UserPatch;
import org.apache.syncope.common.lib.report.UserReportletConf;
import org.apache.syncope.common.lib.to.AttrTO;
@@ -72,7 +73,45 @@ public class JAXBTest {
status.setFailureReason("failed");
status.setBeforeObj(new ConnObjectTO());
original.getPropagationStatuses().add(status);
-
+
+ StringWriter writer = new StringWriter();
+ marshaller.marshal(original, writer);
+
+ Object actual = unmarshaller.unmarshal(new StringReader(writer.toString()));
+ assertEquals(original, actual);
+ }
+
+ @Test
+ public void numbersInfo() throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(NumbersInfo.class);
+ Marshaller marshaller = context.createMarshaller();
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+
+ NumbersInfo original = new NumbersInfo();
+ original.setTotalUsers(5);
+ original.getUsersByRealm().put("/", 4);
+ original.getUsersByRealm().put("/even", 1);
+ original.getUsersByStatus().put("active", 5);
+ original.setTotalGroups(16);
+ original.getGroupsByRealm().put("/", 14);
+ original.getGroupsByRealm().put("/even", 1);
+ original.getGroupsByRealm().put("/odd", 1);
+ original.setAnyType1("PRINTER");
+ original.setTotalAny1(3);
+ original.getAny1ByRealm().put("/", 2);
+ original.getAny1ByRealm().put("/even/two", 1);
+ original.setTotalResources(21);
+ original.setTotalRoles(4);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.ANY_TYPE.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.PULL_TASK.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.ROLE.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.NOTIFICATION.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.PASSWORD_POLICY.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.ACCOUNT_POLICY.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.RESOURCE.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.VIR_SCHEMA.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.SECURITY_QUESTION.name(), Boolean.TRUE);
+
StringWriter writer = new StringWriter();
marshaller.marshal(original, writer);
http://git-wip-us.apache.org/repos/asf/syncope/blob/09b1e9ac/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
index 22cec77..29bab96 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
@@ -290,23 +290,23 @@ public class SyncopeLogic extends AbstractLogic<AbstractBaseBean> {
numbersInfo.setTotalRoles(roleDAO.count());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.RESOURCE, numbersInfo.getTotalResources() > 0);
+ NumbersInfo.ConfItem.RESOURCE.name(), numbersInfo.getTotalResources() > 0);
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ACCOUNT_POLICY, !policyDAO.find(AccountPolicy.class).isEmpty());
+ NumbersInfo.ConfItem.ACCOUNT_POLICY.name(), !policyDAO.find(AccountPolicy.class).isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.PASSWORD_POLICY, !policyDAO.find(PasswordPolicy.class).isEmpty());
+ NumbersInfo.ConfItem.PASSWORD_POLICY.name(), !policyDAO.find(PasswordPolicy.class).isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.NOTIFICATION, !notificationDAO.findAll().isEmpty());
+ NumbersInfo.ConfItem.NOTIFICATION.name(), !notificationDAO.findAll().isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.SYNC_TASK, !taskDAO.findAll(TaskType.PULL).isEmpty());
+ NumbersInfo.ConfItem.PULL_TASK.name(), !taskDAO.findAll(TaskType.PULL).isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.VIR_SCHEMA, !virSchemaDAO.findAll().isEmpty());
+ NumbersInfo.ConfItem.VIR_SCHEMA.name(), !virSchemaDAO.findAll().isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ANY_TYPE, !anyObjectNumbers.isEmpty());
+ NumbersInfo.ConfItem.ANY_TYPE.name(), !anyObjectNumbers.isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.SECURITY_QUESTION, !securityQuestionDAO.findAll().isEmpty());
+ NumbersInfo.ConfItem.SECURITY_QUESTION.name(), !securityQuestionDAO.findAll().isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ROLE, numbersInfo.getTotalRoles() > 0);
+ NumbersInfo.ConfItem.ROLE.name(), numbersInfo.getTotalRoles() > 0);
return numbersInfo;
}
[2/2] syncope git commit: [SYNCOPE-1141] JAXB Map adapter cannot cope
with Enums, simplifying
Posted by il...@apache.org.
[SYNCOPE-1141] JAXB Map adapter cannot cope with Enums, simplifying
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/631740d6
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/631740d6
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/631740d6
Branch: refs/heads/master
Commit: 631740d6f18037c3d2438f938bcff9000d089e95
Parents: 615b29a
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Jul 4 09:51:35 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Jul 4 09:51:51 2017 +0200
----------------------------------------------------------------------
.../console/widgets/CompletenessWidget.java | 51 ++++++++++----------
.../syncope/common/lib/info/NumbersInfo.java | 16 ++++--
.../org/apache/syncope/common/lib/JAXBTest.java | 41 +++++++++++++++-
.../apache/syncope/core/logic/SyncopeLogic.java | 18 +++----
4 files changed, 86 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/631740d6/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
index 50b45d1..d45e34f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/CompletenessWidget.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.widgets;
import com.pingunaut.wicket.chartjs.chart.impl.Doughnut;
import com.pingunaut.wicket.chartjs.core.panel.DoughnutChartPanel;
import java.util.Map;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
import org.apache.syncope.client.console.pages.Notifications;
@@ -41,7 +42,7 @@ public class CompletenessWidget extends BaseWidget {
private static final long serialVersionUID = 7667120094526529934L;
- private Map<NumbersInfo.ConfItem, Boolean> confCompleteness;
+ private Map<String, Boolean> confCompleteness;
private final DoughnutChartPanel chart;
@@ -59,7 +60,7 @@ public class CompletenessWidget extends BaseWidget {
private final BookmarkablePageLink<Administration> roles;
- public CompletenessWidget(final String id, final Map<NumbersInfo.ConfItem, Boolean> confCompleteness) {
+ public CompletenessWidget(final String id, final Map<String, Boolean> confCompleteness) {
super(id);
this.confCompleteness = confCompleteness;
setOutputMarkupId(true);
@@ -81,45 +82,45 @@ public class CompletenessWidget extends BaseWidget {
MetaDataRoleAuthorizationStrategy.authorize(topology, WebPage.ENABLE,
String.format("%s,%s", StandardEntitlement.CONNECTOR_LIST, StandardEntitlement.RESOURCE_LIST));
topology.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE)
- || !confCompleteness.get(NumbersInfo.ConfItem.SYNC_TASK));
+ !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PULL_TASK.name()));
policies = BookmarkablePageLinkBuilder.build("policies", Policies.class);
policies.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(policies, WebPage.ENABLE, StandardEntitlement.POLICY_LIST);
actions.add(policies);
policies.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY)
- || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY));
+ !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY.name()));
notifications = BookmarkablePageLinkBuilder.build("notifications", Notifications.class);
notifications.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(
notifications, WebPage.ENABLE, StandardEntitlement.NOTIFICATION_LIST);
actions.add(notifications);
- notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION));
+ notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION.name()));
types = BookmarkablePageLinkBuilder.build("types", Types.class);
types.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(types, WebPage.ENABLE, StandardEntitlement.SCHEMA_LIST);
actions.add(types);
types.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA)
- || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE));
+ !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE.name()));
securityquestions = BookmarkablePageLinkBuilder.build("securityquestions", SecurityQuestions.class);
securityquestions.setOutputMarkupPlaceholderTag(true);
actions.add(securityquestions);
- securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION));
+ securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION.name()));
roles = BookmarkablePageLinkBuilder.build("roles", Administration.class);
roles.setOutputMarkupPlaceholderTag(true);
MetaDataRoleAuthorizationStrategy.authorize(roles, WebPage.ENABLE, StandardEntitlement.ROLE_LIST);
actions.add(roles);
- roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE));
+ roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE.name()));
}
- private Pair<Doughnut, Integer> build(final Map<NumbersInfo.ConfItem, Boolean> confCompleteness) {
+ private Pair<Doughnut, Integer> build(final Map<String, Boolean> confCompleteness) {
Doughnut doughnut = new Doughnut();
doughnut.getOptions().setResponsive(true);
doughnut.getOptions().setMaintainAspectRatio(true);
@@ -127,9 +128,9 @@ public class CompletenessWidget extends BaseWidget {
int done = 0;
int todo = 0;
- for (Map.Entry<NumbersInfo.ConfItem, Boolean> entry : confCompleteness.entrySet()) {
- if (entry.getValue()) {
- done += entry.getKey().getScore();
+ for (Map.Entry<String, Boolean> entry : confCompleteness.entrySet()) {
+ if (BooleanUtils.isTrue(entry.getValue())) {
+ done += NumbersInfo.ConfItem.getScore(entry.getKey());
} else {
todo++;
}
@@ -143,7 +144,7 @@ public class CompletenessWidget extends BaseWidget {
return Pair.of(doughnut, todo);
}
- public boolean refresh(final Map<NumbersInfo.ConfItem, Boolean> confCompleteness) {
+ public boolean refresh(final Map<String, Boolean> confCompleteness) {
if (!this.confCompleteness.equals(confCompleteness)) {
this.confCompleteness = confCompleteness;
@@ -154,22 +155,22 @@ public class CompletenessWidget extends BaseWidget {
actions.setVisible(built.getRight() > 0);
topology.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE)
- || !confCompleteness.get(NumbersInfo.ConfItem.SYNC_TASK));
+ !confCompleteness.get(NumbersInfo.ConfItem.RESOURCE.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PULL_TASK.name()));
policies.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY)
- || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY));
+ !confCompleteness.get(NumbersInfo.ConfItem.ACCOUNT_POLICY.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.PASSWORD_POLICY.name()));
- notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION));
+ notifications.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.NOTIFICATION.name()));
types.setVisible(
- !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA)
- || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE));
+ !confCompleteness.get(NumbersInfo.ConfItem.VIR_SCHEMA.name())
+ || !confCompleteness.get(NumbersInfo.ConfItem.ANY_TYPE.name()));
- securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION));
+ securityquestions.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.SECURITY_QUESTION.name()));
- roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE));
+ roles.setVisible(!confCompleteness.get(NumbersInfo.ConfItem.ROLE.name()));
return true;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/631740d6/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java b/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
index 293bb55..d53025c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/info/NumbersInfo.java
@@ -37,13 +37,13 @@ public class NumbersInfo extends AbstractBaseBean {
@XmlEnum
@XmlType(name = "confItem")
- public enum ConfItem {
+ public static enum ConfItem {
RESOURCE(20),
ACCOUNT_POLICY(10),
PASSWORD_POLICY(10),
NOTIFICATION(8),
- SYNC_TASK(10),
+ PULL_TASK(10),
VIR_SCHEMA(10),
ANY_TYPE(5),
SECURITY_QUESTION(12),
@@ -55,7 +55,13 @@ public class NumbersInfo extends AbstractBaseBean {
this.score = score;
}
- public int getScore() {
+ public static int getScore(final String name) {
+ int score = 0;
+ for (ConfItem value : values()) {
+ if (value.name().equals(name)) {
+ score = value.score;
+ }
+ }
return score;
}
@@ -99,7 +105,7 @@ public class NumbersInfo extends AbstractBaseBean {
@XmlJavaTypeAdapter(XmlGenericMapAdapter.class)
@JsonIgnore
- private final Map<ConfItem, Boolean> confCompleteness = new HashMap<>();
+ private final Map<String, Boolean> confCompleteness = new HashMap<>();
public int getTotalUsers() {
return totalUsers;
@@ -191,7 +197,7 @@ public class NumbersInfo extends AbstractBaseBean {
}
@JsonProperty
- public Map<ConfItem, Boolean> getConfCompleteness() {
+ public Map<String, Boolean> getConfCompleteness() {
return confCompleteness;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/631740d6/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
----------------------------------------------------------------------
diff --git a/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java b/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
index a14b878..529e604 100644
--- a/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
+++ b/common/lib/src/test/java/org/apache/syncope/common/lib/JAXBTest.java
@@ -29,6 +29,7 @@ import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.syncope.common.lib.info.NumbersInfo;
import org.apache.syncope.common.lib.patch.UserPatch;
import org.apache.syncope.common.lib.report.UserReportletConf;
import org.apache.syncope.common.lib.to.AttrTO;
@@ -72,7 +73,45 @@ public class JAXBTest {
status.setFailureReason("failed");
status.setBeforeObj(new ConnObjectTO());
original.getPropagationStatuses().add(status);
-
+
+ StringWriter writer = new StringWriter();
+ marshaller.marshal(original, writer);
+
+ Object actual = unmarshaller.unmarshal(new StringReader(writer.toString()));
+ assertEquals(original, actual);
+ }
+
+ @Test
+ public void numbersInfo() throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(NumbersInfo.class);
+ Marshaller marshaller = context.createMarshaller();
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+
+ NumbersInfo original = new NumbersInfo();
+ original.setTotalUsers(5);
+ original.getUsersByRealm().put("/", 4);
+ original.getUsersByRealm().put("/even", 1);
+ original.getUsersByStatus().put("active", 5);
+ original.setTotalGroups(16);
+ original.getGroupsByRealm().put("/", 14);
+ original.getGroupsByRealm().put("/even", 1);
+ original.getGroupsByRealm().put("/odd", 1);
+ original.setAnyType1("PRINTER");
+ original.setTotalAny1(3);
+ original.getAny1ByRealm().put("/", 2);
+ original.getAny1ByRealm().put("/even/two", 1);
+ original.setTotalResources(21);
+ original.setTotalRoles(4);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.ANY_TYPE.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.PULL_TASK.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.ROLE.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.NOTIFICATION.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.PASSWORD_POLICY.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.ACCOUNT_POLICY.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.RESOURCE.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.VIR_SCHEMA.name(), Boolean.TRUE);
+ original.getConfCompleteness().put(NumbersInfo.ConfItem.SECURITY_QUESTION.name(), Boolean.TRUE);
+
StringWriter writer = new StringWriter();
marshaller.marshal(original, writer);
http://git-wip-us.apache.org/repos/asf/syncope/blob/631740d6/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
index 2c3d148..b975b53 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
@@ -287,23 +287,23 @@ public class SyncopeLogic extends AbstractLogic<AbstractBaseBean> {
numbersInfo.setTotalRoles(roleDAO.count());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.RESOURCE, numbersInfo.getTotalResources() > 0);
+ NumbersInfo.ConfItem.RESOURCE.name(), numbersInfo.getTotalResources() > 0);
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ACCOUNT_POLICY, !policyDAO.find(AccountPolicy.class).isEmpty());
+ NumbersInfo.ConfItem.ACCOUNT_POLICY.name(), !policyDAO.find(AccountPolicy.class).isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.PASSWORD_POLICY, !policyDAO.find(PasswordPolicy.class).isEmpty());
+ NumbersInfo.ConfItem.PASSWORD_POLICY.name(), !policyDAO.find(PasswordPolicy.class).isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.NOTIFICATION, !notificationDAO.findAll().isEmpty());
+ NumbersInfo.ConfItem.NOTIFICATION.name(), !notificationDAO.findAll().isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.SYNC_TASK, !taskDAO.findAll(TaskType.PULL).isEmpty());
+ NumbersInfo.ConfItem.PULL_TASK.name(), !taskDAO.findAll(TaskType.PULL).isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.VIR_SCHEMA, !virSchemaDAO.findAll().isEmpty());
+ NumbersInfo.ConfItem.VIR_SCHEMA.name(), !virSchemaDAO.findAll().isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ANY_TYPE, !anyObjectNumbers.isEmpty());
+ NumbersInfo.ConfItem.ANY_TYPE.name(), !anyObjectNumbers.isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.SECURITY_QUESTION, !securityQuestionDAO.findAll().isEmpty());
+ NumbersInfo.ConfItem.SECURITY_QUESTION.name(), !securityQuestionDAO.findAll().isEmpty());
numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ROLE, numbersInfo.getTotalRoles() > 0);
+ NumbersInfo.ConfItem.ROLE.name(), numbersInfo.getTotalRoles() > 0);
return numbersInfo;
}