Repository: syncope
Updated Branches:
  refs/heads/master b738d3e94 -> 24e414446


[SYNCOPE-156] providing roles and groups assignment features. Still missing 
group extension classes management


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/758adcc4
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/758adcc4
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/758adcc4

Branch: refs/heads/master
Commit: 758adcc4fca30faa87b6e1ce18ad37e94e987886
Parents: b738d3e
Author: fmartelli <[email protected]>
Authored: Thu Nov 19 17:39:35 2015 +0100
Committer: fmartelli <[email protected]>
Committed: Thu Nov 19 17:39:35 2015 +0100

----------------------------------------------------------------------
 .../client/console/rest/AnyTypeRestClient.java  |  12 ++
 .../client/console/rest/BaseRestClient.java     |  16 ++-
 .../client/console/rest/ResourceRestClient.java |   2 +-
 .../client/console/rest/RoleRestClient.java     |  37 ++++++
 .../client/console/topology/Topology.java       | 126 +++++++++----------
 .../console/wizards/any/AnyWizardBuilder.java   |  12 ++
 .../client/console/wizards/any/AuxClasses.java  |  98 ++++++++++++++-
 .../client/console/wizards/any/Resources.java   |   5 +-
 .../client/console/wizards/any/Roles.java       |  53 ++++++++
 .../client/console/wizards/any/AuxClasses.html  |   6 +
 .../client/console/wizards/any/Roles.html       |  26 ++++
 .../persistence/jpa/dao/JPADerSchemaDAO.java    |   4 +-
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  |   4 +-
 .../persistence/jpa/dao/JPAVirSchemaDAO.java    |   4 +-
 14 files changed, 323 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
index 85b7c88..6650a7e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
@@ -65,6 +65,18 @@ public class AnyTypeRestClient extends BaseRestClient {
         return types;
     }
 
