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/23 12:29:52 UTC
[51/54] [abbrv] syncope git commit: refactoring of the policy stack ,
SYNCOPE-158
refactoring of the policy stack , SYNCOPE-158
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/49313303
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/49313303
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/49313303
Branch: refs/heads/SYNCOPE-156
Commit: 493133037c867b335f1e5f046bba8fa78ad40f55
Parents: 79d0316
Author: massi <ma...@tirasa.net>
Authored: Thu Oct 22 15:45:18 2015 +0200
Committer: massi <ma...@tirasa.net>
Committed: Thu Oct 22 15:45:18 2015 +0200
----------------------------------------------------------------------
.../commands/policy/AbstractPolicyCommand.java | 30 +++++
.../cli/commands/policy/PolicyDelete.java | 59 +++++++++
.../client/cli/commands/policy/PolicyList.java | 59 +++++++++
.../client/cli/commands/policy/PolicyRead.java | 58 +++++++++
.../commands/policy/PolicyResultManager.java | 120 +++++++++++++++++++
5 files changed, 326 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/49313303/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/AbstractPolicyCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/AbstractPolicyCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/AbstractPolicyCommand.java
new file mode 100644
index 0000000..0bab4e5
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/AbstractPolicyCommand.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.policy;
+
+import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.common.rest.api.service.PolicyService;
+
+public abstract class AbstractPolicyCommand {
+
+ protected final PolicyService policyService = SyncopeServices.get(PolicyService.class);
+
+ protected final PolicyResultManager policyResultManager = new PolicyResultManager();
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/49313303/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyDelete.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyDelete.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyDelete.java
new file mode 100644
index 0000000..15ffa8d
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyDelete.java
@@ -0,0 +1,59 @@
+/*
+ * 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.policy;
+
+import javax.xml.ws.WebServiceException;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.common.lib.SyncopeClientException;
+
+public class PolicyDelete extends AbstractPolicyCommand {
+
+ private static final String DELETE_HELP_MESSAGE = "policy --delete {POLICY-ID} {POLICY-ID} [...]";
+
+ private final Input input;
+
+ public PolicyDelete(final Input input) {
+ this.input = input;
+ }
+
+ public void delete() {
+ if (input.parameterNumber() >= 1) {
+ for (final String parameter : input.getParameters()) {
+ try {
+ policyService.delete(Long.valueOf(parameter));
+ policyResultManager.deletedMessage("Policy", parameter);
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ System.out.println("Error:");
+ if (ex.getMessage().startsWith("NotFound")) {
+ policyResultManager.notFoundError("Policy", parameter);
+ } else if (ex.getMessage().startsWith("DataIntegrityViolation")) {
+ policyResultManager.generic("You cannot delete policy " + parameter);
+ } else {
+ policyResultManager.generic(ex.getMessage());
+ }
+ } catch (final NumberFormatException ex) {
+ policyResultManager.notBooleanDeletedError("policy", parameter);
+ }
+ }
+ } else {
+ policyResultManager.commandOptionError(DELETE_HELP_MESSAGE);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/49313303/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyList.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyList.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyList.java
new file mode 100644
index 0000000..c05acf7
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyList.java
@@ -0,0 +1,59 @@
+/*
+ * 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.policy;
+
+import java.util.LinkedList;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.client.cli.util.CommandUtils;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
+import org.apache.syncope.common.lib.types.PolicyType;
+
+public class PolicyList extends AbstractPolicyCommand {
+
+ private static final String LIST_HELP_MESSAGE = "policy --list-policy {POLICY-TYPE}\n"
+ + " Policy type: ACCOUNT / PASSWORD / SYNC / PUSH";
+
+ private final Input input;
+
+ public PolicyList(final Input input) {
+ this.input = input;
+ }
+
+ public void list() {
+
+ if (input.parameterNumber() == 1) {
+ try {
+ final PolicyType policyType = PolicyType.valueOf(input.firstParameter());
+ final LinkedList<AbstractPolicyTO> policyTOs = new LinkedList<>();
+ for (final AbstractPolicyTO policyTO : policyService.list(policyType)) {
+ policyTOs.add(policyTO);
+ }
+ policyResultManager.fromList(policyType, policyTOs);
+ } catch (final SyncopeClientException ex) {
+ policyResultManager.generic(ex.getMessage());
+ } catch (final IllegalArgumentException ex) {
+ policyResultManager.typeNotValidError(
+ "policy", input.firstParameter(), CommandUtils.fromEnumToArray(PolicyType.class));
+ }
+ } else {
+ policyResultManager.commandOptionError(LIST_HELP_MESSAGE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/49313303/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java
new file mode 100644
index 0000000..f20d41e
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java
@@ -0,0 +1,58 @@
+/*
+ * 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.policy;
+
+import java.util.LinkedList;
+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.policy.AbstractPolicyTO;
+
+public class PolicyRead extends AbstractPolicyCommand {
+
+ private static final String READ_HELP_MESSAGE = "policy --read {POLICY-ID} {POLICY-ID} [...]";
+
+ private final Input input;
+
+ public PolicyRead(final Input input) {
+ this.input = input;
+ }
+
+ public void read() {
+ if (input.parameterNumber() >= 1) {
+ final LinkedList<AbstractPolicyTO> policyTOs = new LinkedList<>();
+ for (final String parameter : input.getParameters()) {
+ try {
+ policyTOs.add(policyService.read(Long.valueOf(parameter)));
+ policyResultManager.fromRead(policyTOs);
+ } catch (final NumberFormatException ex) {
+ policyResultManager.notBooleanDeletedError("policy", parameter);
+ } catch (final WebServiceException | SyncopeClientException ex) {
+ if (ex.getMessage().startsWith("NotFound")) {
+ policyResultManager.notFoundError("Policy", parameter);
+ } else {
+ policyResultManager.generic(ex.getMessage());
+ }
+ }
+ }
+ } else {
+ policyResultManager.commandOptionError(READ_HELP_MESSAGE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/49313303/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
new file mode 100644
index 0000000..88e40a0
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyResultManager.java
@@ -0,0 +1,120 @@
+/*
+ * 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.policy;
+
+import java.util.LinkedList;
+import org.apache.syncope.client.cli.commands.CommonsResultManager;
+import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
+import org.apache.syncope.common.lib.policy.AccountPolicyTO;
+import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
+import org.apache.syncope.common.lib.policy.SyncPolicyTO;
+import org.apache.syncope.common.lib.types.PolicyType;
+
+public class PolicyResultManager extends CommonsResultManager {
+
+ public void fromRead(final LinkedList<AbstractPolicyTO> policyTOs) {
+ for (AbstractPolicyTO policyTO : policyTOs) {
+ if (!policyTOs.isEmpty()) {
+ final PolicyType policyType = policyTO.getType();
+ switch (policyType) {
+ case ACCOUNT:
+ printAccountPolicy((AccountPolicyTO) policyTO);
+ break;
+ case PASSWORD:
+ printPasswordPolicy((PasswordPolicyTO) policyTO);
+ break;
+ case PUSH:
+ System.out.println(policyTO);
+ break;
+ case SYNC:
+ printSyncPolicy((SyncPolicyTO) policyTO);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ }
+
+ public void fromList(final PolicyType policyType, final LinkedList<AbstractPolicyTO> policyTOs) {
+ switch (policyType) {
+ case ACCOUNT:
+ for (final AbstractPolicyTO policyTO : policyTOs) {
+ printAccountPolicy((AccountPolicyTO) policyTO);
+ }
+ break;
+ case PASSWORD:
+ for (final AbstractPolicyTO policyTO : policyTOs) {
+ printPasswordPolicy((PasswordPolicyTO) policyTO);
+ }
+ break;
+ case PUSH:
+ for (final AbstractPolicyTO policyTO : policyTOs) {
+ System.out.println(policyTO);
+ }
+ break;
+ case SYNC:
+ for (final AbstractPolicyTO policyTO : policyTOs) {
+ printSyncPolicy((SyncPolicyTO) policyTO);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ public void printAccountPolicy(final AccountPolicyTO policyTO) {
+ System.out.println(" > KEY: " + String.valueOf(policyTO.getKey()));
+ System.out.println(" type: " + policyTO.getType().name());
+ System.out.println(" description: " + policyTO.getDescription());
+ System.out.println(" resources : " + policyTO.getUsedByResources().toString());
+ System.out.println(" realms : " + policyTO.getUsedByRealms().toString());
+ System.out.println(" max authentication attempts : " + policyTO.getMaxAuthenticationAttempts());
+ System.out.println(" propagation suspension : " + policyTO.isPropagateSuspension());
+ System.out.println(" RULES : ");
+ System.out.println(" > class : " + policyTO.getRuleConfs());
+ }
+
+ public void printPasswordPolicy(final PasswordPolicyTO policyTO) {
+ System.out.println(" > KEY: " + String.valueOf(policyTO.getKey()));
+ System.out.println(" type: " + policyTO.getType().name());
+ System.out.println(" description: " + policyTO.getDescription());
+ System.out.println(" resources : " + policyTO.getUsedByResources().toString());
+ System.out.println(" realms : " + policyTO.getUsedByRealms().toString());
+ System.out.println(" history lenght : " + policyTO.getHistoryLength());
+ System.out.println(" allow null password : " + policyTO.isAllowNullPassword());
+ System.out.println(" RULES : ");
+ System.out.println(" > class : " + ((PasswordPolicyTO) policyTO).getRuleConfs());
+ }
+
+ public void printSyncPolicy(final SyncPolicyTO policyTO) {
+ System.out.println(" > KEY: " + String.valueOf(policyTO.getKey()));
+ System.out.println(" type: " + policyTO.getType().name());
+ System.out.println(" description: " + policyTO.getDescription());
+ System.out.println(" resources : " + policyTO.getUsedByResources().toString());
+ System.out.println(" realms : " + policyTO.getUsedByRealms().toString());
+ if (policyTO.getSpecification() != null) {
+ System.out.println(" conflict resolution action: "
+ + policyTO.getSpecification().getConflictResolutionAction().name());
+ System.out.println(" correlation rule : "
+ + policyTO.getSpecification().getCorrelationRules().toString());
+ }
+ }
+}