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(); }
