You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/06/27 10:18:40 UTC

[2/3] syncope git commit: [SYNCOPE-879] Fix

[SYNCOPE-879] Fix


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

Branch: refs/heads/master
Commit: 6a5fa8416222ff60fb627a748fc9be9f948339e2
Parents: 21658a5
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Jun 24 16:31:12 2016 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Jun 24 16:31:12 2016 +0200

----------------------------------------------------------------------
 .../console/rest/ConnectorRestClient.java       | 22 +++++++++
 .../wizards/resources/ResourceMappingPanel.java | 49 ++++++++++----------
 .../resources/ResourceProvisionPanel.java       | 41 +++++-----------
 3 files changed, 58 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/6a5fa841/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 519b1c0..f6df407 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
@@ -24,6 +24,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import javax.ws.rs.core.Response;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -64,6 +66,26 @@ public class ConnectorRestClient extends BaseRestClient {
         return getObject(service, response.getLocation(), ConnInstanceTO.class);
     }
 
+    public List<String> getExtAttrNames(
+            final String objectClass, final String connectorKey, final Set<ConnConfProperty> conf) {
+
+        ConnInstanceTO connInstanceTO = new ConnInstanceTO();
+        connInstanceTO.setKey(connectorKey);
+        connInstanceTO.getConf().addAll(conf);
+
+        // SYNCOPE-156: use provided info to give schema names (and type!) by ObjectClass
+        ConnIdObjectClassTO connIdObjectClass = IterableUtils.find(
+                buildObjectClassInfo(connInstanceTO, false), new Predicate<ConnIdObjectClassTO>() {
+
+            @Override
+            public boolean evaluate(final ConnIdObjectClassTO object) {
+                return object.getType().equalsIgnoreCase(objectClass);
+            }
+        });
+
+        return connIdObjectClass == null ? new ArrayList<String>() : connIdObjectClass.getAttributes();
+    }
+
     /**
      * Load an already existent connector by its name.
      *

http://git-wip-us.apache.org/repos/asf/syncope/blob/6a5fa841/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
index 158b170..476cb5c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
@@ -38,6 +38,7 @@ import org.apache.syncope.client.console.commons.ConnIdSpecialAttributeName;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
@@ -67,6 +68,7 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
@@ -137,14 +139,6 @@ public class ResourceMappingPanel extends Panel {
      */
     private final WebMarkupContainer mappingContainer;
 
