You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by ma...@apache.org on 2015/10/23 17:26:37 UTC

syncope git commit: Fixed SYNCOPE-588

Repository: syncope
Updated Branches:
  refs/heads/master 9a1474770 -> 25c41ad81


Fixed SYNCOPE-588


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

Branch: refs/heads/master
Commit: 25c41ad81b491d1df7606f0b88db0c3d6cf079a6
Parents: 9a14747
Author: massi <ma...@tirasa.net>
Authored: Fri Oct 23 17:25:18 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Fri Oct 23 17:25:18 2015 +0200

----------------------------------------------------------------------
 .../cli/commands/CommonsResultManager.java      |  18 +++
 .../connector/ConnectorResultManager.java       |  16 ---
 .../resource/AbstractResourceCommand.java       |  30 +++++
 .../cli/commands/resource/ResourceCommand.java  | 109 +++++++++++++++++++
 .../cli/commands/resource/ResourceDelete.java   |  56 ++++++++++
 .../cli/commands/resource/ResourceList.java     |  32 ++++++
 .../cli/commands/resource/ResourceRead.java     |  60 ++++++++++
 .../resource/ResourceResultManager.java         |  95 ++++++++++++++++
 8 files changed, 400 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
index 7c17550..251297b 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/CommonsResultManager.java
@@ -18,7 +18,9 @@
  */
 package org.apache.syncope.client.cli.commands;
 
+import java.util.Set;
 import org.apache.syncope.client.cli.view.Messages;