+    public static List<AnyTypeClassTO> getAllAnyTypeClass() {
+        List<AnyTypeClassTO> types = null;
+
+        try {
+            types = getService(AnyTypeClassService.class).list();
+        } catch (SyncopeClientException e) {
+            LOG.error("While reading all any types", e);
+        }
+
+        return types;
+    }
+
     public List<AnyTypeClassTO> getAnyTypeClass(final String... 
anyTypeClassNames) {
         List<AnyTypeClassTO> anyTypeClassTOs = new ArrayList<>();
         for (String anyTypeClass : anyTypeClassNames) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
index 1271e35..83a0951 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
@@ -26,6 +26,7 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.rest.api.service.JAXRSService;
+import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,19 +37,23 @@ public abstract class BaseRestClient implements 
Serializable {
 
     private static final long serialVersionUID = 1523999867826481989L;
 
-    protected <T> T getService(final Class<T> serviceClass) {
+    public static SyncopeService getSyncopeService() {
+        return getService(SyncopeService.class);
+    }
+
+    protected static <T> T getService(final Class<T> serviceClass) {
         return SyncopeConsoleSession.get().getService(serviceClass);
     }
 
-    protected <T> T getService(final String etag, final Class<T> serviceClass) 
{
+    protected static <T> T getService(final String etag, final Class<T> 
serviceClass) {
         return SyncopeConsoleSession.get().getService(etag, serviceClass);
     }
 
-    protected <T> void resetClient(final Class<T> serviceClass) {
+    protected static <T> void resetClient(final Class<T> serviceClass) {
         SyncopeConsoleSession.get().resetClient(serviceClass);
     }
 
-    protected String toOrderBy(final SortParam<String> sort) {
+    protected static String toOrderBy(final SortParam<String> sort) {
         OrderByClauseBuilder builder = SyncopeClient.getOrderByClauseBuilder();
 
         String property = sort.getProperty();
@@ -65,7 +70,8 @@ public abstract class BaseRestClient implements Serializable {
         return builder.build();
     }
 
-    protected <E extends JAXRSService, T> T getObject(final E service, final 
URI location, final Class<T> resultClass) {
+    protected static <E extends JAXRSService, T> T getObject(final E service, 
final URI location,
+            final Class<T> resultClass) {
         WebClient webClient = WebClient.fromClient(WebClient.client(service));
         
webClient.accept(SyncopeConsoleApplication.get().getMediaType()).to(location.toASCIIString(),
 false);
         return webClient.get(resultClass);

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java
index e3bc2be..6a6733e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java
@@ -43,7 +43,7 @@ public class ResourceRestClient extends BaseRestClient {
         return new 
ArrayList<>(SyncopeConsoleSession.get().getSyncopeTO().getPropagationActions());
     }
 
-    public List<ResourceTO> getAll() {
+    public static List<ResourceTO> getAll() {
         List<ResourceTO> resources = null;
 
         try {

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.java
new file mode 100644
index 0000000..45d553e
--- /dev/null
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/RoleRestClient.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.rest;
+
+import java.util.List;
+import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.syncope.common.rest.api.service.RoleService;
+import org.springframework.stereotype.Component;
+
+/**
+ * Console client for invoking Rest Group's services.
+ */
+@Component
+public class RoleRestClient extends BaseRestClient {
+
+    private static final long serialVersionUID = 1L;
+
+    public static List<RoleTO> getAll() {
+        return getService(RoleService.class).list();
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
index 3a5cc24..69c690a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
@@ -33,6 +33,7 @@ import 
org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import 
org.apache.syncope.client.console.panels.AbstractResourceModal.CreateEvent;
+import org.apache.syncope.client.console.rest.BaseRestClient;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -41,7 +42,6 @@ import 
org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPane
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -90,51 +90,51 @@ public class Topology extends BasePage {
         }
     };
 
-    private final LoadableDetachableModel<Map<String, List<ConnInstanceTO>>> 
connModel =
-            new LoadableDetachableModel<Map<String, List<ConnInstanceTO>>>() {
+    private final LoadableDetachableModel<Map<String, List<ConnInstanceTO>>> 
connModel
+            = new LoadableDetachableModel<Map<String, List<ConnInstanceTO>>>() 
{
 
-        private static final long serialVersionUID = 5275935387613157432L;
+                private static final long serialVersionUID = 
5275935387613157432L;
 
-        @Override
-        protected Map<String, List<ConnInstanceTO>> load() {
-            final Map<String, List<ConnInstanceTO>> res = new HashMap<>();
-
-            for (ConnInstanceTO conn : connectorRestClient.getAllConnectors()) 
{
-                final List<ConnInstanceTO> conns;
-                if (res.containsKey(conn.getLocation())) {
-                    conns = res.get(conn.getLocation());
-                } else {
-                    conns = new ArrayList<>();
-                    res.put(conn.getLocation(), conns);
+                @Override
+                protected Map<String, List<ConnInstanceTO>> load() {
+                    final Map<String, List<ConnInstanceTO>> res = new 
HashMap<>();
+
+                    for (ConnInstanceTO conn : 
connectorRestClient.getAllConnectors()) {
+                        final List<ConnInstanceTO> conns;
+                        if (res.containsKey(conn.getLocation())) {
+                            conns = res.get(conn.getLocation());
+                        } else {
+                            conns = new ArrayList<>();
+                            res.put(conn.getLocation(), conns);
+                        }
+                        conns.add(conn);
+                    }
+
+                    return res;
                 }
-                conns.add(conn);
-            }
+            };
 
-            return res;
-        }
-    };
+    private final LoadableDetachableModel<Pair<List<URI>, List<URI>>> csModel
+            = new LoadableDetachableModel<Pair<List<URI>, List<URI>>>() {
 
-    private final LoadableDetachableModel<Pair<List<URI>, List<URI>>> csModel =
-            new LoadableDetachableModel<Pair<List<URI>, List<URI>>>() {
+                private static final long serialVersionUID = 
5275935387613157433L;
 
-        private static final long serialVersionUID = 5275935387613157433L;
+                @Override
+                protected Pair<List<URI>, List<URI>> load() {
+                    final List<URI> connectorServers = new ArrayList<>();
+                    final List<URI> filePaths = new ArrayList<>();
 
-        @Override
-        protected Pair<List<URI>, List<URI>> load() {
-            final List<URI> connectorServers = new ArrayList<>();
-            final List<URI> filePaths = new ArrayList<>();
-
-            for (String location : 
SyncopeConsoleSession.get().getSyncopeTO().getConnIdLocations()) {
-                if (location.startsWith(CONNECTOR_SERVER_LOCATION_PREFIX)) {
-                    connectorServers.add(URI.create(location));
-                } else {
-                    filePaths.add(URI.create(location));
-                }
-            }
+                    for (String location : 
SyncopeConsoleSession.get().getSyncopeTO().getConnIdLocations()) {
+                        if 
(location.startsWith(CONNECTOR_SERVER_LOCATION_PREFIX)) {
+                            connectorServers.add(URI.create(location));
+                        } else {
+                            filePaths.add(URI.create(location));
+                        }
+                    }
 
-            return Pair.of(connectorServers, filePaths);
-        }
-    };
+                    return Pair.of(connectorServers, filePaths);
+                }
+            };
 
     protected enum SupportedOperation {
 
@@ -200,7 +200,7 @@ public class Topology extends BasePage {
         syncopeTopologyNode.setX(origX);
         syncopeTopologyNode.setY(origY);
 
-        final URI uri = 
WebClient.client(SyncopeConsoleSession.get().getService(SyncopeService.class)).getBaseURI();
+        final URI uri = 
WebClient.client(BaseRestClient.getSyncopeService()).getBaseURI();
         syncopeTopologyNode.setHost(uri.getHost());
         syncopeTopologyNode.setPort(uri.getPort());
 
@@ -400,37 +400,37 @@ public class Topology extends BasePage {
                 final ListView<TopologyNode> innerListView = new 
ListView<TopologyNode>("resources",
                         new 
ArrayList<>(connections.get(connectorId).values())) {
 
-                    private static final long serialVersionUID = 1L;
+                            private static final long serialVersionUID = 1L;
 
-                    private final int size = getModelObject().size() + 1;
+                            private final int size = getModelObject().size() + 
1;
 
-                    @Override
-                    protected void populateItem(final ListItem<TopologyNode> 
item) {
-                        final TopologyNode topologynode = 
item.getModelObject();
-                        final TopologyNode parent = 
connectors.get(connectorId);
+                            @Override
+                            protected void populateItem(final 
ListItem<TopologyNode> item) {
+                                final TopologyNode topologynode = 
item.getModelObject();
+                                final TopologyNode parent = 
connectors.get(connectorId);
 
-                        // Set position
-                        int kx = size >= 16 ? 800 : (48 * size);
-                        int ky = size < 4 ? 100 : size < 6 ? 350 : 750;
+                                // Set position
+                                int kx = size >= 16 ? 800 : (48 * size);
+                                int ky = size < 4 ? 100 : size < 6 ? 350 : 750;
 
-                        final double hpos;
-                        if (parent == null || parent.getY() < 
syncopeTopologyNode.getY()) {
-                            hpos = Math.PI;
-                        } else {
-                            hpos = 0.0;
-                        }
+                                final double hpos;
+                                if (parent == null || parent.getY() < 
syncopeTopologyNode.getY()) {
+                                    hpos = Math.PI;
+                                } else {
+                                    hpos = 0.0;
+                                }
 
-                        int x = (int) Math.round((parent == null ? origX : 
parent.getX())
-                                + kx * Math.cos(hpos + Math.PI * 
(item.getIndex() + 1) / size));
-                        int y = (int) Math.round((parent == null ? origY : 
parent.getY())
-                                + ky * Math.sin(hpos + Math.PI * 
(item.getIndex() + 1) / size));
+                                int x = (int) Math.round((parent == null ? 
origX : parent.getX())
+                                        + kx * Math.cos(hpos + Math.PI * 
(item.getIndex() + 1) / size));
+                                int y = (int) Math.round((parent == null ? 
origY : parent.getY())
+                                        + ky * Math.sin(hpos + Math.PI * 
(item.getIndex() + 1) / size));
 
-                        topologynode.setX(x);
-                        topologynode.setY(y);
+                                topologynode.setX(x);
+                                topologynode.setY(y);
 
-                        item.add(topologyNodePanel("res", topologynode));
-                    }
-                };
+                                item.add(topologyNodePanel("res", 
topologynode));
+                            }
+                        };
 
                 innerListView.setOutputMarkupId(true);
                 item.add(innerListView);

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/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 92ae247..cbcdc1d 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
@@ -29,6 +29,7 @@ import org.apache.syncope.common.lib.patch.AnyObjectPatch;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.model.util.ListModel;
@@ -58,11 +59,22 @@ public class AnyWizardBuilder<T extends AnyTO> extends 
AjaxWizardBuilder<T> impl
     @Override
     protected WizardModel buildModelSteps(final T modelObject, final 
WizardModel wizardModel) {
         final String[] clazzes = anyTypeClasses.toArray(new String[] {});
+        // optional details panel step
         addOptionalDetailsPanel(modelObject, wizardModel);
+
         wizardModel.add(new AuxClasses(modelObject, clazzes));
+
+        // attributes panel steps
         wizardModel.add(new PlainAttrs(modelObject, null, Mode.ADMIN, 
clazzes));
         wizardModel.add(new DerAttrs(modelObject, clazzes));
         wizardModel.add(new VirAttrs(modelObject, clazzes));
+
+        // role panel step (jst available for users)
+        if ((this instanceof UserWizardBuilder) && (modelObject instanceof 
UserTO)) {
+            wizardModel.add(new Roles(UserTO.class.cast(modelObject)));
+        }
+
+        // resource panel step
         wizardModel.add(new Resources(modelObject));
         return wizardModel;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
index c30ad98..5e74749 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
@@ -21,12 +21,22 @@ package org.apache.syncope.client.console.wizards.any;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
+import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import org.apache.syncope.client.console.rest.GroupRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
-import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
+import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.MembershipTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.util.ListModel;
 
@@ -34,15 +44,94 @@ public class AuxClasses extends WizardStep {
 
     private static final long serialVersionUID = 552437609667518888L;
 
+    private final GroupRestClient groupRestClient = new GroupRestClient();
+
+    private static final Pattern GROUP_ID_PATTERN = 
Pattern.compile("\\[(\\d)\\]? (.*)");
+
     public <T extends AnyTO> AuxClasses(final T entityTO, final String... 
anyTypeClass) {
         this.setOutputMarkupId(true);
 
-        final AnyTypeClassService service = 
SyncopeConsoleSession.get().getService(AnyTypeClassService.class);
+        final Fragment fragment;
+        if (entityTO instanceof GroupTO) {
+            fragment = new Fragment("groups", "emptyFragment", this);
+        } else {
+            fragment = new Fragment("groups", "groupsFragment", this);
+
+            final List<MembershipTO> memberships = entityTO instanceof UserTO
+                    ? UserTO.class.cast(entityTO).getMemberships()
+                    : AnyObjectTO.class.cast(entityTO).getMemberships();
+
+            fragment.add(new AjaxPalettePanel<>(
+                    "groups",
+                    new ListModel<String>(CollectionUtils.collect(memberships,
+                                    new Transformer<MembershipTO, String>() {
+
+                                        @Override
+                                        public String transform(final 
MembershipTO input) {
+                                            return String.format("[%d] %s", 
input.getRightKey(), input.getGroupName());
+                                        }
+                                    }, new ArrayList<String>())) {
+
+                        private static final long serialVersionUID = 1L;
 
+                        @Override
+                        public void setObject(final List<String> object) {
+                            super.setObject(object);
+                            memberships.clear();
+                            CollectionUtils.collect(getObject(), new 
Transformer<String, MembershipTO>() {
+
+                                @Override
+                                public MembershipTO transform(final String 
input) {
+                                    final Matcher m = 
GROUP_ID_PATTERN.matcher(input);
+                                    final String groupName;
+                                    final long groupKey;
+                                    if (m.matches()) {
+                                        groupKey = Long.parseLong(m.group(1));
+                                        groupName = m.group(2);
+                                    } else {
+                                        groupKey = -1L;
+                                        groupName = input;
+                                    }
+
+                                    return new 
MembershipTO.Builder().left(entityTO.getType(), entityTO.getKey()).
+                                    group(groupKey, groupName).build();
+                                }
+                            }, memberships);
+                        }
+                    },
+                    new 
ListModel<>(CollectionUtils.collect(groupRestClient.list(
+                                            entityTO.getRealm(), -1, -1, new 
SortParam<>("name", true), null),
+                                    new Transformer<GroupTO, String>() {
+
+                                        @Override
+                                        public String transform(final GroupTO 
input) {
+                                            return String.format("[%d] %s", 
input.getKey(), input.getName());
+                                        }
+                                    }, new ArrayList<String>())),
+                    true).setOutputMarkupId(true));
+        }
+        add(fragment);
+
+//        add(new AjaxPalettePanel<>(
+//                "auxClasses",
+//                new PropertyModel<List<String>>(entityTO, "auxClasses"),
+//                new ListModel<String>(ListUtils.<String>subtract(
+//                                CollectionUtils.<AnyTypeClassTO, String, 
List<String>>collect(
+//                                        
AnyTypeRestClient.getAllAnyTypeClass(),
+//                                        new Transformer<AnyTypeClassTO, 
String>() {
+//
+//                                            @Override
+//                                            public String transform(final 
AnyTypeClassTO input) {
+//                                                return input.getKey();
+//                                            }
+//                                        }, new ArrayList<String>()),
+//                                Arrays.<String>asList(anyTypeClass))),
+//                true).setOutputMarkupId(true));
+//        
         final List<String> current = Arrays.asList(anyTypeClass);
 
         final List<String> choices = new ArrayList<String>();
-        for (AnyTypeClassTO aux : service.list()) {
+        for (AnyTypeClassTO aux : AnyTypeRestClient.getAllAnyTypeClass()) {
             if (!current.contains(aux.getKey())) {
                 choices.add(aux.getKey());
             }
@@ -53,5 +142,6 @@ public class AuxClasses extends WizardStep {
                 new PropertyModel<List<String>>(entityTO, "auxClasses"),
                 new ListModel<>(choices),
                 true).setOutputMarkupId(true));
+
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
index 194bbce..8f9a362 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
@@ -22,11 +22,10 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.Transformer;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.rest.ResourceRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.wicket.extensions.wizard.WizardStep;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.util.ListModel;
@@ -55,7 +54,7 @@ public class Resources extends WizardStep {
                     }
                 },
                 new ListModel<>(CollectionUtils.collect(
-                                
SyncopeConsoleSession.get().getService(ResourceService.class).list(),
+                                ResourceRestClient.getAll(),
                                 new Transformer<ResourceTO, String>() {
 
                                     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
new file mode 100644
index 0000000..179783a
--- /dev/null
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.any;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
+import org.apache.syncope.client.console.rest.RoleRestClient;
+import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.util.ListModel;
+
+public class Roles extends WizardStep {
+
+    private static final long serialVersionUID = 552437609667518888L;
+
+    public <T extends AnyTO> Roles(final UserTO entityTO) {
+        this.setOutputMarkupId(true);
+
+        add(new AjaxPalettePanel<>("roles",
+                new PropertyModel<List<String>>(entityTO, "roles"),
+                new ListModel<>(CollectionUtils.collect(
+                                RoleRestClient.getAll(),
+                                new Transformer<RoleTO, String>() {
+
+                                    @Override
+                                    public String transform(final RoleTO 
input) {
+                                        return input.getKey();
+                                    }
+                                }, new 
ArrayList<String>()))).setOutputMarkupId(true));
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/AuxClasses.html
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/AuxClasses.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/AuxClasses.html
index b38ead8..a2468a3 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/AuxClasses.html
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/AuxClasses.html
@@ -20,7 +20,13 @@ under the License.
   <head><title></title></head>
   <body>
     <wicket:panel>
+      <span wicket:id="groups"/>
       <span wicket:id="auxClasses">[AUX]</span>
+
+      <wicket:fragment wicket:id="emptyFragment"/>
+      <wicket:fragment wicket:id="groupsFragment">
+        <span wicket:id="groups"/>
+      </wicket:fragment>
     </wicket:panel>
   </body>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Roles.html
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Roles.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Roles.html
new file mode 100644
index 0000000..1f3ff53
--- /dev/null
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/Roles.html
@@ -0,0 +1,26 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
+  <head><title></title></head>
+  <body>
+    <wicket:panel>
+      <span wicket:id="roles">[ROLES]</span>
+    </wicket:panel>
+  </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
index 5b342b2..d09ae25 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
@@ -49,11 +49,11 @@ public class JPADerSchemaDAO extends AbstractDAO<DerSchema, 
String> implements D
                 append(JPADerSchema.class.getSimpleName()).
                 append(" e WHERE ");
         for (AnyTypeClass anyTypeClass : anyTypeClasses) {
-            
queryString.append("e.anyTypeClass.name='").append(anyTypeClass.getKey()).append("'
 OR");
+            
queryString.append("e.anyTypeClass.name='").append(anyTypeClass.getKey()).append("'
 OR ");
         }
 
         TypedQuery<DerSchema> query = entityManager().createQuery(
-                queryString.substring(0, queryString.length() - 3), 
DerSchema.class);
+                queryString.substring(0, queryString.length() - 4), 
DerSchema.class);
 
         return query.getResultList();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
index d6e0315..fe9e573 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
@@ -55,11 +55,11 @@ public class JPAPlainSchemaDAO extends 
AbstractDAO<PlainSchema, String> implemen
                 append(JPAPlainSchema.class.getSimpleName()).
                 append(" e WHERE ");
         for (AnyTypeClass anyTypeClass : anyTypeClasses) {
-            
queryString.append("e.anyTypeClass.name='").append(anyTypeClass.getKey()).append("'
 OR");
+            
queryString.append("e.anyTypeClass.name='").append(anyTypeClass.getKey()).append("'
 OR ");
         }
 
         TypedQuery<PlainSchema> query = entityManager().createQuery(
-                queryString.substring(0, queryString.length() - 3), 
PlainSchema.class);
+                queryString.substring(0, queryString.length() - 4), 
PlainSchema.class);
 
         return query.getResultList();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/758adcc4/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
index 854b065..dd77060 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
@@ -51,11 +51,11 @@ public class JPAVirSchemaDAO extends AbstractDAO<VirSchema, 
String> implements V
                 append(JPAVirSchema.class.getSimpleName()).
                 append(" e WHERE ");
         for (AnyTypeClass anyTypeClass : anyTypeClasses) {
-            
queryString.append("e.anyTypeClass.name='").append(anyTypeClass.getKey()).append("'
 OR");
+            
queryString.append("e.anyTypeClass.name='").append(anyTypeClass.getKey()).append("'
 OR ");
         }
 
         TypedQuery<VirSchema> query = entityManager().createQuery(
-                queryString.substring(0, queryString.length() - 3), 
VirSchema.class);
+                queryString.substring(0, queryString.length() - 4), 
VirSchema.class);
 
         return query.getResultList();
     }

Reply via email to