You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2015/10/30 12:42:18 UTC
[11/28] syncope git commit: [SYNCOPE-156] merge confirmation on
resource/connector deletion
[SYNCOPE-156] merge confirmation on resource/connector deletion
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/2a7cf5ae
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/2a7cf5ae
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/2a7cf5ae
Branch: refs/heads/master
Commit: 2a7cf5aebc31752501bc2ba88e8b0cd41138ae02
Parents: 21262a6
Author: fmartelli <fa...@gmail.com>
Authored: Wed Sep 30 13:59:18 2015 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Wed Sep 30 13:59:18 2015 +0200
----------------------------------------------------------------------
.../client/console/SyncopeConsoleSession.java | 4 +++
.../syncope/client/console/pages/BasePage.java | 2 +-
.../client/console/panels/ConnectorModal.java | 8 ++---
.../console/panels/ResourceMappingPanel.java | 35 +++++++-------------
.../client/console/panels/ResourceModal.java | 8 ++---
.../client/console/rest/BaseRestClient.java | 10 ++++++
.../console/rest/ConnectorRestClient.java | 9 +++--
.../client/console/rest/ResourceRestClient.java | 7 ++--
.../console/topology/TopologyNodePanel.java | 4 +++
.../console/panels/ResourceMappingPanel.html | 10 +++---
10 files changed, 57 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
index 8d71645..f48611f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
@@ -222,4 +222,8 @@ public class SyncopeConsoleSession extends AuthenticatedWebSession {
return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
}
+
+ public MediaType getMediaType() {
+ return clientFactory.getContentType().getMediaType();
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index 622d204..bcbd3bf 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -183,7 +183,7 @@ public class BasePage extends AbstractBasePage implements IAjaxIndicatorAware {
* @param modal window
* @param container container
*/
- public void setWindowClosedCallback(final BaseModal modal, final WebMarkupContainer container) {
+ public void setWindowClosedCallback(final BaseModal<?> modal, final WebMarkupContainer container) {
modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
private static final long serialVersionUID = 8804221891699487139L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
index 95f013f..349560c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
@@ -151,12 +151,12 @@ public class ConnectorModal extends AbstractResourceModal {
try {
if (connInstanceTO.getKey() == 0) {
- connectorRestClient.create(connInstanceTO);
+ final ConnInstanceTO actual = connectorRestClient.create(connInstanceTO);
send(pageRef.getPage(), Broadcast.BREADTH, new CreateEvent(
- connInstanceTO.getKey(),
- connInstanceTO.getDisplayName(),
+ actual.getKey(),
+ actual.getDisplayName(),
TopologyNode.Kind.CONNECTOR,
- URI.create(connInstanceTO.getLocation()).toASCIIString(),
+ URI.create(actual.getLocation()).toASCIIString(),
target));
} else {
connectorRestClient.update(connInstanceTO);
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
index 7a7295a..cdc3fc0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceMappingPanel.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.panels;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -28,8 +29,9 @@ import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.JexlHelpUtils;
import org.apache.syncope.client.console.rest.ConnectorRestClient;
import org.apache.syncope.client.console.rest.SchemaRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDecoratedCheckbox;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
@@ -41,12 +43,10 @@ import org.apache.syncope.common.lib.to.ProvisionTO;
import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.ConnConfProperty;
+import org.apache.syncope.common.lib.types.Entitlement;
import org.apache.syncope.common.lib.types.IntMappingType;
import org.apache.syncope.common.lib.types.MappingPurpose;
-import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@@ -231,12 +231,15 @@ public class ResourceMappingPanel extends Panel {
entity = mapItem.getIntMappingType().getAnyTypeKind();
}
- item.add(new AjaxDecoratedCheckbox("toRemove", new Model<>(Boolean.FALSE)) {
+ final ActionLinksPanel.Builder<Serializable> actions = ActionLinksPanel.builder(
+ getPage().getPageReference());
- private static final long serialVersionUID = 7170946748485726506L;
+ actions.add(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
@Override
- protected void onUpdate(final AjaxRequestTarget target) {
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
int index = -1;
for (int i = 0; i < getMapping().getItems().size() && index == -1; i++) {
if (mapItem.equals(getMapping().getItems().get(i))) {
@@ -250,23 +253,9 @@ public class ResourceMappingPanel extends Panel {
target.add(ResourceMappingPanel.this);
}
}
+ }, ActionLink.ActionType.DELETE, Entitlement.RESOURCE_UPDATE);
- @Override
- protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
- super.updateAjaxAttributes(attributes);
-
- AjaxCallListener ajaxCallListener = new AjaxCallListener() {
-
- private static final long serialVersionUID = 7160235486520935153L;
-
- @Override
- public CharSequence getPrecondition(final Component component) {
- return "if (!confirm('" + getString("confirmDelete") + "')) return false;";
- }
- };
- attributes.getAjaxCallListeners().add(ajaxCallListener);
- }
- });
+ item.add(actions.build("toRemove"));
final AjaxDropDownChoicePanel<String> intAttrNames = new AjaxDropDownChoicePanel<>(
"intAttrNames",
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
index 1f9ae6b..7ea5e96 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
@@ -233,12 +233,12 @@ public class ResourceModal extends AbstractResourceModal {
} else {
try {
if (createFlag) {
- resourceRestClient.create(resourceTO);
+ final ResourceTO actual = resourceRestClient.create(resourceTO);
send(pageRef.getPage(), Broadcast.BREADTH, new CreateEvent(
- resourceTO.getKey(),
- resourceTO.getKey(),
+ actual.getKey(),
+ actual.getKey(),
TopologyNode.Kind.RESOURCE,
- resourceTO.getConnector(),
+ actual.getConnector(),
target));
} else {
resourceRestClient.update(resourceTO);
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/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 0e6fe2c..650818b 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
@@ -19,9 +19,12 @@
package org.apache.syncope.client.console.rest;
import java.io.Serializable;
+import java.net.URI;
+import org.apache.cxf.jaxrs.client.WebClient;
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.wicket.extensions.markup.html.repeater.util.SortParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,4 +63,11 @@ 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) {
+ WebClient webClient = WebClient.fromClient(WebClient.client(service));
+ webClient.accept(SyncopeConsoleSession.get().getMediaType()).to(location.toASCIIString(), false);
+
+ return webClient.get(resultClass);
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorRestClient.java
index d3d18c8..2414070 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorRestClient.java
@@ -23,6 +23,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import javax.ws.rs.core.Response;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.BulkAction;
@@ -56,11 +57,15 @@ public class ConnectorRestClient extends BaseRestClient {
return connectors;
}
- public void create(final ConnInstanceTO connectorTO) {
+ public ConnInstanceTO create(final ConnInstanceTO connectorTO) {
Set<ConnConfProperty> filteredConf = filterProperties(connectorTO.getConfiguration());
connectorTO.getConfiguration().clear();
connectorTO.getConfiguration().addAll(filteredConf);
- getService(ConnectorService.class).create(connectorTO);
+
+ final ConnectorService service = getService(ConnectorService.class);
+ final Response response = service.create(connectorTO);
+
+ return getObject(service, response.getLocation(), ConnInstanceTO.class);
}
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/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 5efa119..3a99c1d 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
@@ -19,6 +19,7 @@
package org.apache.syncope.client.console.rest;
import java.util.List;
+import javax.ws.rs.core.Response;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.BulkAction;
@@ -53,8 +54,10 @@ public class ResourceRestClient extends BaseRestClient {
return resources;
}
- public void create(final ResourceTO resourceTO) {
- getService(ResourceService.class).create(resourceTO);
+ public ResourceTO create(final ResourceTO resourceTO) {
+ final ResourceService service = getService(ResourceService.class);
+ final Response response = service.create(resourceTO);
+ return getObject(service, response.getLocation(), ResourceTO.class);
}
public ResourceTO read(final String name) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
index 9545c31..ff40a8f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
@@ -30,6 +30,7 @@ import org.apache.syncope.client.console.panels.ResourceModal;
import org.apache.syncope.client.console.rest.ConnectorRestClient;
import org.apache.syncope.client.console.rest.ResourceRestClient;
import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.confirmation.ConfirmationModalBehavior;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
@@ -176,6 +177,7 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
}
};
fragment.add(delete);
+ delete.add(new ConfirmationModalBehavior());
MetaDataRoleAuthorizationStrategy.authorize(delete, ENABLE, Entitlement.CONNECTOR_DELETE);
@@ -257,6 +259,8 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
};
fragment.add(delete);
+ delete.add(new ConfirmationModalBehavior());
+
MetaDataRoleAuthorizationStrategy.authorize(delete, ENABLE, Entitlement.RESOURCE_DELETE);
final AjaxLink<String> edit = new ClearIndicatingAjaxLink<String>("edit", pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/2a7cf5ae/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
index ccedbb8..7623837 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
@@ -25,7 +25,6 @@ under the License.
wicket:id="mappingContainer">
<tbody>
<tr>
- <th><wicket:message key="delete"/></th>
<th><wicket:message key="entity"/></th>
<th><wicket:message key="intMappingTypes"/></th>
<th><wicket:message key="intAttrNames"/></th>
@@ -46,12 +45,10 @@ under the License.
<th><wicket:message key="connObjectKey"/></th>
<th><label wicket:id="passwordLabel"/></th>
<th><wicket:message key="purpose"/></th>
+ <th><i class="fa fa-trash"></i></th>
</tr>
<tr wicket:id="mappings">
<td>
- <input type="checkbox" class="text ui-widget-content ui-corner-all" wicket:id="toRemove"/>
- </td>
- <td>
<span wicket:id="entities">[entities]</span>
</td>
<td>
@@ -77,6 +74,11 @@ under the License.
<span wicket:id="purposeActions">[purpose]</span>
</div>
</td>
+ <td>
+ <div style="margin: 10px 0px 10px 0px">
+ <span wicket:id="toRemove"/>
+ </div>
+ </td>
</tr>
</tbody>