+import org.apache.syncope.common.lib.types.ConnConfProperty;
 
 public abstract class CommonsResultManager {
 
@@ -53,4 +55,20 @@ public abstract class CommonsResultManager {
     public void generic(final String... messages) {
         Messages.printMessage(messages);
     }
+    
+    protected void printConfiguration(final Set<ConnConfProperty> configurationPropertys) {
+        for (final ConnConfProperty configuration : configurationPropertys) {
+            System.out.println("       name: " + configuration.getSchema().getName());
+            System.out.println("       values: " + configuration.getValues());
+            System.out.println("       type: " + configuration.getSchema().getType());
+            System.out.println("       display name: " + configuration.getSchema().getDisplayName());
+            System.out.println("       help message: " + configuration.getSchema().getHelpMessage());
+            System.out.println("       order: " + configuration.getSchema().getOrder());
+            System.out.println("       default values: " + configuration.getSchema().getDefaultValues());
+            System.out.println("       confidential: " + configuration.getSchema().isConfidential());
+            System.out.println("       required: " + configuration.getSchema().isRequired());
+            System.out.println("       overridable: " + configuration.isOverridable());
+            System.out.println("");
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
index 913c22e..b6edbc2 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorResultManager.java
@@ -76,22 +76,6 @@ public class ConnectorResultManager extends CommonsResultManager {
         }
     }
 
-    private void printConfiguration(final Set<ConnConfProperty> configurationPropertys) {
-        for (final ConnConfProperty configuration : configurationPropertys) {
-            System.out.println("       name: " + configuration.getSchema().getName());
-            System.out.println("       values: " + configuration.getValues());
-            System.out.println("       type: " + configuration.getSchema().getType());
-            System.out.println("       display name: " + configuration.getSchema().getDisplayName());
-            System.out.println("       help message: " + configuration.getSchema().getHelpMessage());
-            System.out.println("       order: " + configuration.getSchema().getOrder());
-            System.out.println("       default values: " + configuration.getSchema().getDefaultValues());
-            System.out.println("       confidential: " + configuration.getSchema().isConfidential());
-            System.out.println("       required: " + configuration.getSchema().isRequired());
-            System.out.println("       overridable: " + configuration.isOverridable());
-            System.out.println("");
-        }
-    }
-
     private void printConfPool(final ConnPoolConfTO connPoolConfTO) {
         System.out.println("       min idle: " + connPoolConfTO.getMinIdle());
         System.out.println("       min evictlable idle: " + connPoolConfTO.getMinEvictableIdleTimeMillis());

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java
new file mode 100644
index 0000000..85d4a2d
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/AbstractResourceCommand.java
@@ -0,0 +1,30 @@
+/*
+ * 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.cli.commands.resource;
+
+import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.common.rest.api.service.ResourceService;
+
+public abstract class AbstractResourceCommand {
+
+    protected final ResourceService resourceService = SyncopeServices.get(ResourceService.class);
+
+    protected final ResourceResultManager resourceResultManager = new ResourceResultManager();
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceCommand.java
new file mode 100644
index 0000000..942fcd2
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceCommand.java
@@ -0,0 +1,109 @@
+/*
+ * 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.cli.commands.resource;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.cli.Command;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.client.cli.commands.AbstractCommand;
+
+@Command(name = "resource")
+public class ResourceCommand extends AbstractCommand {
+
+    private static final String HELP_MESSAGE = "Usage: resource [options]\n"
+            + "  Options:\n"
+            + "    --help \n"
+            + "    --list \n"
+            + "    --read \n"
+            + "       Syntax: --read {CONNECTOR-ID} {CONNECTOR-ID} [...]\n"
+            + "    --delete \n"
+            + "       Syntax: --delete {CONNECTOR-ID} {CONNECTOR-ID} [...]";
+
+    @Override
+    public void execute(final Input input) {
+        if (StringUtils.isBlank(input.getOption())) {
+            input.setOption(ResourceOptions.HELP.getOptionName());
+        }
+
+        switch (ResourceOptions.fromName(input.getOption())) {
+            case LIST:
+                new ResourceList().list();
+                break;
+            case READ:
+                new ResourceRead(input).read();
+                break;
+            case DELETE:
+                new ResourceDelete(input).delete();
+                break;
+            case HELP:
+                System.out.println(HELP_MESSAGE);
+                break;
+            default:
+                new ResourceResultManager().defaultError(input.getOption(), HELP_MESSAGE);
+        }
+    }
+
+    @Override
+    public String getHelpMessage() {
+        return HELP_MESSAGE;
+    }
+
+    private enum ResourceOptions {
+
+        HELP("--help"),
+        LIST("--list"),
+        READ("--read"),
+        DELETE("--delete");
+
+        private final String optionName;
+
+        ResourceOptions(final String optionName) {
+            this.optionName = optionName;
+        }
+
+        public String getOptionName() {
+            return optionName;
+        }
+
+        public boolean equalsOptionName(final String otherName) {
+            return (otherName == null) ? false : optionName.equals(otherName);
+        }
+
+        public static ResourceOptions fromName(final String name) {
+            ResourceOptions optionToReturn = HELP;
+            for (final ResourceOptions option : ResourceOptions.values()) {
+                if (option.equalsOptionName(name)) {
+                    optionToReturn = option;
+                }
+            }
+            return optionToReturn;
+        }
+
+        public static List<String> toList() {
+            final List<String> options = new ArrayList<>();
+            for (final ResourceOptions value : values()) {
+                options.add(value.getOptionName());
+            }
+            return options;
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java
new file mode 100644
index 0000000..c3ecd84
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceDelete.java
@@ -0,0 +1,56 @@
+/*
+ * 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.cli.commands.resource;
+import javax.xml.ws.WebServiceException;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.common.lib.SyncopeClientException;
+
+public class ResourceDelete extends AbstractResourceCommand {
+
+    private static final String DELETE_HELP_MESSAGE = "resource --delete {RESOURCE-NAME} {RESOURCE-NAME} [...]";
+
+    private final Input input;
+
+    public ResourceDelete(final Input input) {
+        this.input = input;
+    }
+
+    public void delete() {
+        if (input.getParameters().length >= 1) {
+            for (final String parameter : input.getParameters()) {
+                try {
+                    resourceService.delete(parameter);
+                    resourceResultManager.deletedMessage("resource", parameter);
+                } catch (final NumberFormatException ex) {
+                    resourceResultManager.managerNumberFormatException("resource", parameter);
+                } catch (final SyncopeClientException | WebServiceException ex) {
+                    if (ex.getMessage().startsWith("NotFound")) {
+                        resourceResultManager.notFoundError("Resource", parameter);
+                    } else {
+                        resourceResultManager.generic(ex.getMessage());
+                    }
+                    break;
+                }
+            }
+        } else {
+            resourceResultManager.commandOptionError(DELETE_HELP_MESSAGE);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java
new file mode 100644
index 0000000..85f05f5
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceList.java
@@ -0,0 +1,32 @@
+/*
+ * 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.cli.commands.resource;
+
+import org.apache.syncope.common.lib.SyncopeClientException;
+
+public class ResourceList extends AbstractResourceCommand {
+
+    public void list() {
+        try {
+            resourceResultManager.toView(resourceService.list());
+        } catch (final SyncopeClientException ex) {
+            resourceResultManager.generic(ex.getMessage());
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java
new file mode 100644
index 0000000..3790c02
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceRead.java
@@ -0,0 +1,60 @@
+/*
+ * 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.cli.commands.resource;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.ws.WebServiceException;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.ResourceTO;
+
+public class ResourceRead extends AbstractResourceCommand {
+
+    private static final String READ_HELP_MESSAGE = "resource --read {RESOURCE-NAME} {RESOURCE-NAME} [...]";
+
+    private final Input input;
+
+    public ResourceRead(final Input input) {
+        this.input = input;
+    }
+
+    public void read() {
+        if (input.getParameters().length >= 1) {
+            final List<ResourceTO> resourceTOs = new ArrayList<>();
+            for (final String parameter : input.getParameters()) {
+                try {
+                    resourceTOs.add(resourceService.read(parameter));
+                } catch (final NumberFormatException ex) {
+                    resourceResultManager.managerNumberFormatException("resource", parameter);
+                } catch (final SyncopeClientException | WebServiceException ex) {
+                    if (ex.getMessage().startsWith("NotFound")) {
+                        resourceResultManager.notFoundError("Resource", parameter);
+                    } else {
+                        resourceResultManager.generic(ex.getMessage());
+                    }
+                    break;
+                }
+            }
+            resourceResultManager.toView(resourceTOs);
+        } else {
+            resourceResultManager.commandOptionError(READ_HELP_MESSAGE);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/25c41ad8/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
new file mode 100644
index 0000000..91847f4
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/resource/ResourceResultManager.java
@@ -0,0 +1,95 @@
+/*
+ * 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.cli.commands.resource;
+
+import java.util.List;
+import org.apache.syncope.client.cli.commands.CommonsResultManager;
+import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.to.MappingTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+
+public class ResourceResultManager extends CommonsResultManager {
+
+    public void toView(final List<ResourceTO> resourceTOs) {
+        for (final ResourceTO resourceTO : resourceTOs) {
+            printResource(resourceTO);
+        }
+        System.out.println("");
+    }
+
+    private void printResource(final ResourceTO resourceTO) {
+        System.out.println(" > RESOURCE ID: " + resourceTO.getKey());
+        System.out.println("    connector dispaly name: " + resourceTO.getConnectorDisplayName());
+        System.out.println("    etag value: " + resourceTO.getETagValue());
+        System.out.println("    connector id: " + resourceTO.getConnector());
+        System.out.println("    account policy id: " + resourceTO.getAccountPolicy());
+        System.out.println("    password policy id: " + resourceTO.getPasswordPolicy());
+        System.out.println("    sync policy id: " + resourceTO.getSyncPolicy());
+        System.out.println("    creator: " + resourceTO.getCreator());
+        System.out.println("    creation date: " + resourceTO.getCreationDate());
+        System.out.println("    last modifier: " + resourceTO.getLastModifier());
+        System.out.println("    last change date: " + resourceTO.getLastChangeDate());
+        System.out.println("    propagation actions class: " + resourceTO.getPropagationActionsClassNames());
+        System.out.println("    propagation priority: " + resourceTO.getPropagationPriority());
+        System.out.println("    PROVISIONS:");
+        printProvision(resourceTO.getProvisions());
+        System.out.println("    create trace level: " + resourceTO.getCreateTraceLevel());
+        System.out.println("    delete trace level: " + resourceTO.getDeleteTraceLevel());
+        System.out.println("    update trace level: " + resourceTO.getUpdateTraceLevel());
+        System.out.println("    sync trace level: " + resourceTO.getSyncTraceLevel());
+    }
+
+    private void printProvision(final List<ProvisionTO> provisionTOs) {
+        for (final ProvisionTO provisionTO : provisionTOs) {
+            System.out.println("       provision id: " + provisionTO.getKey());
+            System.out.println("       any type: " + provisionTO.getAnyType());
+            System.out.println("       object class: " + provisionTO.getObjectClass());
+            System.out.println("       sync token: " + provisionTO.getSyncToken());
+            System.out.println("       virtual schema: " + provisionTO.getVirSchemas());
+            System.out.println("       MAPPING: ");
+            printMapping(provisionTO.getMapping());
+        }
+        System.out.println("");
+    }
+
+    private void printMapping(final MappingTO mappingTO) {
+        System.out.println("          ConnObjectLink: " + mappingTO.getConnObjectLink());
+        System.out.println("          MAPPING ITEM: ");
+        printMappingItem(mappingTO.getItems());
+        System.out.println("");
+    }
+
+    private void printMappingItem(final List<MappingItemTO> mappingItemTOs) {
+        for (final MappingItemTO mappingItemTO : mappingItemTOs) {
+            System.out.println("             mapping key: " + mappingItemTO.getKey());
+            System.out.println("             mapping item type: " + mappingItemTO.getIntMappingType().name());
+            System.out.println("             internal attribute name: " + mappingItemTO.getIntAttrName());
+            System.out.println("             external attribute name: " + mappingItemTO.getExtAttrName());
+            System.out.println("             mandatory condition: " + mappingItemTO.getMandatoryCondition());
+            System.out.println("             transformers class: "
+                    + mappingItemTO.getMappingItemTransformerClassNames());
+            System.out.println("             purpose: " + mappingItemTO.getPurpose());
+            System.out.println("             connector object key: " + mappingItemTO.isConnObjectKey());
+            System.out.println("             password: " + mappingItemTO.isPassword());
+        }
+        System.out.println("");
+    }
+
+}