-    private MappingTO getMapping() {
-        if (provisionTO.getMapping() == null) {
-            provisionTO.setMapping(new MappingTO());
-        }
-
-        return provisionTO.getMapping();
-    }
-
     /**
      * Attribute Mapping Panel.
      *
@@ -164,16 +158,26 @@ public class ResourceMappingPanel extends Panel {
         super(id);
         setOutputMarkupId(true);
 
-        this.provisionTO = provisionTO == null ? new ProvisionTO() : provisionTO;
-        if (provisionTO == null) {
-            getMapping().getItems().clear();
-            getMapping().setConnObjectLink(null);
+        this.provisionTO = provisionTO;
+        if (provisionTO.getMapping() == null) {
+            provisionTO.setMapping(new MappingTO());
         }
 
+        final LoadableDetachableModel<List<String>> extAttrNames = new LoadableDetachableModel<List<String>>() {
+
+            private static final long serialVersionUID = 5275935387613157437L;
+
+            @Override
+            protected List<String> load() {
+                return new ConnectorRestClient().getExtAttrNames(
+                        provisionTO.getObjectClass(),
+                        resourceTO.getConnector(),
+                        resourceTO.getConfOverride());
+            }
+        };
+
         this.mappingContainer = new WebMarkupContainer("mappingContainer");
         this.mappingContainer.setOutputMarkupId(true);
-        this.mappingContainer.setEnabled(provisionTO != null);
-        this.mappingContainer.setVisible(provisionTO != null);
         add(this.mappingContainer);
 
         mappingContainer.add(new Label("intAttrNameInfo", Model.of()).add(new PopoverBehavior(
@@ -199,7 +203,7 @@ public class ResourceMappingPanel extends Panel {
         passwordLabel = new Label("passwordLabel", new ResourceModel("password"));
         mappingContainer.add(passwordLabel);
 
-        Collections.sort(getMapping().getItems(), new Comparator<MappingItemTO>() {
+        Collections.sort(provisionTO.getMapping().getItems(), new Comparator<MappingItemTO>() {
 
             @Override
             public int compare(final MappingItemTO left, final MappingItemTO right) {
@@ -242,7 +246,7 @@ public class ResourceMappingPanel extends Panel {
             }
         });
 
-        mappings = new ListView<MappingItemTO>("mappings", getMapping().getItems()) {
+        mappings = new ListView<MappingItemTO>("mappings", provisionTO.getMapping().getItems()) {
 
             private static final long serialVersionUID = 4949588177564901031L;
 
@@ -273,10 +277,7 @@ public class ResourceMappingPanel extends Panel {
                         "extAttrName",
                         getString("extAttrName"),
                         new PropertyModel<String>(mapItem, "extAttrName"));
-                extAttrName.setChoices(ResourceProvisionPanel.getExtAttrNames(
-                        ResourceMappingPanel.this.provisionTO.getObjectClass(),
-                        resourceTO.getConnector(),
-                        resourceTO.getConfOverride()));
+                extAttrName.setChoices(extAttrNames.getObject());
 
                 boolean required = !mapItem.isPassword();
                 extAttrName.setRequired(required).hideLabel();
@@ -355,14 +356,14 @@ public class ResourceMappingPanel extends Panel {
                     @Override
                     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))) {
+                        for (int i = 0; i < provisionTO.getMapping().getItems().size() && index == -1; i++) {
+                            if (mapItem.equals(provisionTO.getMapping().getItems().get(i))) {
                                 index = i;
                             }
                         }
 
                         if (index != -1) {
-                            getMapping().getItems().remove(index);
+                            provisionTO.getMapping().getItems().remove(index);
                             item.getParent().removeAll();
                             target.add(ResourceMappingPanel.this);
                         }
@@ -440,7 +441,7 @@ public class ResourceMappingPanel extends Panel {
 
             @Override
             protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
-                getMapping().getItems().add(new MappingItemTO());
+                provisionTO.getMapping().getItems().add(new MappingItemTO());
                 target.add(ResourceMappingPanel.this);
             }
         };

http://git-wip-us.apache.org/repos/asf/syncope/blob/6a5fa841/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index e7debac..28f0346 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -22,7 +22,6 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.IteratorUtils;
 import org.apache.commons.collections4.Predicate;
@@ -43,13 +42,10 @@ import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPan
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
-import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.MappingItemTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.OrgUnitTO;
-import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.wicket.PageReference;
@@ -67,6 +63,8 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
 
     private static final long serialVersionUID = -7982691107029848579L;
 
+    private final ConnectorRestClient connectorRestClient = new ConnectorRestClient();
+    
     private final ResourceTO resourceTO;
 
     private Model<OrgUnitTO> baseModel;
@@ -77,6 +75,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
             final BaseModal<Serializable> modal,
             final ResourceTO resourceTO,
             final PageReference pageRef) {
+
         super(modal, pageRef);
         this.resourceTO = resourceTO;
 
@@ -117,10 +116,12 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
                 getString("extAttrName"),
                 new PropertyModel<String>(baseModel.getObject(), "extAttrName"),
                 false);
-        extAttrName.setChoices(ResourceProvisionPanel.getExtAttrNames(
-                resourceTO.getOrgUnit() == null ? StringUtils.EMPTY : resourceTO.getOrgUnit().getObjectClass(),
-                resourceTO.getConnector(),
-                resourceTO.getConfOverride()));
+        if (resourceTO.getOrgUnit() != null) {
+            extAttrName.setChoices(connectorRestClient.getExtAttrNames(
+                    resourceTO.getOrgUnit().getObjectClass(),
+                    resourceTO.getConnector(),
+                    resourceTO.getConfOverride()));
+        }
         realmsProvisionContainer.add(extAttrName.addRequiredLabel());
 
         objectClass.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_BLUR) {
@@ -129,7 +130,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
 
             @Override
             protected void onUpdate(final AjaxRequestTarget target) {
-                extAttrName.setChoices(ResourceProvisionPanel.getExtAttrNames(
+                extAttrName.setChoices(connectorRestClient.getExtAttrNames(
                         objectClass.getModelObject(),
                         resourceTO.getConnector(),
                         resourceTO.getConfOverride()));
@@ -281,7 +282,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
                     @Override
                     public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
                         resourceTO.getProvisions().remove(provisionTO);
-                        send(ResourceProvisionPanel.this, Broadcast.DEPTH, new ListViewReload<Serializable>(target));
+                        send(ResourceProvisionPanel.this, Broadcast.DEPTH, new ListViewReload<>(target));
                     }
                 }, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_DELETE);
 
@@ -334,28 +335,8 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
         ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
     }
 
-    protected static List<String> getExtAttrNames(
-            final String objectClass, final String connectorKey, final Set<ConnConfProperty> conf) {
-        ConnInstanceTO connInstanceTO = new ConnInstanceTO();
-        connInstanceTO.setKey(connectorKey);
-        connInstanceTO.getConf().addAll(conf);
-
-        // SYNCOPE-156: use provided info to give schema names (and type!) by ObjectClass
-        ConnIdObjectClassTO connIdObjectClass = IterableUtils.find(new ConnectorRestClient().
-                buildObjectClassInfo(connInstanceTO, false), new Predicate<ConnIdObjectClassTO>() {
-
-            @Override
-            public boolean evaluate(final ConnIdObjectClassTO object) {
-                return object.getType().equalsIgnoreCase(objectClass);
-            }
-        });
-
-        return connIdObjectClass == null ? new ArrayList<String>() : connIdObjectClass.getAttributes();
-    }
-
     @Override
     public void onEvent(final IEvent<?> event) {
-
         if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent) {
             aboutRealmProvison.setVisible(false);
             ((AjaxWizard.NewItemEvent) event.getPayload()).getTarget().add(aboutRealmProvison);