From 38fd37072458983ec5ddc0d0b37af71b0b33c8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Mon, 12 Sep 2016 15:59:33 +0200 Subject: [PATCH 001/106] Adjusting github URLs for 2_0_X --- .../concepts/entitlements.adoc | 6 ++--- .../reference-guide/concepts/extensions.adoc | 4 ++-- .../concepts/externalresources.adoc | 4 ++-- .../concepts/notifications.adoc | 4 ++-- .../reference-guide/concepts/policies.adoc | 24 +++++++++---------- .../concepts/provisioning/propagation.adoc | 12 +++++----- .../concepts/provisioning/provisioning.adoc | 12 +++++----- .../concepts/provisioning/pull.adoc | 10 ++++---- .../concepts/provisioning/push.adoc | 2 +- .../reference-guide/concepts/realms.adoc | 2 +- .../reference-guide/concepts/reports.adoc | 24 +++++++++---------- .../reference-guide/concepts/tasks.adoc | 14 +++++------ .../concepts/typemanagement.adoc | 8 +++---- .../reference-guide/concepts/workflow.adoc | 18 +++++++------- .../customization.adoc | 12 +++++----- .../workingwithapachesyncope/migration.adoc | 4 ++-- .../restfulservices.adoc | 2 +- .../connectorbundles.adoc | 2 +- .../systemadministration/javaeecontainer.adoc | 2 +- 19 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/main/asciidoc/reference-guide/concepts/entitlements.adoc b/src/main/asciidoc/reference-guide/concepts/entitlements.adoc index 3a862002313..8cb9e402ec7 100644 --- a/src/main/asciidoc/reference-guide/concepts/entitlements.adoc +++ b/src/main/asciidoc/reference-guide/concepts/entitlements.adoc @@ -27,7 +27,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java[RealmLogic^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java[RealmLogic^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java[RealmLogic^] endif::[] , the http://docs.spring.io/spring-security/site/docs/4.1.x/reference/htmlsingle/#el-common-built-in[`hasRole` expression^] @@ -50,14 +50,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java[statically defined^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java[statically defined^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java[statically defined^] endif::[] - even though <> have the ability to ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/types/CamelEntitlement.java[enlarge the initial list^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/types/CamelEntitlement.java[enlarge the initial list^] +https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/types/CamelEntitlement.java[enlarge the initial list^] endif::[] : this is because entitlements are the pillars of the internal security model and are not meant for external usage. ==== diff --git a/src/main/asciidoc/reference-guide/concepts/extensions.adoc b/src/main/asciidoc/reference-guide/concepts/extensions.adoc index 92e99e88f3b..f89a79ea2b1 100644 --- a/src/main/asciidoc/reference-guide/concepts/extensions.adoc +++ b/src/main/asciidoc/reference-guide/concepts/extensions.adoc @@ -54,7 +54,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/tree/syncope-{docVersion}/ext/camel[source tree^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/tree/master/ext/camel[source tree^] +https://github.com/apache/syncope/tree/tree/2_0_X/ext/camel[source tree^] endif::[] . ==== @@ -86,7 +86,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/tree/syncope-{docVersion}/ext/swagger-ui[source tree^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/tree/master/ext/swagger-ui[source tree^] +https://github.com/apache/syncope/tree/tree/2_0_X/ext/swagger-ui[source tree^] endif::[] . ==== diff --git a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc index 587cdc69be0..7614ab5aeca 100644 --- a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc +++ b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc @@ -34,7 +34,7 @@ provisioning. For each entity supported by the related connector bundle (user, g When defining a connector instance, the following information must be provided: * connector bundle - one of the several -https://github.com/Tirasa/ConnId/blob/master/README.md#available-connectors[already available^], or some to be +https://github.com/Tirasa/ConnId/blob/tree/2_0_X/README.md#available-connectors[already available^], or some to be https://connid.atlassian.net/wiki/display/BASE/Create+new+connector[made from scratch^], in order to fulfill specific requirements * pooling information @@ -116,7 +116,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java[MappingItemTransformer^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java[MappingItemTransformer^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java[MappingItemTransformer^] endif::[] ; the purpose is to transform values before they are sent to or received from the underlying connector * mandatory condition - http://commons.apache.org/proper/commons-jexl/[JEXL^] expression indicating whether values for diff --git a/src/main/asciidoc/reference-guide/concepts/notifications.adoc b/src/main/asciidoc/reference-guide/concepts/notifications.adoc index 988e6aba9df..4c960d17d72 100644 --- a/src/main/asciidoc/reference-guide/concepts/notifications.adoc +++ b/src/main/asciidoc/reference-guide/concepts/notifications.adoc @@ -40,7 +40,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationRecipientsProvider.java[NotificationRecipientsProvider^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationRecipientsProvider.java[NotificationRecipientsProvider^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationRecipientsProvider.java[NotificationRecipientsProvider^] endif::[] interface * <> - event(s) triggering the enclosing notification @@ -117,7 +117,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java[UserTO^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java[UserTO^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java[UserTO^] endif::[] with actual value matching the _about_ condition as introduced above, can be used. diff --git a/src/main/asciidoc/reference-guide/concepts/policies.adoc b/src/main/asciidoc/reference-guide/concepts/policies.adoc index 694bfa40427..79b85f2359c 100644 --- a/src/main/asciidoc/reference-guide/concepts/policies.adoc +++ b/src/main/asciidoc/reference-guide/concepts/policies.adoc @@ -63,14 +63,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultAccountRule.java[DefaultAccountRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultAccountRule.java[DefaultAccountRule^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultAccountRule.java[DefaultAccountRule^] endif::[] and configurable via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultAccountRuleConf.java[DefaultAccountRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultAccountRuleConf.java[DefaultAccountRuleConf^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultAccountRuleConf.java[DefaultAccountRuleConf^] endif::[] ) contains the following controls: @@ -94,21 +94,21 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AccountRuleConf.java[AccountRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AccountRuleConf.java[AccountRuleConf^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AccountRuleConf.java[AccountRuleConf^] endif::[] . implementing enforcement in an implementation of ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRule.java[AccountRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRule.java[AccountRule^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRule.java[AccountRule^] endif::[] annotated via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRuleConfClass.java[@AccountRuleConfClass^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRuleConfClass.java[@AccountRuleConfClass^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRuleConfClass.java[@AccountRuleConfClass^] endif::[] referring to the configuration class ==== @@ -150,14 +150,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPasswordRule.java[DefaultPasswordRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPasswordRule.java[DefaultPasswordRule^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPasswordRule.java[DefaultPasswordRule^] endif::[] and configurable via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultPasswordRuleConf.java[DefaultPasswordRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultPasswordRuleConf.java[DefaultPasswordRuleConf^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultPasswordRuleConf.java[DefaultPasswordRuleConf^] endif::[] ) contains the following controls: @@ -195,21 +195,21 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordRuleConf.java[PasswordRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordRuleConf.java[PasswordRuleConf^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordRuleConf.java[PasswordRuleConf^] endif::[] . implementing enforcement in an implementation of ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRule.java[PasswordRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRule.java[PasswordRule^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRule.java[PasswordRule^] endif::[] annotated via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRuleConfClass.java[@PasswordRuleConfClass^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRuleConfClass.java[@PasswordRuleConfClass^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRuleConfClass.java[@PasswordRuleConfClass^] endif::[] referring to the configuration class ==== @@ -249,7 +249,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PlainAttrsPullCorrelationRule.java[default^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PlainAttrsPullCorrelationRule.java[default^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PlainAttrsPullCorrelationRule.java[default^] endif::[] implementation attempts to match entities on the basis of the values of the provided plain attributes, according to the available <>. @@ -261,7 +261,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullCorrelationRule.java[PullCorrelationRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullCorrelationRule.java[PullCorrelationRule^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullCorrelationRule.java[PullCorrelationRule^] endif::[] interface. ==== diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc index 928fa67dd61..395551390db 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc @@ -40,7 +40,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^], +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^], endif::[] which implements the following logic: @@ -58,7 +58,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java[PropagationTaskExecutor^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java[PropagationTaskExecutor^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java[PropagationTaskExecutor^] endif::[] interface can be provided, in case the required behavior does not fit into the provided implementation. @@ -70,7 +70,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java[PropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java[PropagationActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java[PropagationActions^] endif::[] interface. @@ -84,7 +84,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java[LDAPMembershipPropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java[LDAPMembershipPropagationActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java[LDAPMembershipPropagationActions^] endif::[] | If a User is associated with a Group in Syncope, keep the corresponding User as a amember of the corresponding Group in LDAP. @@ -93,7 +93,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[LDAPPasswordPropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[LDAPPasswordPropagationActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[LDAPPasswordPropagationActions^] endif::[] | If no password value was already provided in the propagation task, sends out the internal password hash value to LDAP; the cipher algorithm associated with the password must match the value of `passwordHashAlgorithm` for the @@ -104,7 +104,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[DBPasswordPropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java[DBPasswordPropagationActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java[DBPasswordPropagationActions^] endif::[] | If no password value was already provided in the propagation task, sends out the internal password hash value to DBMS; the cipher algorithm associated with the password must match the value of `Password cipher algorithm` for the diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc index a1c9c5dda75..16e44c82346 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc @@ -48,19 +48,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java[UserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java[UserProvisioningManager^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java[UserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java[GroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java[GroupProvisioningManager^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java[GroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java[AnyObjectProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java[AnyObjectProvisioningManager^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java[AnyObjectProvisioningManager^] endif::[] Default implementations are available: @@ -69,19 +69,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java[DefaultUserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java[DefaultUserProvisioningManager^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java[DefaultUserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java[DefaultGroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java[DefaultGroupProvisioningManager^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java[DefaultGroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java[DefaultAnyObjectProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java[DefaultAnyObjectProvisioningManager^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java[DefaultAnyObjectProvisioningManager^] endif::[] An Apache Camel-based implementation is available as <>. diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc index 363f562af6f..29df196d98f 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc @@ -63,7 +63,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java[ReconciliationFilterBuilder^]) endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java[ReconciliationFilterBuilder^]) +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java[ReconciliationFilterBuilder^]) endif::[] of all available entities is processed. INCREMENTAL:: Only the actual modifications performed since the last pull task execution are considered. This mode @@ -94,7 +94,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java[PullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java[PullActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java[PullActions^] endif::[] interface. @@ -108,7 +108,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java[LDAPMembershipPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java[LDAPMembershipPullActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java[LDAPMembershipPullActions^] endif::[] | If a User is associated with a Group in LDAP, keep the corresponding User as a member of the corresponding Group in Syncope. @@ -117,7 +117,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java[LDAPPasswordPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java[LDAPPasswordPullActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java[LDAPPasswordPullActions^] endif::[] | Import hashed password values from LDAP; the cipher algorithm associated with the password must match the value of `passwordHashAlgorithm` for the @@ -128,7 +128,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java[DBPasswordPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java[DBPasswordPullActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java[DBPasswordPullActions^] endif::[] | Import hashed password values from DBMS; the cipher algorithm associated with the password must match the value of `Password cipher algorithm` for the diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc index d029d60e74b..de0af08f4e7 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc @@ -59,6 +59,6 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java[PushActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java[PushActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java[PushActions^] endif::[] interface. diff --git a/src/main/asciidoc/reference-guide/concepts/realms.adoc b/src/main/asciidoc/reference-guide/concepts/realms.adoc index 9e791e1684c..688fe0cf880 100644 --- a/src/main/asciidoc/reference-guide/concepts/realms.adoc +++ b/src/main/asciidoc/reference-guide/concepts/realms.adoc @@ -67,6 +67,6 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java[LogicActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java[LogicActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java[LogicActions^] endif::[] interface. diff --git a/src/main/asciidoc/reference-guide/concepts/reports.adoc b/src/main/asciidoc/reference-guide/concepts/reports.adoc index 8dc3346ec08..d8978f989a0 100644 --- a/src/main/asciidoc/reference-guide/concepts/reports.adoc +++ b/src/main/asciidoc/reference-guide/concepts/reports.adoc @@ -59,7 +59,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/AbstractReportlet.java[AbstractReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/report/AbstractReportlet.java[AbstractReportlet^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/AbstractReportlet.java[AbstractReportlet^] endif::[] and implementing the information extraction logic and generating an XML stream as result * a Java class extending @@ -67,7 +67,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/AbstractReportletConf.java[AbstractReportletConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/report/AbstractReportletConf.java[AbstractReportletConf^] +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/AbstractReportletConf.java[AbstractReportletConf^] endif::[] and embedding the configuration options that can be tuned when incorporating a given reportlet into a report; when properly annotated, such options are manageable via the <> @@ -82,14 +82,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/StaticReportlet.java[StaticReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/report/StaticReportlet.java[StaticReportlet^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/StaticReportlet.java[StaticReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java[StaticReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java[StaticReportletConf^], +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java[StaticReportletConf^], endif::[] it is essentially a handy way to inject static values (of various types) into a report. @@ -99,14 +99,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java[UserReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java[UserReportlet^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java[UserReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java[UserReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java[UserReportletConf^], +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java[UserReportletConf^], endif::[] it can be used to report various information about Users available in the internal storage, their attributes, memberships and relationships, external resources and so on. @@ -116,14 +116,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java[GroupReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java[GroupReportlet^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java[GroupReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java[GroupReportletConf^]. endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java[GroupReportletConf^]. +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java[GroupReportletConf^]. endif::[] ===== Reconciliation Reportlet @@ -133,14 +133,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java[ReconciliationReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java[ReconciliationReportlet^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java[ReconciliationReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/ReconciliationReportletConf.java[ReconciliationReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/report/ReconciliationReportletConf.java[ReconciliationReportletConf^], +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/ReconciliationReportletConf.java[ReconciliationReportletConf^], endif::[] it provides the global reconciliation status for all Users, Groups and Any Objects available in the internal storage, e.g. whether such entities are available on all Identity Stores matching the assigned @@ -157,13 +157,13 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/AuditReportlet.java[AuditReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/report/AuditReportlet.java[AuditReportlet^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/AuditReportlet.java[AuditReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/AuditReportletConf.java[AuditReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/report/AuditReportletConf.java[AuditReportletConf^], +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/AuditReportletConf.java[AuditReportletConf^], endif::[] it is mostly a sample reportlet showing how to extract data produced by <>. diff --git a/src/main/asciidoc/reference-guide/concepts/tasks.adoc b/src/main/asciidoc/reference-guide/concepts/tasks.adoc index 8b8432cfd2f..cced8f5017c 100644 --- a/src/main/asciidoc/reference-guide/concepts/tasks.adoc +++ b/src/main/asciidoc/reference-guide/concepts/tasks.adoc @@ -50,14 +50,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java[PropagationManager^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java[PropagationManager^], +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java[PropagationManager^], endif::[] executed (by default) via the ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^] endif::[] during the <> process, and are permanently saved - for later re-execution or for examining the execution details - depending on the trace levels set on the related @@ -90,7 +90,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java[PullJobDelegate^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java[PullJobDelegate^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java[PullJobDelegate^] endif::[] during the <> process, and are permanently saved - for later re-execution or for examining the execution details - depending on the trace level set on the related @@ -129,7 +129,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java[PushJobDelegate^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java[PushJobDelegate^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java[PushJobDelegate^] endif::[] during the <> process, and are permanently saved - for later re-execution or for examining the execution details - depending on the trace level set on the related @@ -155,14 +155,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java[NotificationManager^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java[NotificationManager^], +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java[NotificationManager^], endif::[] executed via the ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJob.java[NotificationJob^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJob.java[NotificationJob^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJob.java[NotificationJob^] endif::[] and are permanently saved - for later re-execution or for examining the execution details - depending on the trace level set on the related <>. @@ -180,7 +180,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java[AbstractSchedTaskJobDelegate^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java[AbstractSchedTaskJobDelegate^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java[AbstractSchedTaskJobDelegate^] endif::[] providing the custom logic to execute * scheduling information: diff --git a/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc b/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc index 0c3a382633f..1166157fd39 100644 --- a/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc +++ b/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc @@ -54,7 +54,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/EmailAddressValidator.java[EmailAddressValidator^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/EmailAddressValidator.java[EmailAddressValidator^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/EmailAddressValidator.java[EmailAddressValidator^] endif::[] for reference * Mandatory condition - http://commons.apache.org/proper/commons-jexl/[JEXL^] expression indicating whether values for @@ -113,7 +113,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java[VirAttrCache^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java[VirAttrCache^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java[VirAttrCache^] endif::[] interface, and is configurable. @@ -127,7 +127,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java[MemoryVirAttrCache^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java[MemoryVirAttrCache^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java[MemoryVirAttrCache^] endif::[] | Simple fixed-size in-memory cache, with configurable time-to-live. @@ -136,7 +136,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java[DisabledVirAttrCache^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java[DisabledVirAttrCache^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java[DisabledVirAttrCache^] endif::[] | Pass-through cache which actually does not provide any caching: use when direct access to the Identity Store is required. diff --git a/src/main/asciidoc/reference-guide/concepts/workflow.adoc b/src/main/asciidoc/reference-guide/concepts/workflow.adoc index 15e5f2ab58c..08fd33bd825 100644 --- a/src/main/asciidoc/reference-guide/concepts/workflow.adoc +++ b/src/main/asciidoc/reference-guide/concepts/workflow.adoc @@ -35,19 +35,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowAdapter.java[UserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowAdapter.java[UserWorkflowAdapter^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowAdapter.java[UserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowAdapter.java[GroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowAdapter.java[GroupWorkflowAdapter^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowAdapter.java[GroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowAdapter.java[AnyObjectWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowAdapter.java[AnyObjectWorkflowAdapter^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowAdapter.java[AnyObjectWorkflowAdapter^] endif::[] Default implementations are available: @@ -56,19 +56,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java[DefaultUserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java[DefaultUserWorkflowAdapter^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java[DefaultUserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java[DefaultGroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java[DefaultGroupWorkflowAdapter^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java[DefaultGroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java[DefaultAnyObjectWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/master/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java[DefaultAnyObjectWorkflowAdapter^] +* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java[DefaultAnyObjectWorkflowAdapter^] endif::[] Custom adapters can be provided by implementing the related interfaces, also as bridges towards third-party tools as @@ -85,14 +85,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java[ActivitiUserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java[ActivitiUserWorkflowAdapter^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java[ActivitiUserWorkflowAdapter^] endif::[] is bootstrapped from ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-activiti/src/main/resources/userWorkflow.bpmn20.xml[userWorkflow.bpmn20.xml^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/workflow-activiti/src/main/resources/userWorkflow.bpmn20.xml[userWorkflow.bpmn20.xml^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-activiti/src/main/resources/userWorkflow.bpmn20.xml[userWorkflow.bpmn20.xml^] endif::[] and presents several advantages and more features, if compared to the default user adapter: @@ -180,7 +180,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/IdentityRecertification.java[IdentityRecertification^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/IdentityRecertification.java[IdentityRecertification^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/IdentityRecertification.java[IdentityRecertification^] endif::[] class, which can be used as base to implement more complex recertification processes. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc index 3459c5134ce..9f8135c5b65 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc @@ -45,7 +45,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/spring/src/main/java/org/apache/syncope/core/spring/security/SyncopeAuthenticationProvider.java[SyncopeAuthenticationProvider^]. endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/spring/src/main/java/org/apache/syncope/core/spring/security/SyncopeAuthenticationProvider.java[SyncopeAuthenticationProvider^]. +https://github.com/apache/syncope/blob/tree/2_0_X/core/spring/src/main/java/org/apache/syncope/core/spring/security/SyncopeAuthenticationProvider.java[SyncopeAuthenticationProvider^]. endif::[] The same happens with resources as images or HTML files; if you place @@ -57,7 +57,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html[BasePage.html^]. endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html[BasePage.html^]. +https://github.com/apache/syncope/blob/tree/2_0_X/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html[BasePage.html^]. endif::[] This general behavior might have exceptions, as highlighted below. @@ -153,7 +153,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java[CamelRouteService^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java[CamelRouteService^] +https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java[CamelRouteService^] endif::[] for reference; . if needed, define supporting payload objects - in an extension's `common-lib` module or under `common` otherwise; @@ -162,7 +162,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/to/CamelRouteTO.java[CamelRouteTO^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/to/CamelRouteTO.java[CamelRouteTO^] +https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/to/CamelRouteTO.java[CamelRouteTO^] endif::[] for reference; . implement - in an extension's `rest-cxf` module or under `core` otherwise - the interface defined above in a Java @@ -171,7 +171,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/CamelRouteServiceImpl.java[CamelRouteServiceImpl^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/CamelRouteServiceImpl.java[CamelRouteServiceImpl^] +https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/CamelRouteServiceImpl.java[CamelRouteServiceImpl^] endif::[] for reference. @@ -186,7 +186,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/spring/src/main/resources/securityContext.xml[securityContext.xml^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/spring/src/main/resources/securityContext.xml[securityContext.xml^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/spring/src/main/resources/securityContext.xml[securityContext.xml^] endif::[] , you will also need to replace the following text in `core/src/main/webapp/WEB-INF/web.xml`, diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc index 7d891e3bd0d..df5da5a7ba4 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc @@ -177,7 +177,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/tree/syncope-{docVersion}/core/migration/src/main/resources/scripted[scripts^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/tree/master/core/migration/src/main/resources/scripted[scripts^] +https://github.com/apache/syncope/tree/tree/2_0_X/core/migration/src/main/resources/scripted[scripts^] endif::[] and configure accordingly . assign the `SEARCH` and `SYNC` capabilities @@ -238,7 +238,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^] +https://github.com/apache/syncope/blob/tree/2_0_X/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^] endif::[] class among <>. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc index d76578816de..6ad64e91d88 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc @@ -70,7 +70,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/types/ClientExceptionType.java[ClientExceptionType^]) endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/types/ClientExceptionType.java[ClientExceptionType^]) +https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/types/ClientExceptionType.java[ClientExceptionType^]) endif::[] and `X-Application-Error-Info` might be optionally populated with more details, if available. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc index 29b07f56a2c..dd7d770ba62 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc @@ -118,7 +118,7 @@ to Connector bundles can be added or replaced at run-time by performing the following steps: -. https://github.com/Tirasa/ConnId/blob/master/README.md#available-connectors[Download^] the required connector bundle +. https://github.com/Tirasa/ConnId/blob/tree/2_0_X/README.md#available-connectors[Download^] the required connector bundle JAR file; . Copy the downloaded JAR file into one of configured <>, typically the `bundles` directory where the other connector bundles are already available. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc index c9a7ee0ded1..1720c964af8 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc @@ -94,7 +94,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/fit/core-reference/src/main/resources/jboss/restCXFContext.xml[restCXFContext.xml^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/master/fit/core-reference/src/main/resources/jboss/restCXFContext.xml[restCXFContext.xml^] +https://github.com/apache/syncope/blob/tree/2_0_X/fit/core-reference/src/main/resources/jboss/restCXFContext.xml[restCXFContext.xml^] endif::[] and save it under `core/src/main/resources/`. From 3dcf6509ed1813cbc9146a295d745fdbca42d2ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Tue, 13 Sep 2016 12:34:32 +0200 Subject: [PATCH 002/106] Upgrading maven-resources-plugin --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aa006911fcf..def1563364f 100644 --- a/pom.xml +++ b/pom.xml @@ -1772,7 +1772,7 @@ under the License. org.apache.maven.plugins maven-resources-plugin - 3.0.0 + 3.0.1 copy-artifact-legal-files From 95074d48a032ffa545404371789f4f53dd201d4d Mon Sep 17 00:00:00 2001 From: fmartelli Date: Fri, 16 Sep 2016 16:47:57 +0200 Subject: [PATCH 003/106] [SYNCOPE-944] fixes assignable groups collection used to verify group assignment validity --- .../java/data/AnyObjectDataBinderImpl.java | 28 +++++++++++-------- .../java/data/UserDataBinderImpl.java | 28 +++++++++++-------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java index 0a477cf2ab2..74940094aeb 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java @@ -170,8 +170,9 @@ public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { assignableCond.setRealmFullPath(anyObject.getRealm().getFullPath()); // relationships - List assignableAnyObjects = - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.ANY_OBJECT); + Collection assignableAnyObjects = CollectionUtils.collect( + searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.ANY_OBJECT), + EntityUtils.keyTransformer()); for (RelationshipTO relationshipTO : anyObjectTO.getRelationships()) { if (StringUtils.isBlank(relationshipTO.getRightType()) @@ -187,7 +188,7 @@ public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { AnyObject otherEnd = anyObjectDAO.find(relationshipTO.getRightKey()); if (otherEnd == null) { LOG.debug("Ignoring invalid anyObject " + relationshipTO.getRightKey()); - } else if (assignableAnyObjects.contains(otherEnd)) { + } else if (assignableAnyObjects.contains(otherEnd.getKey())) { RelationshipType relationshipType = relationshipTypeDAO.find(relationshipTO.getType()); if (relationshipType == null) { LOG.debug("Ignoring invalid relationship type {}", relationshipTO.getType()); @@ -211,8 +212,9 @@ public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { } // memberships - List assignableGroups = - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.GROUP); + Collection assignableGroups = CollectionUtils.collect( + searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.GROUP), + EntityUtils.keyTransformer()); for (MembershipTO membershipTO : anyObjectTO.getMemberships()) { Group group = membershipTO.getRightKey() == null @@ -221,7 +223,7 @@ public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { if (group == null) { LOG.debug("Ignoring invalid group " + membershipTO.getRightKey() + " / " + membershipTO.getGroupName()); - } else if (assignableGroups.contains(group)) { + } else if (assignableGroups.contains(group.getKey())) { AMembership membership = entityFactory.newEntity(AMembership.class); membership.setRightEnd(group); membership.setLeftEnd(anyObject); @@ -283,8 +285,9 @@ public PropagationByResource update(final AnyObject toBeUpdated, final AnyObject Set toBeProvisioned = new HashSet<>(); // relationships - List assignableAnyObjects = - searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT); + Collection assignableAnyObjects = CollectionUtils.collect( + searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT), + EntityUtils.keyTransformer()); for (RelationshipPatch patch : anyObjectPatch.getRelationships()) { if (patch.getRelationshipTO() != null) { @@ -315,7 +318,7 @@ public PropagationByResource update(final AnyObject toBeUpdated, final AnyObject AnyObject otherEnd = anyObjectDAO.find(patch.getRelationshipTO().getRightKey()); if (otherEnd == null) { LOG.debug("Ignoring invalid any object {}", patch.getRelationshipTO().getRightKey()); - } else if (assignableAnyObjects.contains(otherEnd)) { + } else if (assignableAnyObjects.contains(otherEnd.getKey())) { relationship = entityFactory.newEntity(ARelationship.class); relationship.setType(relationshipType); relationship.setRightEnd(otherEnd); @@ -342,8 +345,9 @@ public PropagationByResource update(final AnyObject toBeUpdated, final AnyObject SyncopeClientException invalidValues = SyncopeClientException.build(ClientExceptionType.InvalidValues); // memberships - List assignableGroups = - searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP); + Collection assignableGroups = CollectionUtils.collect( + searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP), + EntityUtils.keyTransformer()); for (MembershipPatch membPatch : anyObjectPatch.getMemberships()) { if (membPatch.getGroup() != null) { @@ -363,7 +367,7 @@ public PropagationByResource update(final AnyObject toBeUpdated, final AnyObject Group group = groupDAO.find(membPatch.getGroup()); if (group == null) { LOG.debug("Ignoring invalid group {}", membPatch.getGroup()); - } else if (assignableGroups.contains(group)) { + } else if (assignableGroups.contains(group.getKey())) { membership = entityFactory.newEntity(AMembership.class); membership.setRightEnd(group); membership.setLeftEnd(anyObject); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java index 11396d75bf3..eeef4fd78b4 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java @@ -196,14 +196,15 @@ public void create(final User user, final UserTO userTO, final boolean storePass assignableCond.setRealmFullPath(user.getRealm().getFullPath()); // relationships - List assignableAnyObjects = - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.ANY_OBJECT); + Collection assignableAnyObjects = CollectionUtils.collect( + searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.ANY_OBJECT), + EntityUtils.keyTransformer()); for (RelationshipTO relationshipTO : userTO.getRelationships()) { AnyObject otherEnd = anyObjectDAO.find(relationshipTO.getRightKey()); if (otherEnd == null) { LOG.debug("Ignoring invalid anyObject " + relationshipTO.getRightKey()); - } else if (assignableAnyObjects.contains(otherEnd)) { + } else if (assignableAnyObjects.contains(otherEnd.getKey())) { RelationshipType relationshipType = relationshipTypeDAO.find(relationshipTO.getType()); if (relationshipType == null) { LOG.debug("Ignoring invalid relationship type {}", relationshipTO.getType()); @@ -227,8 +228,9 @@ public void create(final User user, final UserTO userTO, final boolean storePass } // memberships - List assignableGroups = - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.GROUP); + Collection assignableGroups = CollectionUtils.collect( + searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.GROUP), + EntityUtils.keyTransformer()); for (MembershipTO membershipTO : userTO.getMemberships()) { Group group = membershipTO.getRightKey() == null @@ -237,7 +239,7 @@ public void create(final User user, final UserTO userTO, final boolean storePass if (group == null) { LOG.debug("Ignoring invalid group " + membershipTO.getRightKey() + " / " + membershipTO.getGroupName()); - } else if (assignableGroups.contains(group)) { + } else if (assignableGroups.contains(group.getKey())) { UMembership membership = entityFactory.newEntity(UMembership.class); membership.setRightEnd(group); membership.setLeftEnd(user); @@ -389,8 +391,9 @@ public PropagationByResource update(final User toBeUpdated, final UserPatch user Set toBeProvisioned = new HashSet<>(); // relationships - List assignableAnyObjects = - searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT); + Collection assignableAnyObjects = CollectionUtils.collect( + searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT), + EntityUtils.keyTransformer()); for (RelationshipPatch patch : userPatch.getRelationships()) { if (patch.getRelationshipTO() != null) { @@ -411,7 +414,7 @@ public PropagationByResource update(final User toBeUpdated, final UserPatch user AnyObject otherEnd = anyObjectDAO.find(patch.getRelationshipTO().getRightKey()); if (otherEnd == null) { LOG.debug("Ignoring invalid any object {}", patch.getRelationshipTO().getRightKey()); - } else if (assignableAnyObjects.contains(otherEnd)) { + } else if (assignableAnyObjects.contains(otherEnd.getKey())) { relationship = entityFactory.newEntity(URelationship.class); relationship.setType(relationshipType); relationship.setRightEnd(otherEnd); @@ -437,8 +440,9 @@ public PropagationByResource update(final User toBeUpdated, final UserPatch user SyncopeClientException invalidValues = SyncopeClientException.build(ClientExceptionType.InvalidValues); // memberships - List assignableGroups = - searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP); + Collection assignableGroups = CollectionUtils.collect( + searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP), + EntityUtils.keyTransformer()); for (MembershipPatch membPatch : userPatch.getMemberships()) { if (membPatch.getGroup() != null) { @@ -459,7 +463,7 @@ public PropagationByResource update(final User toBeUpdated, final UserPatch user Group group = groupDAO.find(membPatch.getGroup()); if (group == null) { LOG.debug("Ignoring invalid group {}", membPatch.getGroup()); - } else if (assignableGroups.contains(group)) { + } else if (assignableGroups.contains(group.getKey())) { membership = entityFactory.newEntity(UMembership.class); membership.setRightEnd(group); membership.setLeftEnd(user); From 534f997520c4f4bf649d298cd22fd8c230d325d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Wed, 14 Sep 2016 07:54:18 +0200 Subject: [PATCH 004/106] Fixing (again) github links in the reference guide --- .../concepts/entitlements.adoc | 6 ++--- .../concepts/externalresources.adoc | 4 ++-- .../concepts/notifications.adoc | 4 ++-- .../reference-guide/concepts/policies.adoc | 24 +++++++++---------- .../concepts/provisioning/propagation.adoc | 12 +++++----- .../concepts/provisioning/provisioning.adoc | 12 +++++----- .../concepts/provisioning/pull.adoc | 10 ++++---- .../concepts/provisioning/push.adoc | 2 +- .../reference-guide/concepts/realms.adoc | 2 +- .../reference-guide/concepts/reports.adoc | 24 +++++++++---------- .../reference-guide/concepts/tasks.adoc | 14 +++++------ .../concepts/typemanagement.adoc | 8 +++---- .../reference-guide/concepts/workflow.adoc | 18 +++++++------- .../customization.adoc | 12 +++++----- .../workingwithapachesyncope/migration.adoc | 2 +- .../restfulservices.adoc | 2 +- .../connectorbundles.adoc | 2 +- .../systemadministration/javaeecontainer.adoc | 2 +- 18 files changed, 80 insertions(+), 80 deletions(-) diff --git a/src/main/asciidoc/reference-guide/concepts/entitlements.adoc b/src/main/asciidoc/reference-guide/concepts/entitlements.adoc index 8cb9e402ec7..b9bea2a594b 100644 --- a/src/main/asciidoc/reference-guide/concepts/entitlements.adoc +++ b/src/main/asciidoc/reference-guide/concepts/entitlements.adoc @@ -27,7 +27,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java[RealmLogic^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java[RealmLogic^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java[RealmLogic^] endif::[] , the http://docs.spring.io/spring-security/site/docs/4.1.x/reference/htmlsingle/#el-common-built-in[`hasRole` expression^] @@ -50,14 +50,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java[statically defined^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java[statically defined^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java[statically defined^] endif::[] - even though <> have the ability to ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/types/CamelEntitlement.java[enlarge the initial list^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/types/CamelEntitlement.java[enlarge the initial list^] +https://github.com/apache/syncope/tree/2_0_X/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/types/CamelEntitlement.java[enlarge the initial list^] endif::[] : this is because entitlements are the pillars of the internal security model and are not meant for external usage. ==== diff --git a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc index 7614ab5aeca..13d3e4f5dd4 100644 --- a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc +++ b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc @@ -34,7 +34,7 @@ provisioning. For each entity supported by the related connector bundle (user, g When defining a connector instance, the following information must be provided: * connector bundle - one of the several -https://github.com/Tirasa/ConnId/blob/tree/2_0_X/README.md#available-connectors[already available^], or some to be +https://github.com/Tirasa/ConnId/tree/2_0_X/README.md#available-connectors[already available^], or some to be https://connid.atlassian.net/wiki/display/BASE/Create+new+connector[made from scratch^], in order to fulfill specific requirements * pooling information @@ -116,7 +116,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java[MappingItemTransformer^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java[MappingItemTransformer^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/MappingItemTransformer.java[MappingItemTransformer^] endif::[] ; the purpose is to transform values before they are sent to or received from the underlying connector * mandatory condition - http://commons.apache.org/proper/commons-jexl/[JEXL^] expression indicating whether values for diff --git a/src/main/asciidoc/reference-guide/concepts/notifications.adoc b/src/main/asciidoc/reference-guide/concepts/notifications.adoc index 4c960d17d72..f850770b0fa 100644 --- a/src/main/asciidoc/reference-guide/concepts/notifications.adoc +++ b/src/main/asciidoc/reference-guide/concepts/notifications.adoc @@ -40,7 +40,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationRecipientsProvider.java[NotificationRecipientsProvider^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationRecipientsProvider.java[NotificationRecipientsProvider^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationRecipientsProvider.java[NotificationRecipientsProvider^] endif::[] interface * <> - event(s) triggering the enclosing notification @@ -117,7 +117,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java[UserTO^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java[UserTO^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java[UserTO^] endif::[] with actual value matching the _about_ condition as introduced above, can be used. diff --git a/src/main/asciidoc/reference-guide/concepts/policies.adoc b/src/main/asciidoc/reference-guide/concepts/policies.adoc index 79b85f2359c..1afdcb8da5a 100644 --- a/src/main/asciidoc/reference-guide/concepts/policies.adoc +++ b/src/main/asciidoc/reference-guide/concepts/policies.adoc @@ -63,14 +63,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultAccountRule.java[DefaultAccountRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultAccountRule.java[DefaultAccountRule^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultAccountRule.java[DefaultAccountRule^] endif::[] and configurable via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultAccountRuleConf.java[DefaultAccountRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultAccountRuleConf.java[DefaultAccountRuleConf^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultAccountRuleConf.java[DefaultAccountRuleConf^] endif::[] ) contains the following controls: @@ -94,21 +94,21 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AccountRuleConf.java[AccountRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AccountRuleConf.java[AccountRuleConf^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AccountRuleConf.java[AccountRuleConf^] endif::[] . implementing enforcement in an implementation of ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRule.java[AccountRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRule.java[AccountRule^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRule.java[AccountRule^] endif::[] annotated via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRuleConfClass.java[@AccountRuleConfClass^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRuleConfClass.java[@AccountRuleConfClass^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AccountRuleConfClass.java[@AccountRuleConfClass^] endif::[] referring to the configuration class ==== @@ -150,14 +150,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPasswordRule.java[DefaultPasswordRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPasswordRule.java[DefaultPasswordRule^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPasswordRule.java[DefaultPasswordRule^] endif::[] and configurable via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultPasswordRuleConf.java[DefaultPasswordRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultPasswordRuleConf.java[DefaultPasswordRuleConf^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/DefaultPasswordRuleConf.java[DefaultPasswordRuleConf^] endif::[] ) contains the following controls: @@ -195,21 +195,21 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordRuleConf.java[PasswordRuleConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordRuleConf.java[PasswordRuleConf^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordRuleConf.java[PasswordRuleConf^] endif::[] . implementing enforcement in an implementation of ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRule.java[PasswordRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRule.java[PasswordRule^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRule.java[PasswordRule^] endif::[] annotated via ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRuleConfClass.java[@PasswordRuleConfClass^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRuleConfClass.java[@PasswordRuleConfClass^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PasswordRuleConfClass.java[@PasswordRuleConfClass^] endif::[] referring to the configuration class ==== @@ -249,7 +249,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PlainAttrsPullCorrelationRule.java[default^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PlainAttrsPullCorrelationRule.java[default^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PlainAttrsPullCorrelationRule.java[default^] endif::[] implementation attempts to match entities on the basis of the values of the provided plain attributes, according to the available <>. @@ -261,7 +261,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullCorrelationRule.java[PullCorrelationRule^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullCorrelationRule.java[PullCorrelationRule^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullCorrelationRule.java[PullCorrelationRule^] endif::[] interface. ==== diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc index 395551390db..e7d5ee0fc0b 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/propagation.adoc @@ -40,7 +40,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^], +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^], endif::[] which implements the following logic: @@ -58,7 +58,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java[PropagationTaskExecutor^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java[PropagationTaskExecutor^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java[PropagationTaskExecutor^] endif::[] interface can be provided, in case the required behavior does not fit into the provided implementation. @@ -70,7 +70,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java[PropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java[PropagationActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationActions.java[PropagationActions^] endif::[] interface. @@ -84,7 +84,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java[LDAPMembershipPropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java[LDAPMembershipPropagationActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java[LDAPMembershipPropagationActions^] endif::[] | If a User is associated with a Group in Syncope, keep the corresponding User as a amember of the corresponding Group in LDAP. @@ -93,7 +93,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[LDAPPasswordPropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[LDAPPasswordPropagationActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[LDAPPasswordPropagationActions^] endif::[] | If no password value was already provided in the propagation task, sends out the internal password hash value to LDAP; the cipher algorithm associated with the password must match the value of `passwordHashAlgorithm` for the @@ -104,7 +104,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java[DBPasswordPropagationActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java[DBPasswordPropagationActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DBPasswordPropagationActions.java[DBPasswordPropagationActions^] endif::[] | If no password value was already provided in the propagation task, sends out the internal password hash value to DBMS; the cipher algorithm associated with the password must match the value of `Password cipher algorithm` for the diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc index 16e44c82346..a2670c511bc 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/provisioning.adoc @@ -48,19 +48,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java[UserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java[UserProvisioningManager^] +* https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java[UserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java[GroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java[GroupProvisioningManager^] +* https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java[GroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java[AnyObjectProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java[AnyObjectProvisioningManager^] +* https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java[AnyObjectProvisioningManager^] endif::[] Default implementations are available: @@ -69,19 +69,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java[DefaultUserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java[DefaultUserProvisioningManager^] +* https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java[DefaultUserProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java[DefaultGroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java[DefaultGroupProvisioningManager^] +* https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java[DefaultGroupProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java[DefaultAnyObjectProvisioningManager^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java[DefaultAnyObjectProvisioningManager^] +* https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java[DefaultAnyObjectProvisioningManager^] endif::[] An Apache Camel-based implementation is available as <>. diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc index 29df196d98f..011f093cfc7 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/pull.adoc @@ -63,7 +63,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java[ReconciliationFilterBuilder^]) endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java[ReconciliationFilterBuilder^]) +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ReconciliationFilterBuilder.java[ReconciliationFilterBuilder^]) endif::[] of all available entities is processed. INCREMENTAL:: Only the actual modifications performed since the last pull task execution are considered. This mode @@ -94,7 +94,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java[PullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java[PullActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java[PullActions^] endif::[] interface. @@ -108,7 +108,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java[LDAPMembershipPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java[LDAPMembershipPullActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java[LDAPMembershipPullActions^] endif::[] | If a User is associated with a Group in LDAP, keep the corresponding User as a member of the corresponding Group in Syncope. @@ -117,7 +117,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java[LDAPPasswordPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java[LDAPPasswordPullActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java[LDAPPasswordPullActions^] endif::[] | Import hashed password values from LDAP; the cipher algorithm associated with the password must match the value of `passwordHashAlgorithm` for the @@ -128,7 +128,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java[DBPasswordPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java[DBPasswordPullActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java[DBPasswordPullActions^] endif::[] | Import hashed password values from DBMS; the cipher algorithm associated with the password must match the value of `Password cipher algorithm` for the diff --git a/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc b/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc index de0af08f4e7..13e3f7aeb4a 100644 --- a/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc +++ b/src/main/asciidoc/reference-guide/concepts/provisioning/push.adoc @@ -59,6 +59,6 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java[PushActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java[PushActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PushActions.java[PushActions^] endif::[] interface. diff --git a/src/main/asciidoc/reference-guide/concepts/realms.adoc b/src/main/asciidoc/reference-guide/concepts/realms.adoc index 688fe0cf880..8b4267c763e 100644 --- a/src/main/asciidoc/reference-guide/concepts/realms.adoc +++ b/src/main/asciidoc/reference-guide/concepts/realms.adoc @@ -67,6 +67,6 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java[LogicActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java[LogicActions^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/LogicActions.java[LogicActions^] endif::[] interface. diff --git a/src/main/asciidoc/reference-guide/concepts/reports.adoc b/src/main/asciidoc/reference-guide/concepts/reports.adoc index d8978f989a0..d15a928bc6c 100644 --- a/src/main/asciidoc/reference-guide/concepts/reports.adoc +++ b/src/main/asciidoc/reference-guide/concepts/reports.adoc @@ -59,7 +59,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/AbstractReportlet.java[AbstractReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/AbstractReportlet.java[AbstractReportlet^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/AbstractReportlet.java[AbstractReportlet^] endif::[] and implementing the information extraction logic and generating an XML stream as result * a Java class extending @@ -67,7 +67,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/AbstractReportletConf.java[AbstractReportletConf^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/AbstractReportletConf.java[AbstractReportletConf^] +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/AbstractReportletConf.java[AbstractReportletConf^] endif::[] and embedding the configuration options that can be tuned when incorporating a given reportlet into a report; when properly annotated, such options are manageable via the <> @@ -82,14 +82,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/StaticReportlet.java[StaticReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/StaticReportlet.java[StaticReportlet^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/StaticReportlet.java[StaticReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java[StaticReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java[StaticReportletConf^], +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java[StaticReportletConf^], endif::[] it is essentially a handy way to inject static values (of various types) into a report. @@ -99,14 +99,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java[UserReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java[UserReportlet^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java[UserReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java[UserReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java[UserReportletConf^], +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java[UserReportletConf^], endif::[] it can be used to report various information about Users available in the internal storage, their attributes, memberships and relationships, external resources and so on. @@ -116,14 +116,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java[GroupReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java[GroupReportlet^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java[GroupReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java[GroupReportletConf^]. endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java[GroupReportletConf^]. +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java[GroupReportletConf^]. endif::[] ===== Reconciliation Reportlet @@ -133,14 +133,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java[ReconciliationReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java[ReconciliationReportlet^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java[ReconciliationReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/ReconciliationReportletConf.java[ReconciliationReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/ReconciliationReportletConf.java[ReconciliationReportletConf^], +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/ReconciliationReportletConf.java[ReconciliationReportletConf^], endif::[] it provides the global reconciliation status for all Users, Groups and Any Objects available in the internal storage, e.g. whether such entities are available on all Identity Stores matching the assigned @@ -157,13 +157,13 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/report/AuditReportlet.java[AuditReportlet^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/AuditReportlet.java[AuditReportlet^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/report/AuditReportlet.java[AuditReportlet^] endif::[] and ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/report/AuditReportletConf.java[AuditReportletConf^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/AuditReportletConf.java[AuditReportletConf^], +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/report/AuditReportletConf.java[AuditReportletConf^], endif::[] it is mostly a sample reportlet showing how to extract data produced by <>. diff --git a/src/main/asciidoc/reference-guide/concepts/tasks.adoc b/src/main/asciidoc/reference-guide/concepts/tasks.adoc index cced8f5017c..c058c982c78 100644 --- a/src/main/asciidoc/reference-guide/concepts/tasks.adoc +++ b/src/main/asciidoc/reference-guide/concepts/tasks.adoc @@ -50,14 +50,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java[PropagationManager^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java[PropagationManager^], +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java[PropagationManager^], endif::[] executed (by default) via the ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java[PriorityPropagationTaskExecutor^] endif::[] during the <> process, and are permanently saved - for later re-execution or for examining the execution details - depending on the trace levels set on the related @@ -90,7 +90,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java[PullJobDelegate^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java[PullJobDelegate^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java[PullJobDelegate^] endif::[] during the <> process, and are permanently saved - for later re-execution or for examining the execution details - depending on the trace level set on the related @@ -129,7 +129,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java[PushJobDelegate^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java[PushJobDelegate^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java[PushJobDelegate^] endif::[] during the <> process, and are permanently saved - for later re-execution or for examining the execution details - depending on the trace level set on the related @@ -155,14 +155,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java[NotificationManager^], endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java[NotificationManager^], +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java[NotificationManager^], endif::[] executed via the ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJob.java[NotificationJob^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJob.java[NotificationJob^] +https://github.com/apache/syncope/tree/2_0_X/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJob.java[NotificationJob^] endif::[] and are permanently saved - for later re-execution or for examining the execution details - depending on the trace level set on the related <>. @@ -180,7 +180,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java[AbstractSchedTaskJobDelegate^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java[AbstractSchedTaskJobDelegate^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java[AbstractSchedTaskJobDelegate^] endif::[] providing the custom logic to execute * scheduling information: diff --git a/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc b/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc index 1166157fd39..07be49c59cb 100644 --- a/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc +++ b/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc @@ -54,7 +54,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/EmailAddressValidator.java[EmailAddressValidator^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/EmailAddressValidator.java[EmailAddressValidator^] +https://github.com/apache/syncope/tree/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/EmailAddressValidator.java[EmailAddressValidator^] endif::[] for reference * Mandatory condition - http://commons.apache.org/proper/commons-jexl/[JEXL^] expression indicating whether values for @@ -113,7 +113,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java[VirAttrCache^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java[VirAttrCache^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java[VirAttrCache^] endif::[] interface, and is configurable. @@ -127,7 +127,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java[MemoryVirAttrCache^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java[MemoryVirAttrCache^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java[MemoryVirAttrCache^] endif::[] | Simple fixed-size in-memory cache, with configurable time-to-live. @@ -136,7 +136,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java[DisabledVirAttrCache^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java[DisabledVirAttrCache^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java[DisabledVirAttrCache^] endif::[] | Pass-through cache which actually does not provide any caching: use when direct access to the Identity Store is required. diff --git a/src/main/asciidoc/reference-guide/concepts/workflow.adoc b/src/main/asciidoc/reference-guide/concepts/workflow.adoc index 08fd33bd825..1384e408388 100644 --- a/src/main/asciidoc/reference-guide/concepts/workflow.adoc +++ b/src/main/asciidoc/reference-guide/concepts/workflow.adoc @@ -35,19 +35,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowAdapter.java[UserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowAdapter.java[UserWorkflowAdapter^] +* https://github.com/apache/syncope/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowAdapter.java[UserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowAdapter.java[GroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowAdapter.java[GroupWorkflowAdapter^] +* https://github.com/apache/syncope/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowAdapter.java[GroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowAdapter.java[AnyObjectWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowAdapter.java[AnyObjectWorkflowAdapter^] +* https://github.com/apache/syncope/tree/2_0_X/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowAdapter.java[AnyObjectWorkflowAdapter^] endif::[] Default implementations are available: @@ -56,19 +56,19 @@ ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java[DefaultUserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java[DefaultUserWorkflowAdapter^] +* https://github.com/apache/syncope/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java[DefaultUserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java[DefaultGroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java[DefaultGroupWorkflowAdapter^] +* https://github.com/apache/syncope/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java[DefaultGroupWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "release"] * https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java[DefaultAnyObjectWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -* https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java[DefaultAnyObjectWorkflowAdapter^] +* https://github.com/apache/syncope/tree/2_0_X/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java[DefaultAnyObjectWorkflowAdapter^] endif::[] Custom adapters can be provided by implementing the related interfaces, also as bridges towards third-party tools as @@ -85,14 +85,14 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java[ActivitiUserWorkflowAdapter^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java[ActivitiUserWorkflowAdapter^] +https://github.com/apache/syncope/tree/2_0_X/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java[ActivitiUserWorkflowAdapter^] endif::[] is bootstrapped from ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/workflow-activiti/src/main/resources/userWorkflow.bpmn20.xml[userWorkflow.bpmn20.xml^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/workflow-activiti/src/main/resources/userWorkflow.bpmn20.xml[userWorkflow.bpmn20.xml^] +https://github.com/apache/syncope/tree/2_0_X/core/workflow-activiti/src/main/resources/userWorkflow.bpmn20.xml[userWorkflow.bpmn20.xml^] endif::[] and presents several advantages and more features, if compared to the default user adapter: @@ -180,7 +180,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/IdentityRecertification.java[IdentityRecertification^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/IdentityRecertification.java[IdentityRecertification^] +https://github.com/apache/syncope/tree/2_0_X/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/IdentityRecertification.java[IdentityRecertification^] endif::[] class, which can be used as base to implement more complex recertification processes. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc index 9f8135c5b65..712ee9e2128 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc @@ -45,7 +45,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/spring/src/main/java/org/apache/syncope/core/spring/security/SyncopeAuthenticationProvider.java[SyncopeAuthenticationProvider^]. endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/spring/src/main/java/org/apache/syncope/core/spring/security/SyncopeAuthenticationProvider.java[SyncopeAuthenticationProvider^]. +https://github.com/apache/syncope/tree/2_0_X/core/spring/src/main/java/org/apache/syncope/core/spring/security/SyncopeAuthenticationProvider.java[SyncopeAuthenticationProvider^]. endif::[] The same happens with resources as images or HTML files; if you place @@ -57,7 +57,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html[BasePage.html^]. endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html[BasePage.html^]. +https://github.com/apache/syncope/tree/2_0_X/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html[BasePage.html^]. endif::[] This general behavior might have exceptions, as highlighted below. @@ -153,7 +153,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java[CamelRouteService^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java[CamelRouteService^] +https://github.com/apache/syncope/tree/2_0_X/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java[CamelRouteService^] endif::[] for reference; . if needed, define supporting payload objects - in an extension's `common-lib` module or under `common` otherwise; @@ -162,7 +162,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/to/CamelRouteTO.java[CamelRouteTO^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/to/CamelRouteTO.java[CamelRouteTO^] +https://github.com/apache/syncope/tree/2_0_X/ext/camel/common-lib/src/main/java/org/apache/syncope/common/lib/to/CamelRouteTO.java[CamelRouteTO^] endif::[] for reference; . implement - in an extension's `rest-cxf` module or under `core` otherwise - the interface defined above in a Java @@ -171,7 +171,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/CamelRouteServiceImpl.java[CamelRouteServiceImpl^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/CamelRouteServiceImpl.java[CamelRouteServiceImpl^] +https://github.com/apache/syncope/tree/2_0_X/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/CamelRouteServiceImpl.java[CamelRouteServiceImpl^] endif::[] for reference. @@ -186,7 +186,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/spring/src/main/resources/securityContext.xml[securityContext.xml^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/spring/src/main/resources/securityContext.xml[securityContext.xml^] +https://github.com/apache/syncope/tree/2_0_X/core/spring/src/main/resources/securityContext.xml[securityContext.xml^] endif::[] , you will also need to replace the following text in `core/src/main/webapp/WEB-INF/web.xml`, diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc index df5da5a7ba4..de351a9562e 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc @@ -238,7 +238,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^] +https://github.com/apache/syncope/tree/2_0_X/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^] endif::[] class among <>. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc index 6ad64e91d88..816b9125ebc 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/restfulservices.adoc @@ -70,7 +70,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/common/lib/src/main/java/org/apache/syncope/common/lib/types/ClientExceptionType.java[ClientExceptionType^]) endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/types/ClientExceptionType.java[ClientExceptionType^]) +https://github.com/apache/syncope/tree/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/types/ClientExceptionType.java[ClientExceptionType^]) endif::[] and `X-Application-Error-Info` might be optionally populated with more details, if available. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc index dd7d770ba62..f7d18f5a710 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/connectorbundles.adoc @@ -118,7 +118,7 @@ to Connector bundles can be added or replaced at run-time by performing the following steps: -. https://github.com/Tirasa/ConnId/blob/tree/2_0_X/README.md#available-connectors[Download^] the required connector bundle +. https://github.com/Tirasa/ConnId/tree/2_0_X/README.md#available-connectors[Download^] the required connector bundle JAR file; . Copy the downloaded JAR file into one of configured <>, typically the `bundles` directory where the other connector bundles are already available. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc index 1720c964af8..813d52e7244 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/javaeecontainer.adoc @@ -94,7 +94,7 @@ ifeval::["{snapshotOrRelease}" == "release"] https://github.com/apache/syncope/blob/syncope-{docVersion}/fit/core-reference/src/main/resources/jboss/restCXFContext.xml[restCXFContext.xml^] endif::[] ifeval::["{snapshotOrRelease}" == "snapshot"] -https://github.com/apache/syncope/blob/tree/2_0_X/fit/core-reference/src/main/resources/jboss/restCXFContext.xml[restCXFContext.xml^] +https://github.com/apache/syncope/tree/2_0_X/fit/core-reference/src/main/resources/jboss/restCXFContext.xml[restCXFContext.xml^] endif::[] and save it under `core/src/main/resources/`. From 18a4ae4bcb40c5d22ef87c10975f7940aa04c8f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Mon, 19 Sep 2016 09:50:57 +0200 Subject: [PATCH 005/106] [SYNCOPE-944] Clean up --- .../provisioning/java/data/AnyObjectDataBinderImpl.java | 9 ++------- .../core/provisioning/java/data/UserDataBinderImpl.java | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java index 74940094aeb..a998a669fd3 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java @@ -45,8 +45,6 @@ import org.apache.syncope.core.spring.BeanUtils; import org.apache.syncope.core.provisioning.api.utils.EntityUtils; import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO; -import org.apache.syncope.core.persistence.api.dao.search.AssignableCond; -import org.apache.syncope.core.persistence.api.dao.search.SearchCond; import org.apache.syncope.core.persistence.api.entity.AnyType; import org.apache.syncope.core.persistence.api.entity.AnyUtils; import org.apache.syncope.core.persistence.api.entity.PlainSchema; @@ -166,12 +164,9 @@ public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.ANY_OBJECT); if (anyObject.getRealm() != null) { - AssignableCond assignableCond = new AssignableCond(); - assignableCond.setRealmFullPath(anyObject.getRealm().getFullPath()); - // relationships Collection assignableAnyObjects = CollectionUtils.collect( - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.ANY_OBJECT), + searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT), EntityUtils.keyTransformer()); for (RelationshipTO relationshipTO : anyObjectTO.getRelationships()) { @@ -213,7 +208,7 @@ public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { // memberships Collection assignableGroups = CollectionUtils.collect( - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.GROUP), + searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP), EntityUtils.keyTransformer()); for (MembershipTO membershipTO : anyObjectTO.getMemberships()) { diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java index eeef4fd78b4..581682014de 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java @@ -61,8 +61,6 @@ import org.apache.syncope.core.provisioning.api.utils.EntityUtils; import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO; import org.apache.syncope.core.persistence.api.dao.RoleDAO; -import org.apache.syncope.core.persistence.api.dao.search.AssignableCond; -import org.apache.syncope.core.persistence.api.dao.search.SearchCond; import org.apache.syncope.core.persistence.api.entity.AnyUtils; import org.apache.syncope.core.persistence.api.entity.PlainSchema; import org.apache.syncope.core.persistence.api.entity.Realm; @@ -192,12 +190,9 @@ public void create(final User user, final UserTO userTO, final boolean storePass AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.USER); if (user.getRealm() != null) { - AssignableCond assignableCond = new AssignableCond(); - assignableCond.setRealmFullPath(user.getRealm().getFullPath()); - // relationships Collection assignableAnyObjects = CollectionUtils.collect( - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.ANY_OBJECT), + searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT), EntityUtils.keyTransformer()); for (RelationshipTO relationshipTO : userTO.getRelationships()) { @@ -229,7 +224,7 @@ public void create(final User user, final UserTO userTO, final boolean storePass // memberships Collection assignableGroups = CollectionUtils.collect( - searchDAO.search(SearchCond.getLeafCond(assignableCond), AnyTypeKind.GROUP), + searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP), EntityUtils.keyTransformer()); for (MembershipTO membershipTO : userTO.getMemberships()) { From 119e4edff3281ca6299f963847177843305c8363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Mon, 19 Sep 2016 09:51:06 +0200 Subject: [PATCH 006/106] Upgrading Jackson and PDFBox --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index def1563364f..e1caf8021f5 100644 --- a/pom.xml +++ b/pom.xml @@ -360,7 +360,7 @@ under the License. 2.17.3 - 2.8.2 + 2.8.3 4.3.2.RELEASE 4.1.3.RELEASE @@ -1097,7 +1097,7 @@ under the License. org.apache.pdfbox pdfbox - 2.0.2 + 2.0.3 From 3be11e82b3ed9fc83ed5e274e6ee25b364e87edf Mon Sep 17 00:00:00 2001 From: fmartelli Date: Mon, 19 Sep 2016 16:53:25 +0200 Subject: [PATCH 007/106] [SYNCOPE-947] improves template management for realms + fixes some minor l&f issues --- .../console/wizards/any/AnyObjectTemplateWizardBuilder.java | 2 +- .../console/wizards/any/GroupTemplateWizardBuilder.java | 2 +- .../apache/syncope/client/console/wizards/any/Groups.java | 6 ++++-- .../console/wizards/any/UserTemplateWizardBuilder.java | 2 +- .../resources/META-INF/resources/css/syncopeConsole.css | 5 +++++ .../syncope/client/console/wizards/any/ConnObjectPanel.html | 2 +- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java index 239a5036eaf..141aa9de6bf 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java @@ -48,7 +48,7 @@ public AnyObjectTemplateWizardBuilder( AnyObjectTO anyObjectTO = new AnyObjectTO(); anyObjectTO.setType(anyType); if (templatable instanceof RealmTO) { - anyObjectTO.setRealm(RealmTO.class.cast(templatable).getFullPath()); + anyObjectTO.setRealm(String.format("'%s'", RealmTO.class.cast(templatable).getFullPath())); } setItem(new AnyWrapper<>(anyObjectTO)); } diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java index 13f0698e496..d9199fe72f0 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java @@ -46,7 +46,7 @@ public GroupTemplateWizardBuilder( } else { GroupTO groupTO = new GroupTO(); if (templatable instanceof RealmTO) { - groupTO.setRealm(RealmTO.class.cast(templatable).getFullPath()); + groupTO.setRealm(String.format("'%s'", RealmTO.class.cast(templatable).getFullPath())); } setItem(new GroupWrapper(groupTO)); } diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java index 39f9b9ba1fd..8181baf3f4f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java @@ -59,6 +59,8 @@ public class Groups extends WizardStep implements ICondition { public Groups(final T anyTO, final boolean templateMode) { super(); + final String realm = templateMode ? "/" : anyTO.getRealm(); + // ----------------------------------------------------------------- // Pre-Authorizations // ----------------------------------------------------------------- @@ -110,7 +112,7 @@ public boolean evaluate(final MembershipTO object) { public List execute(final String filter) { return CollectionUtils.collect( groupRestClient.search( - anyTO.getRealm(), + realm, SyncopeClient.getGroupSearchConditionBuilder(). isAssignable().and().is("name").equalTo(filter).query(), -1, -1, @@ -129,7 +131,7 @@ public MembershipTO transform(final GroupTO input) { }).hideLabel().setOutputMarkupId(true)); allGroups = groupRestClient.search( - templateMode ? "/" : anyTO.getRealm(), null, -1, -1, new SortParam<>("name", true), null); + templateMode ? "/" : realm, null, -1, -1, new SortParam<>("name", true), null); final Map allGroupsByKey = new LinkedHashMap<>(allGroups.size()); for (GroupTO group : allGroups) { diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java index 9873e35320b..f2f1477830f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java @@ -46,7 +46,7 @@ public UserTemplateWizardBuilder( } else { UserTO userTO = new UserTO(); if (templatable instanceof RealmTO) { - userTO.setRealm(RealmTO.class.cast(templatable).getFullPath()); + userTO.setRealm(String.format("'%s'", RealmTO.class.cast(templatable).getFullPath())); } setItem(new UserWrapper(userTO)); } diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css index e55578fa927..9aa9714a5c5 100644 --- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css +++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css @@ -624,6 +624,11 @@ START - Result page width: 50%; } +.right { + float:right; + width: 50%; +} + span.highlight .attribute label { color : red; } diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html index d517cd1e6d6..18a44488994 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html @@ -25,7 +25,7 @@
[ATTIRIBUTE]
-
+
[ATTIRIBUTE]
From 95d4b15aeada2816c7fc44b54c83926f0d9634ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Tue, 20 Sep 2016 13:21:18 +0200 Subject: [PATCH 008/106] [SYNCOPE-948] Improvement provided --- .../anyobject/AnyObjectResultManager.java | 3 -- .../commands/group/GroupResultManager.java | 3 -- .../cli/commands/user/UserResultManager.java | 3 -- .../console/wizards/any/PlainAttrs.java | 12 ++--- .../client/console/wizards/any/VirAttrs.java | 12 +++-- .../syncope/common/lib/AnyOperations.java | 7 ++- .../apache/syncope/common/lib/to/AttrTO.java | 27 +++++----- .../syncope/common/lib/AnyOperationsTest.java | 51 +++++++++++++++++++ .../core/logic/ConfigurationLogic.java | 2 +- .../core/logic/report/XSLTTransformer.java | 2 +- .../test/resources/domains/MasterContent.xml | 10 ++-- .../api/data/ConfigurationDataBinder.java | 2 +- .../java/data/AbstractAnyDataBinder.java | 50 +++++++++++------- .../java/data/AnyObjectDataBinderImpl.java | 3 +- .../data/ConfigurationDataBinderImpl.java | 35 ++++++------- .../java/data/GroupDataBinderImpl.java | 10 +++- .../java/data/UserDataBinderImpl.java | 3 +- .../syncope/fit/core/AnyObjectITCase.java | 2 + .../syncope/fit/core/ConfigurationITCase.java | 2 + 19 files changed, 154 insertions(+), 85 deletions(-) create mode 100644 common/lib/src/test/java/org/apache/syncope/common/lib/AnyOperationsTest.java diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectResultManager.java index a1072397d2e..1e2c3e60f4e 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectResultManager.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectResultManager.java @@ -68,9 +68,6 @@ public void printAttribute(final AttrTO attribute) { .append(attribute.getSchema()) .append(": ") .append(attribute.getValues()); - if (attribute.isReadonly()) { - attributeMessageBuilder.append(" - is readonly"); - } System.out.println(attributeMessageBuilder.toString()); } diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java index db4796dea38..da4c349656a 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupResultManager.java @@ -71,9 +71,6 @@ public void printAttribute(final AttrTO attribute) { .append(attribute.getSchema()) .append(": ") .append(attribute.getValues()); - if (attribute.isReadonly()) { - attributeMessageBuilder.append(" - is readonly"); - } System.out.println(attributeMessageBuilder.toString()); System.out.println(""); } diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java index 2c479a47d66..4a1111ac52b 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/user/UserResultManager.java @@ -88,9 +88,6 @@ private void printAttributes(final Set derAttrTOs) { .append(attrTO.getSchema()) .append(": ") .append(attrTO.getValues()); - if (attrTO.isReadonly()) { - attributeSentence.append(" - is readonly."); - } System.out.println(attributeSentence); } } diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java index c5c2f0c19ca..96d92730b7f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java @@ -106,7 +106,7 @@ public WebMarkupContainer getPanel(final String panelId) { return new PlainSchemas( panelId, membershipSchemas.get(membershipTO.getGroupKey()), - new ListModel(getAttrsFromTO(membershipTO))); + new ListModel<>(getAttrsFromTO(membershipTO))); } }), Model.of(-1)).setOutputMarkupId(true)); } @@ -150,8 +150,8 @@ protected void setAttrs() { if (attrMap.get(schema.getKey()) == null || attrMap.get(schema.getKey()).getValues().isEmpty()) { attrTO.getValues().add(""); - // is important to set readonly only after values setting - attrTO.setReadonly(schema.isReadonly()); + // is important to set the schema info only after values setting + attrTO.setSchemaInfo(schema); } else { attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues()); } @@ -175,8 +175,8 @@ protected void setAttrs(final MembershipTO membershipTO) { if (attrMap.get(schema.getKey()) == null || attrMap.get(schema.getKey()).getValues().isEmpty()) { attrTO.getValues().add(""); - // is important to set readonly only after values setting - attrTO.setReadonly(schema.isReadonly()); + // is important to set the schema info only after values setting + attrTO.setSchemaInfo(schema); } else { attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues()); } @@ -232,7 +232,7 @@ private FieldPanel getFieldPanel(final PlainSchemaTO schemaTO) { break; case Enum: - panel = new AjaxDropDownChoicePanel<>("panel", schemaTO.getKey(), new Model(), false); + panel = new AjaxDropDownChoicePanel<>("panel", schemaTO.getKey(), new Model<>(), false); ((AjaxDropDownChoicePanel) panel).setChoices(SchemaUtils.getEnumeratedValues(schemaTO)); if (StringUtils.isNotBlank(schemaTO.getEnumerationKeys())) { diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java index 27bc7f33f04..b3432f84450 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java @@ -175,19 +175,21 @@ public VirSchemas(final String id, final IModel> attrTOs) { protected void populateItem(final ListItem item) { AttrTO attrTO = item.getModelObject(); - attrTO.setReadonly(attrTO.isReadonly()); + AjaxTextFieldPanel panel = + new AjaxTextFieldPanel("panel", attrTO.getSchema(), new Model(), false); - final AjaxTextFieldPanel panel - = new AjaxTextFieldPanel("panel", attrTO.getSchema(), new Model(), false); + boolean readonly = attrTO.getSchemaInfo() == null + ? false + : VirSchemaTO.class.cast(attrTO.getSchemaInfo()).isReadonly(); if (mode == AjaxWizard.Mode.TEMPLATE) { - item.add(panel.enableJexlHelp().setEnabled(!attrTO.isReadonly())); + item.add(panel.enableJexlHelp().setEnabled(!readonly)); } else { item.add(new MultiFieldPanel.Builder<>( new PropertyModel>(attrTO, "values")).build( "panel", attrTO.getSchema(), - panel).setEnabled(!attrTO.isReadonly())); + panel).setEnabled(!readonly)); } } }); diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java index 2d3f8f96cfe..b4cc32953de 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java @@ -186,8 +186,11 @@ public void execute(final String schema) { attrTO(new AttrTO.Builder().schema(attrTO.getSchema()).build()). build()); } - } else { - AttrPatch patch = new AttrPatch.Builder().operation(PatchOperation.ADD_REPLACE).attrTO(attrTO).build(); + } else if (!originalAttrs.containsKey(attrTO.getSchema()) + || !originalAttrs.get(attrTO.getSchema()).getValues().equals(attrTO.getValues())) { + + AttrPatch patch = new AttrPatch.Builder().operation(PatchOperation.ADD_REPLACE).attrTO(attrTO). + build(); if (!patch.isEmpty()) { result.getPlainAttrs().add(patch); } diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AttrTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AttrTO.java index 65a6b51dbbc..7822a6b1322 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AttrTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AttrTO.java @@ -45,8 +45,8 @@ public Builder schema(final String schema) { return this; } - public Builder readonly(final boolean readonly) { - instance.setReadonly(readonly); + public Builder schemaInfo(final AbstractSchemaTO schemaInfo) { + instance.schemaInfo = schemaInfo; return this; } @@ -70,6 +70,11 @@ public AttrTO build() { } } + /** + * (Optional) schema information for this attribute. + */ + private AbstractSchemaTO schemaInfo; + /** * Name of the schema that this attribute is referring to. */ @@ -81,9 +86,15 @@ public AttrTO build() { private final List values = new ArrayList<>(); /** - * Whether this attribute is read-only or not. + * @return schema information for this attribute; may be {@code NULL} */ - private boolean readonly = false; + public AbstractSchemaTO getSchemaInfo() { + return schemaInfo; + } + + public void setSchemaInfo(final AbstractSchemaTO schemaInfo) { + this.schemaInfo = schemaInfo; + } /** * @return the name of the schema that this attribute is referring to @@ -110,12 +121,4 @@ public void setSchema(final String schema) { public List getValues() { return values; } - - public boolean isReadonly() { - return readonly; - } - - public void setReadonly(final boolean readonly) { - this.readonly = readonly; - } } diff --git a/common/lib/src/test/java/org/apache/syncope/common/lib/AnyOperationsTest.java b/common/lib/src/test/java/org/apache/syncope/common/lib/AnyOperationsTest.java new file mode 100644 index 00000000000..51b64239825 --- /dev/null +++ b/common/lib/src/test/java/org/apache/syncope/common/lib/AnyOperationsTest.java @@ -0,0 +1,51 @@ +/* + * 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.common.lib; + +import static org.junit.Assert.assertEquals; + +import org.apache.syncope.common.lib.patch.AnyObjectPatch; +import org.apache.syncope.common.lib.patch.AttrPatch; +import org.apache.syncope.common.lib.to.AnyObjectTO; +import org.apache.syncope.common.lib.to.AttrTO; +import org.apache.syncope.common.lib.types.PatchOperation; +import org.junit.Test; + +public class AnyOperationsTest { + + @Test + public void mindiff() { + AnyObjectTO oldOne = new AnyObjectTO(); + oldOne.setName("name"); + oldOne.getPlainAttrs().add(new AttrTO.Builder().schema("plain").value("oldValue").build()); + oldOne.getPlainAttrs().add(new AttrTO.Builder().schema("encrypted").value("oldValue").build()); + + AnyObjectTO newOne = new AnyObjectTO(); + newOne.setName("name"); + newOne.getPlainAttrs().add(new AttrTO.Builder().schema("plain").value("newValue").build()); + newOne.getPlainAttrs().add(new AttrTO.Builder().schema("encrypted").value("oldValue").build()); + + AnyObjectPatch diff = AnyOperations.diff(newOne, oldOne, true); + assertEquals(1, diff.getPlainAttrs().size()); + + AttrPatch patch = diff.getPlainAttrs().iterator().next(); + assertEquals(PatchOperation.ADD_REPLACE, patch.getOperation()); + assertEquals("plain", patch.getAttrTO().getSchema()); + } +} diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java index b6c31b48a4e..200cc7ad3e5 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java @@ -103,7 +103,7 @@ public AttrTO get(final String schema) { @PreAuthorize("hasRole('" + StandardEntitlement.CONFIGURATION_SET + "')") public void set(final AttrTO value) { - confDAO.save(binder.getAttribute(value)); + confDAO.save(binder.getAttr(value)); } @PreAuthorize("hasRole('" + StandardEntitlement.CONFIGURATION_EXPORT + "')") diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/XSLTTransformer.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/XSLTTransformer.java index 91ecb923aac..3dd6d78e690 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/XSLTTransformer.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/XSLTTransformer.java @@ -132,7 +132,7 @@ public void setParameters(final Map parameters) { if (parameters == null) { this.parameters = null; } else { - this.parameters = new HashMap<>(parameters); + this.parameters = new HashMap(parameters); } } diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml index 123da30222e..40a2e6384c0 100644 --- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml @@ -1055,7 +1055,7 @@ under the License. pullMode="INCREMENTAL" unmatchingRule="ASSIGN" matchingRule="UPDATE" active="1"/> + template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["csv"],"derAttrs":[{"schema":"cn","values":[""]}],"virAttrs":[],"resources":["resource-testdb"],"relationships":[],"memberships":[{"rightType":"GROUP","rightKey":"f779c0d4-633b-4be5-8f57-32eb478a3ca5","groupName":null}],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"ctype","values":["email == 'test8@syncope.apache.org'? 'TYPE_8': 'TYPE_OTHER'"]}]}'/> @@ -1071,7 +1071,7 @@ under the License. destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" pullMode="FULL_RECONCILIATION" unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/> + template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"relationships":[],"memberships":[],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"ctype","values":["'type a'"]},{"schema":"userId","values":["'reconciled@syncope.apache.org'"]},{"schema":"fullname","values":["'reconciled fullname'"]},{"schema":"surname","values":["'surname'"]}]}'/> + template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":"'/' + title","status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["minimal group"],"derAttrs":[],"virAttrs":[{"schema":"virtualReadOnly","values":[""]}],"resources":["resource-ldap"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[]}'/> + template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[{"schema":"show","values":["true"]}]}'/> + template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":["resource-testdb"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[{"schema":"firstname","values":[""]},{"schema":"userId","values":["'test'"]},{"schema":"fullname","values":["'test'"]},{"schema":"surname","values":["'test'"]}]}'/> getConfTO(); - CPlainAttr getAttribute(AttrTO attributeTO); + CPlainAttr getAttr(AttrTO attrTO); } diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java index 167ced47413..0bb5e25253b 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java @@ -89,12 +89,16 @@ import org.apache.syncope.core.persistence.api.entity.GroupableRelatable; import org.apache.syncope.core.provisioning.java.IntAttrNameParser; import org.apache.syncope.core.provisioning.api.IntAttrName; +import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder; import org.apache.syncope.core.provisioning.java.utils.MappingUtils; abstract class AbstractAnyDataBinder { protected static final Logger LOG = LoggerFactory.getLogger(AbstractAnyDataBinder.class); + @Autowired + protected SchemaDataBinder schemaDataBinder; + @Autowired protected RealmDAO realmDAO; @@ -198,8 +202,8 @@ private void fillAttr( List valuesProvided = schema.isMultivalue() ? values : (values.isEmpty() - ? Collections.emptyList() - : Collections.singletonList(values.iterator().next())); + ? Collections.emptyList() + : Collections.singletonList(values.iterator().next())); for (String value : valuesProvided) { if (StringUtils.isBlank(value)) { @@ -549,40 +553,48 @@ protected void fill( } } - protected void fillTO(final AnyTO anyTO, + protected void fillTO( + final AnyTO anyTO, final String realmFullPath, final Collection auxClasses, final Collection> plainAttrs, final Map derAttrs, final Map> virAttrs, - final Collection resources) { + final Collection resources, + final boolean details) { anyTO.setRealm(realmFullPath); CollectionUtils.collect(auxClasses, EntityUtils.keyTransformer(), anyTO.getAuxClasses()); for (PlainAttr plainAttr : plainAttrs) { - anyTO.getPlainAttrs().add(new AttrTO.Builder(). + AttrTO.Builder attrTOBuilder = new AttrTO.Builder(). schema(plainAttr.getSchema().getKey()). - values(plainAttr.getValuesAsStrings()). - readonly(plainAttr.getSchema().isReadonly()). - build()); + values(plainAttr.getValuesAsStrings()); + if (details) { + attrTOBuilder.schemaInfo(schemaDataBinder.getPlainSchemaTO(plainAttr.getSchema())); + } + anyTO.getPlainAttrs().add(attrTOBuilder.build()); } for (Map.Entry entry : derAttrs.entrySet()) { - anyTO.getDerAttrs().add(new AttrTO.Builder(). + AttrTO.Builder attrTOBuilder = new AttrTO.Builder(). schema(entry.getKey().getKey()). - value(entry.getValue()). - readonly(true). - build()); + value(entry.getValue()); + if (details) { + attrTOBuilder.schemaInfo(schemaDataBinder.getDerSchemaTO(entry.getKey())); + } + anyTO.getDerAttrs().add(attrTOBuilder.build()); } for (Map.Entry> entry : virAttrs.entrySet()) { - anyTO.getVirAttrs().add(new AttrTO.Builder(). + AttrTO.Builder attrTOBuilder = new AttrTO.Builder(). schema(entry.getKey().getKey()). - values(entry.getValue()). - readonly(entry.getKey().isReadonly()). - build()); + values(entry.getValue()); + if (details) { + attrTOBuilder.schemaInfo(schemaDataBinder.getVirSchemaTO(entry.getKey())); + } + anyTO.getVirAttrs().add(attrTOBuilder.build()); } for (ExternalResource resource : resources) { @@ -611,7 +623,7 @@ protected MembershipTO getMembershipTO( membershipTO.getPlainAttrs().add(new AttrTO.Builder(). schema(plainAttr.getSchema().getKey()). values(plainAttr.getValuesAsStrings()). - readonly(plainAttr.getSchema().isReadonly()). + schemaInfo(schemaDataBinder.getPlainSchemaTO(plainAttr.getSchema())). build()); } @@ -619,7 +631,7 @@ protected MembershipTO getMembershipTO( membershipTO.getDerAttrs().add(new AttrTO.Builder(). schema(entry.getKey().getKey()). value(entry.getValue()). - readonly(true). + schemaInfo(schemaDataBinder.getDerSchemaTO(entry.getKey())). build()); } @@ -627,7 +639,7 @@ protected MembershipTO getMembershipTO( membershipTO.getVirAttrs().add(new AttrTO.Builder(). schema(entry.getKey().getKey()). values(entry.getValue()). - readonly(entry.getKey().isReadonly()). + schemaInfo(schemaDataBinder.getVirSchemaTO(entry.getKey())). build()); } diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java index a998a669fd3..677bf81c90b 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java @@ -97,7 +97,8 @@ public AnyObjectTO getAnyObjectTO(final AnyObject anyObject, final boolean detai anyObject.getPlainAttrs(), derAttrHandler.getValues(anyObject), virAttrValues, - anyObjectDAO.findAllResources(anyObject)); + anyObjectDAO.findAllResources(anyObject), + details); if (details) { // relationships diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConfigurationDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConfigurationDataBinderImpl.java index 5d277b3997e..56b0b92d352 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConfigurationDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConfigurationDataBinderImpl.java @@ -48,28 +48,23 @@ public class ConfigurationDataBinderImpl extends AbstractAnyDataBinder implement @Override public List getConfTO() { - final List attrTOs = new ArrayList<>(); - for (final CPlainAttr plainAttr : confDAO.get().getPlainAttrs()) { - final AttrTO attrTO = new AttrTO(); - attrTO.setSchema(plainAttr.getSchema().getKey()); - attrTO.getValues().addAll(plainAttr.getValuesAsStrings()); - attrTO.setReadonly(plainAttr.getSchema().isReadonly()); - attrTOs.add(attrTO); + List attrTOs = new ArrayList<>(); + for (CPlainAttr attr : confDAO.get().getPlainAttrs()) { + attrTOs.add(getAttrTO(attr)); } return attrTOs; } @Override public AttrTO getAttrTO(final CPlainAttr attr) { - AttrTO attributeTO = new AttrTO(); - attributeTO.setSchema(attr.getSchema().getKey()); - attributeTO.getValues().addAll(attr.getValuesAsStrings()); - attributeTO.setReadonly(attr.getSchema().isReadonly()); - - return attributeTO; + return new AttrTO.Builder(). + schemaInfo(schemaDataBinder.getPlainSchemaTO(attr.getSchema())). + schema(attr.getSchema().getKey()). + values(attr.getValuesAsStrings()). + build(); } - private void fillAttribute(final List values, + private void fillAttr(final List values, final PlainSchema schema, final CPlainAttr attr, final SyncopeClientException invalidValues) { // if schema is multivalue, all values are considered for addition; @@ -77,8 +72,8 @@ private void fillAttribute(final List values, List valuesProvided = schema.isMultivalue() ? values : (values.isEmpty() - ? Collections.emptyList() - : Collections.singletonList(values.iterator().next())); + ? Collections.emptyList() + : Collections.singletonList(values.iterator().next())); if (valuesProvided.isEmpty()) { JexlContext jexlContext = new MapContext(); @@ -120,16 +115,16 @@ private void fillAttribute(final List values, } @Override - public CPlainAttr getAttribute(final AttrTO attributeTO) { - PlainSchema schema = getPlainSchema(attributeTO.getSchema()); + public CPlainAttr getAttr(final AttrTO attrTO) { + PlainSchema schema = getPlainSchema(attrTO.getSchema()); if (schema == null) { - throw new NotFoundException("Conf schema " + attributeTO.getSchema()); + throw new NotFoundException("Conf schema " + attrTO.getSchema()); } else { SyncopeClientException invalidValues = SyncopeClientException.build(ClientExceptionType.InvalidValues); CPlainAttr attr = entityFactory.newEntity(CPlainAttr.class); attr.setSchema(schema); - fillAttribute(attributeTO.getValues(), schema, attr, invalidValues); + fillAttr(attrTO.getValues(), schema, attr, invalidValues); if (!invalidValues.isEmpty()) { throw invalidValues; diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java index c7ab1b10cad..d0d751ab078 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java @@ -332,8 +332,14 @@ public GroupTO getGroupTO(final Group group, final boolean details) { Map> virAttrValues = details ? virAttrHandler.getValues(group) : Collections.>emptyMap(); - fillTO(groupTO, group.getRealm().getFullPath(), group.getAuxClasses(), - group.getPlainAttrs(), derAttrValues, virAttrValues, group.getResources()); + fillTO(groupTO, + group.getRealm().getFullPath(), + group.getAuxClasses(), + group.getPlainAttrs(), + derAttrValues, + virAttrValues, + group.getResources(), + details); if (group.getUDynMembership() != null) { groupTO.setUDynMembershipCond(group.getUDynMembership().getFIQLCond()); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java index 581682014de..4437713e596 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java @@ -570,7 +570,8 @@ public UserTO getUserTO(final User user, final boolean details) { user.getPlainAttrs(), derAttrHandler.getValues(user), virAttrValues, - userDAO.findAllResources(user)); + userDAO.findAllResources(user), + details); if (details) { // roles diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java index b4aaf2ea954..95325a928f9 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java @@ -180,6 +180,8 @@ public void updateAttr() { anyObjectService.update(anyObjectTO.getKey(), SchemaType.PLAIN, updated); AttrTO location = anyObjectService.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location"); + // need to remove schemaInfo which is included when reading the any object + location.setSchemaInfo(null); assertEquals(updated, location); } diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConfigurationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConfigurationITCase.java index d1780e71de5..d2d9b64b388 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConfigurationITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConfigurationITCase.java @@ -58,6 +58,7 @@ public void create() { configurationService.set(conf); AttrTO actual = configurationService.get(conf.getSchema()); + actual.setSchemaInfo(null); assertEquals(actual, conf); } @@ -81,6 +82,7 @@ public void createRequired() { configurationService.set(conf); AttrTO actual = configurationService.get(conf.getSchema()); + actual.setSchemaInfo(null); assertEquals(actual, conf); } From 3d88469eeaa81d2e6210a4c79bbf93ee104ca7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Tue, 20 Sep 2016 15:35:13 +0200 Subject: [PATCH 009/106] Upgrading Spring --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e1caf8021f5..2b9f62e82e2 100644 --- a/pom.xml +++ b/pom.xml @@ -362,7 +362,7 @@ under the License. 2.8.3 - 4.3.2.RELEASE + 4.3.3.RELEASE 4.1.3.RELEASE 2.4.1 From 34c2f0c75dc5a9fa269703d78e799782e9e808d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 22 Sep 2016 14:23:22 +0200 Subject: [PATCH 010/106] Adding warning for e-mail configuration --- .../systemadministration/emailconfiguration.adoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc index 6001e518aa1..33f2853760d 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc @@ -30,3 +30,7 @@ e-mails: * `smtpConnectionTimeout` - the connection timeout value in milliseconds, to the mail host; * `mailDebug` - when `true`, enable the debugging of email, including the handshake, authentication, delivery and disconnection. + +[WARNING] +Be sure to provide a sensible value for the `notificationjob.cronExpression` configuration parameter, see +<> for details. From 5681a0b5173491e762c6ebfdae1623a540ab123d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 22 Sep 2016 14:50:53 +0200 Subject: [PATCH 011/106] Upgrading Angular Translate --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2b9f62e82e2..20aecf872c4 100644 --- a/pom.xml +++ b/pom.xml @@ -429,7 +429,7 @@ under the License. 1.3.3 0.17.1 1.1.0 - 2.11.1 + 2.12.1 0.2.1 4.15.0 From 97c2c91c34db6d1c2c570654da8bd0be569e30bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 22 Sep 2016 15:09:46 +0200 Subject: [PATCH 012/106] Adding admonitions for e-mail configuration --- .../systemadministration/configurationparameters.adoc | 4 ++++ .../systemadministration/emailconfiguration.adoc | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc index 55fdc6d5e8d..8a547a0fbac 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc @@ -28,7 +28,11 @@ salting options are available in the `security.properties` file; * `notificationjob.cronExpression` - http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/crontrigger.html[cron^] expression describing how frequently the pending <> are processed: empty means disabled; +[NOTE] +Restarting the Java EE container is required when changing value for this parameter. * `notification.maxRetries` - how many times the delivery of a given notification should be attempted before giving up; +[NOTE] +Restarting the Java EE container is required when changing value for this parameter. * `token.length` - the length of the random tokens that can be generated as part of various <> processes, including <>; * `token.expireTime` - the time after which the generated random tokens expire; diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc index 33f2853760d..6863f6d5001 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/emailconfiguration.adoc @@ -31,6 +31,10 @@ e-mails: * `mailDebug` - when `true`, enable the debugging of email, including the handshake, authentication, delivery and disconnection. +[NOTE] +In order to make the changes to `mail.properties` effective, the Java EE container needs to be restarted. + [WARNING] -Be sure to provide a sensible value for the `notificationjob.cronExpression` configuration parameter, see -<> for details. +Be sure to provide a sensible value for the `notificationjob.cronExpression` configuration parameter, otherwise +the <> will not be triggered; see <> for +details. From c0124145b58e192f6b749886e4c245bc267899ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 22 Sep 2016 15:25:51 +0200 Subject: [PATCH 013/106] Revert "Upgrading Angular Translate" This reverts commit 5681a0b5173491e762c6ebfdae1623a540ab123d. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 20aecf872c4..2b9f62e82e2 100644 --- a/pom.xml +++ b/pom.xml @@ -429,7 +429,7 @@ under the License. 1.3.3 0.17.1 1.1.0 - 2.12.1 + 2.11.1 0.2.1 4.15.0 From ea4786ba49d14c5ca98769ab7628f095b4e67e7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 22 Sep 2016 16:12:47 +0200 Subject: [PATCH 014/106] [SYNCOPE-949] Remove management of WebApplicationException and BadRequestException --- .../rest/cxf/RestServiceExceptionMapper.java | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java index d6fa8914042..eb584df5f43 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java @@ -28,8 +28,6 @@ import javax.persistence.PersistenceException; import javax.persistence.RollbackException; import javax.validation.ValidationException; -import javax.ws.rs.BadRequestException; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; @@ -99,15 +97,6 @@ public Response toResponse(final Exception ex) { builder = sce.isComposite() ? getSyncopeClientCompositeExceptionResponse(sce.asComposite()) : getSyncopeClientExceptionResponse(sce); - } else if (ex instanceof WebApplicationException) { - Response response = ((WebApplicationException) ex).getResponse(); - - ErrorTO error = new ErrorTO(); - error.setStatus(response.getStatus()); - error.setType(ClientExceptionType.Unknown); - error.getElements().add(ExceptionUtils.getRootCauseMessage(ex)); - - builder = builder(response).entity(error); } else if (ex instanceof AccessDeniedException) { builder = Response.status(Response.Status.UNAUTHORIZED). header(RESTHeaders.ERROR_CODE, Response.Status.UNAUTHORIZED.getReasonPhrase()). @@ -260,8 +249,6 @@ private ResponseBuilder processInvalidEntityExceptions(final Exception ex) { } private ResponseBuilder processBadRequestExceptions(final Exception ex) { - ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST); - // This exception might be raised by Activiti (if enabled) Class ibatisPersistenceException = null; try { @@ -270,13 +257,7 @@ private ResponseBuilder processBadRequestExceptions(final Exception ex) { // ignore } - if (ex instanceof BadRequestException) { - if (((BadRequestException) ex).getResponse() == null) { - return builder; - } else { - return builder(((BadRequestException) ex).getResponse()); - } - } else if (ex instanceof WorkflowException) { + if (ex instanceof WorkflowException) { return builder(ClientExceptionType.Workflow, ExceptionUtils.getRootCauseMessage(ex)); } else if (ex instanceof PersistenceException) { return builder(ClientExceptionType.GenericPersistence, ExceptionUtils.getRootCauseMessage(ex)); From 9a33bec5e0c2af50d6e30833ba82f72bd28cb7ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 23 Sep 2016 10:43:45 +0200 Subject: [PATCH 015/106] URL validator --- .../attrvalue/validation/URLValidator.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/URLValidator.java diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/URLValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/URLValidator.java new file mode 100644 index 00000000000..3138ca994be --- /dev/null +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/attrvalue/validation/URLValidator.java @@ -0,0 +1,43 @@ +/* + * 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.core.persistence.jpa.attrvalue.validation; + +import java.net.MalformedURLException; +import java.net.URL; +import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidPlainAttrValueException; +import org.apache.syncope.core.persistence.api.entity.PlainAttrValue; +import org.apache.syncope.core.persistence.api.entity.PlainSchema; + +public class URLValidator extends AbstractValidator { + + private static final long serialVersionUID = 792457177290331518L; + + public URLValidator(final PlainSchema schema) { + super(schema); + } + + @Override + protected void doValidate(final PlainAttrValue attrValue) { + try { + new URL(attrValue.getStringValue()); + } catch (MalformedURLException e) { + throw new InvalidPlainAttrValueException("\"" + attrValue.getValue() + "\" is not a valid URL"); + } + } +} From ba511b38b39bf7819be68324cb4c3c6ae0bdf53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 23 Sep 2016 11:25:23 +0200 Subject: [PATCH 016/106] [SYNCOPE-950] Removing readonly property from AttrTO (was useless even before SYNCOPE-948) --- .../resources/app/js/controllers/UserController.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js index 4995e264ea8..e93e3a2ed19 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js @@ -91,8 +91,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l if (!$scope.user.plainAttrs[plainSchemaKey]) { $scope.user.plainAttrs[plainSchemaKey] = { schema: plainSchemaKey, - values: [], - readonly: schemas.plainSchemas[i].readonly + values: [] }; // initialize multivalue schema and support table: create mode, only first value if (schemas.plainSchemas[i].multivalue) { @@ -118,8 +117,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l if (!$scope.user.derAttrs[derSchemaKey]) { $scope.user.derAttrs[derSchemaKey] = { schema: derSchemaKey, - values: [], - readonly: true + values: [] }; } } @@ -130,8 +128,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l if (!$scope.user.virAttrs[virSchemaKey]) { $scope.user.virAttrs[virSchemaKey] = { schema: virSchemaKey, - values: [], - readonly: schemas.virSchemas[i].readonly + values: [] }; // initialize multivalue schema and support table: create mode, only first value $scope.dynamicForm.virtualAttributeTable[schemas.virSchemas[i].key] = { From 6c83456dabe3995f4ad7b52f8618123a8c90b0f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 23 Sep 2016 12:15:22 +0200 Subject: [PATCH 017/106] Correctly setting candidate groups for approval --- .../src/main/resources/userWorkflow.bpmn20.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml b/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml index aa811cf7015..ce4281a2361 100644 --- a/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml +++ b/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml @@ -141,7 +141,8 @@ try { - + @@ -187,7 +188,8 @@ try { - + @@ -238,7 +240,8 @@ try { - + From 5277bb6549c3773bd2609ce122c7d019686630b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 23 Sep 2016 12:37:54 +0200 Subject: [PATCH 018/106] Adding info about what it is required for users to manage approvals --- .../reference-guide/concepts/workflow.adoc | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/asciidoc/reference-guide/concepts/workflow.adoc b/src/main/asciidoc/reference-guide/concepts/workflow.adoc index 1384e408388..712b59ef14e 100644 --- a/src/main/asciidoc/reference-guide/concepts/workflow.adoc +++ b/src/main/asciidoc/reference-guide/concepts/workflow.adoc @@ -119,6 +119,25 @@ Managers could also be asked to complete the information provided before the req In order to define an approval form, a dedicated BPMN `userTask` needs to be defined, following the rules established for http://www.activiti.org/userguide/index.html#forms[Activiti forms^]. +[NOTE] +.What is required for administrators to manage approval? +==== +The following conditions must be met, for an User `U` to act as administrator for approval: + +. `U` must own the following <>, for all the required realms: +.. `WORKFLOW_FORM_CLAIM` +.. `WORKFLOW_FORM_LIST` +.. `WORKFLOW_FORM_READ` +.. `WORKFLOW_FORM_SUBMIT` +.. `USER_READ` +. The BPMN `userTask` must either indicate `U` among `candidateUsers` or at least one of the groups assigned to `U` +among `candidateGroups`, as required by +http://www.activiti.org/userguide/index.html#bpmnUserTaskUserAssignmentExtension[Activiti's task assignment rules^] + +The special super-user `admin` is entitled to manage all approvals, even those not specifying any +`candidateUsers` or `candidateGroups`. +==== + [[sample-selfreg-approval]] .Approving self-registration ==== @@ -141,7 +160,7 @@ http://www.activiti.org/userguide/index.html#activitiModeler[Activiti Modeler^]. ---- <1> `formKey` and `id` must be unique across the workflow definition, `name` is displayed by the admin console; `candidateGroups` and `candidateUsers` might be defined, even both, to indicate which Groups or Users should be -managing these approvals +managing these approvals; if none are specified, only `admin` is entitled to manage such approval <2> `expression` will be evaluated against the current requesting `user` (as workflow variable) and related properties; read-only form input can be defined by setting `writable="false"` <3> exporting approval inputs into workflow variables is possible via the `variable` attribute; required form input can From a6be418b286637756d70e3872005c51ebd2e1b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 23 Sep 2016 13:28:38 +0200 Subject: [PATCH 019/106] Fixing behavior under /users/self with newer Swagger UI --- .../syncope/core/rest/cxf/ExtendedSwagger2Serializers.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java index 0bdd1074fa7..45b479ef38f 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java @@ -101,7 +101,7 @@ public void writeTo( if (replaceTags || javadocProvider != null) { List domains = new ArrayList<>( ApplicationContextProvider.getApplicationContext(). - getBean(DomainsHolder.class).getDomains().keySet()); + getBean(DomainsHolder.class).getDomains().keySet()); Map operations = new HashMap<>(); Map, OperationResourceInfo> methods = new HashMap<>(); @@ -124,8 +124,7 @@ public void writeTo( ClassResourceInfo cri = operations.get(entry.getKey()); tag = new Tag(); - String tagName = StringUtils.removeStart(cri.getURITemplate().getValue(), "/"); - tag.setName(StringUtils.isEmpty(tagName) ? "_" : tagName); + tag.setName(cri.getURITemplate().getValue().replaceAll("/", "_")); if (javadocProvider != null) { tag.setDescription(javadocProvider.getClassDoc(cri)); } From c67c98102965b4b4b270d6b64f463eb6a15d2c2c Mon Sep 17 00:00:00 2001 From: Matteo Di Carlo Date: Fri, 23 Sep 2016 16:46:04 +0200 Subject: [PATCH 020/106] [SYNCOPE-937] adds password reset test --- .../META-INF/resources/app/views/self.html | 2 +- .../enduser/protractor/protractor-conf.js | 2 +- .../enduser/protractor/tests/abstract.js | 67 ++++--------------- .../client/enduser/protractor/tests/create.js | 36 ++++++++-- .../enduser/protractor/tests/edituser.js | 37 +++------- .../tests/{login.js => passwordreset.js} | 25 +++---- 6 files changed, 64 insertions(+), 105 deletions(-) rename fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/{login.js => passwordreset.js} (57%) diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/self.html b/client/enduser/src/main/resources/META-INF/resources/app/views/self.html index 12835d2dd0c..818af7ce490 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/views/self.html +++ b/client/enduser/src/main/resources/META-INF/resources/app/views/self.html @@ -60,7 +60,7 @@
diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js index 52b597778f4..540b0eba8e6 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js @@ -19,7 +19,7 @@ exports.config = { directConnect: false, capabilities: { - 'browserName': 'phantomjs', + 'browserName': 'chrome', 'phantomjs.binary.path': '@phantomjs.binary.path@', 'phantomjs.ghostdriver.cli.args': ['--loglevel=DEBUG'] }, diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/abstract.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/abstract.js index 6c306eaeb14..1f1b2ecadb6 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/abstract.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/abstract.js @@ -16,60 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - - -exports.doCreate = function () { - describe('doCreate', function () { - - it('create donizetti', function () { - - browser.wait(element(by.id('register')).isPresent()); - element(by.id('register')).click(); - - element(by.model('user.username')).sendKeys('donizetti'); - element(by.model('user.password')).sendKeys('Password123'); - element(by.model('confirmPassword.value')).sendKeys('Password123'); - - element.all(by.id('next')).first().click(); - - element.all(by.id('next')).first().click(); - - element.all(by.name('fullname')).first().sendKeys('Gaetano Donizetti'); - element.all(by.name('userId')).first().sendKeys('donizetti@apache.org'); - element.all(by.name('firstname')).first().sendKeys('Gaetano'); - element.all(by.name('surname')).first().sendKeys('Donizetti'); - - element.all(by.id('next')).first().click(); - - element.all(by.id('next')).first().click(); - - element.all(by.id('next')).first().click(); - - element.all(by.id('next')).first().click(); - - element.all(by.id('cancel')).last().click(); - - - }); - }); -}; - -exports.doLogin = function (username, password) { - describe('doLogin', function () { - - it('login user ', function () { - browser.get(home); - - element(by.model('credentials.username')).sendKeys(username); - element(by.model('credentials.password')).sendKeys(password); - element(by.id('login-btn')).click(); - - expect(element(by.model('user.username')).getAttribute('value')).toEqual(username); - - }); - }); -}; - exports.goHome = function () { var home = 'http://localhost:9080/syncope-enduser/app/'; browser.get(home); @@ -82,3 +28,16 @@ exports.doNext = function () { exports.doCancel = function () { element.all(by.id('cancel')).last().click(); }; + +exports.doSave = function () { + element.all(by.id('save')).last().click(); +}; + +exports.waitSpinner = function () { + element.all(by.css('treasure-overlay-spinner')).isDisplayed().then(function (result) { + if (result) { + browser.driver.sleep(3000); + } + }); +} +; \ No newline at end of file diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js index 53ef48dbd85..cdd9dae1369 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js @@ -18,11 +18,35 @@ */ var abstract = require('./abstract.js'); -abstract.goHome(); -abstract.doCreate(); -describe('waitSuccess', function () { - it('wait redirect link', function () { - browser.wait(element(by.id('redirect')).isPresent()); +describe('syncope enduser user create', function () { + + it('should create user donizetti', function () { + console.log("create user test"); + abstract.goHome(); + + element(by.id('register')).click(); + element(by.model('user.username')).sendKeys('donizetti'); + element(by.model('user.password')).sendKeys('password123'); + element(by.model('confirmPassword.value')).sendKeys('password123'); + + element(by.cssContainingText('option', 'What\'s your mother\'s maiden name?')).click(); + + browser.wait(element(by.id('user.securityAnswer')).isPresent()); + element(by.model('user.securityAnswer')).sendKeys('Agata Ferlito'); + + element.all(by.id('next')).first().click(); + element.all(by.id('next')).first().click(); + + element.all(by.name('fullname')).first().sendKeys('Gaetano Donizetti'); + element.all(by.name('userId')).first().sendKeys('donizetti@apache.org'); + element.all(by.name('firstname')).first().sendKeys('Gaetano'); + element.all(by.name('surname')).first().sendKeys('Donizetti'); + + element.all(by.id('next')).first().click(); + element.all(by.id('next')).first().click(); + element.all(by.id('next')).first().click(); + element.all(by.id('next')).first().click(); + element.all(by.id('save')).last().click(); }); -}); +}); \ No newline at end of file diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js index c1088249297..e30792600c4 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js @@ -16,22 +16,11 @@ * specific language governing permissions and limitations * under the License. */ - var abstract = require('./abstract.js'); - describe('syncope enduser user edit', function () { + it('should edit user', function () { - function waitSpinner() { - element.all(by.css('treasure-overlay-spinner')).isDisplayed().then(function (result) { - if (result) { - browser.driver.sleep(3000); - } - }); - } - ; - - it('should edit user credentials', function () { - + console.log("user edit test"); abstract.goHome(); //login @@ -42,7 +31,8 @@ describe('syncope enduser user edit', function () { expect(language.length).toBe(3); }); element.all(by.options('language.name for language in languages.availableLanguages track by language.id')). - get(0).click(); + get(1).click(); + element(by.id('login-btn')).click(); //credential @@ -63,29 +53,22 @@ describe('syncope enduser user edit', function () { var group = element(by.model('dynamicForm.selectedGroups')); var selectedGroup = group.element(by.css('.ui-select-search')); group.click(); - - selectedGroup.sendKeys('additional'); - element.all(by.css('.ui-select-choices-row-inner span')).first().click(); - waitSpinner(); + //adds group root selectedGroup.sendKeys('root'); element.all(by.css('.ui-select-choices-row-inner span')).first().click(); - waitSpinner(); - + abstract.waitSpinner(); abstract.doNext(); //plainSchemas element.all(by.repeater('groupSchema in dynamicForm.groupSchemas')).then(function (groupSchema) { - expect(groupSchema.length).toBe(2); + expect(groupSchema.length).toBe(1); }); element(by.css('[name="fullname"]')).clear(); element(by.css('[name="fullname"]')).sendKeys('Vincenzo Bellini'); - browser.manage().timeouts().pageLoadTimeout(5000); - element(by.css('[name="userId"]')).clear(); element(by.css('[name="userId"]')).sendKeys('bellini@apache.org'); - browser.manage().timeouts().pageLoadTimeout(5000); var selectedDate = element(by.model('selectedDate')); selectedDate.clear(); @@ -98,17 +81,13 @@ describe('syncope enduser user edit', function () { element(by.css('[name="ctype"]')).sendKeys('bellinictype'); abstract.doNext(); - //derSchemas abstract.doNext(); - //virSchemas abstract.doNext(); - //Resources abstract.doNext(); - //Captcha - abstract.doCancel(); + element.all(by.id('save')).last().click(); }); }); diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/login.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js similarity index 57% rename from fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/login.js rename to fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js index 23ec3d5b88a..ed4211bf394 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/login.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js @@ -17,24 +17,21 @@ * under the License. */ + var abstract = require('./abstract.js'); -describe('syncope enduser user login', function () { +describe('syncope enduser user reset password', function () { - it('should login user', function () { + it('should reset password for user bellini', function () { + console.log("password reset test"); abstract.goHome(); + browser.wait(element(by.id('passwordreset')).isPresent()); + element(by.id('passwordreset')).click(); - element(by.model('credentials.username')).sendKeys('rossini'); - element(by.model('credentials.password')).sendKeys('password'); - element.all(by.options('language.name for language in languages.availableLanguages track by language.id')). - then(function (language) { - expect(language.length).toBe(3); - }); - element.all(by.options('language.name for language in languages.availableLanguages track by language.id')). - get(1).click(); - browser.driver.sleep(3000); - - element(by.id('login-btn')).click(); + element(by.model('user.username')).sendKeys('donizetti'); + element(by.model('user.username')).sendKeys(protractor.Key.TAB); + browser.wait(element(by.id('user.securityanswer')).isPresent()); + element(by.model('user.securityanswer')).sendKeys('Agata Ferlito'); }); -}); +}); \ No newline at end of file From b7c03fcf908e5b8651fea9e6a9b56aa5b6611edc Mon Sep 17 00:00:00 2001 From: Matteo Di Carlo Date: Fri, 23 Sep 2016 17:31:21 +0200 Subject: [PATCH 021/106] [SYNCOPE-937] updates protractor configuration file --- .../apache/syncope/client/enduser/protractor/protractor-conf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js index 540b0eba8e6..52b597778f4 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js @@ -19,7 +19,7 @@ exports.config = { directConnect: false, capabilities: { - 'browserName': 'chrome', + 'browserName': 'phantomjs', 'phantomjs.binary.path': '@phantomjs.binary.path@', 'phantomjs.ghostdriver.cli.args': ['--loglevel=DEBUG'] }, From d247b1dd4d8255d9fa7476cd7f4c289f2525e086 Mon Sep 17 00:00:00 2001 From: Matteo Di Carlo Date: Fri, 23 Sep 2016 17:32:53 +0200 Subject: [PATCH 022/106] [SYNCOPE-937] updates protractor configuration file --- .../syncope/client/enduser/protractor/.LCKprotractor-conf.js~ | 1 + 1 file changed, 1 insertion(+) create mode 100644 fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ new file mode 100644 index 00000000000..912d2e1a367 --- /dev/null +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ @@ -0,0 +1 @@ +/home/matt3o/WORKINGDIR/SYNCOPE/Syncope_Source/syncope/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js \ No newline at end of file From 496028e821d0b279c2777aeba680f97f0bb04378 Mon Sep 17 00:00:00 2001 From: Matteo Di Carlo Date: Tue, 27 Sep 2016 15:27:29 +0200 Subject: [PATCH 023/106] [SYNCOPE-973] updates tests --- .../resources/app/views/passwordreset.html | 6 ++-- .../protractor/.LCKprotractor-conf.js~ | 1 - .../client/enduser/protractor/tests/create.js | 28 +++++++++++---- .../enduser/protractor/tests/edituser.js | 17 +++++---- .../enduser/protractor/tests/passwordreset.js | 35 ++++++++++++++----- 5 files changed, 62 insertions(+), 25 deletions(-) delete mode 100644 fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/passwordreset.html b/client/enduser/src/main/resources/META-INF/resources/app/views/passwordreset.html index 693d3f7667a..47abae50a94 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/views/passwordreset.html +++ b/client/enduser/src/main/resources/META-INF/resources/app/views/passwordreset.html @@ -52,9 +52,9 @@ disabled="disabled">
- - + +
diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ deleted file mode 100644 index 912d2e1a367..00000000000 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/.LCKprotractor-conf.js~ +++ /dev/null @@ -1 +0,0 @@ -/home/matt3o/WORKINGDIR/SYNCOPE/Syncope_Source/syncope/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/protractor-conf.js \ No newline at end of file diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js index cdd9dae1369..52674c75206 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/create.js @@ -20,12 +20,15 @@ var abstract = require('./abstract.js'); describe('syncope enduser user create', function () { - it('should create user donizetti', function () { - console.log("create user test"); + console.log(""); + console.log("user create"); abstract.goHome(); - + abstract.waitSpinner(); + browser.wait(element(by.id('register')).isPresent()); element(by.id('register')).click(); + + browser.wait(element(by.id('user.username')).isPresent()); element(by.model('user.username')).sendKeys('donizetti'); element(by.model('user.password')).sendKeys('password123'); element(by.model('confirmPassword.value')).sendKeys('password123'); @@ -33,20 +36,33 @@ describe('syncope enduser user create', function () { element(by.cssContainingText('option', 'What\'s your mother\'s maiden name?')).click(); browser.wait(element(by.id('user.securityAnswer')).isPresent()); - element(by.model('user.securityAnswer')).sendKeys('Agata Ferlito'); - + element(by.model('user.securityAnswer')).sendKeys('Domenica Oliva Nava'); element.all(by.id('next')).first().click(); + + //groups + var group = element(by.model('dynamicForm.selectedGroups')); + var selectedGroup = group.element(by.css('.ui-select-search')); + group.click(); + //adds group root + selectedGroup.sendKeys('root'); + element.all(by.css('.ui-select-choices-row-inner span')).first().click(); + abstract.waitSpinner(); element.all(by.id('next')).first().click(); + //plainSchemas element.all(by.name('fullname')).first().sendKeys('Gaetano Donizetti'); element.all(by.name('userId')).first().sendKeys('donizetti@apache.org'); element.all(by.name('firstname')).first().sendKeys('Gaetano'); element.all(by.name('surname')).first().sendKeys('Donizetti'); - element.all(by.id('next')).first().click(); + + //derivedSchemas element.all(by.id('next')).first().click(); + + //virtualSchemas element.all(by.id('next')).first().click(); element.all(by.id('next')).first().click(); + element.all(by.id('save')).last().click(); }); }); \ No newline at end of file diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js index e30792600c4..189dc0d35ac 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/edituser.js @@ -16,11 +16,13 @@ * specific language governing permissions and limitations * under the License. */ + var abstract = require('./abstract.js'); describe('syncope enduser user edit', function () { it('should edit user', function () { - console.log("user edit test"); + console.log(""); + console.log("user edit"); abstract.goHome(); //login @@ -36,11 +38,12 @@ describe('syncope enduser user edit', function () { element(by.id('login-btn')).click(); //credential + browser.wait(element(by.id('user.username')).isPresent()); element(by.model('user.username')).clear(); element(by.model('user.username')).sendKeys('bellini'); element(by.model('user.password')).clear(); - element(by.model('user.password')).sendKeys('password'); - element(by.model('confirmPassword.value')).sendKeys('password'); + element(by.model('user.password')).sendKeys('Password123'); + element(by.model('confirmPassword.value')).sendKeys('Password123'); var secQuestion = element(by.model('user.securityQuestion')); var selectedSecQuestion = secQuestion.all(by.options ('securityQuestion.key as securityQuestion.content for securityQuestion in availableSecurityQuestions')) @@ -53,8 +56,8 @@ describe('syncope enduser user edit', function () { var group = element(by.model('dynamicForm.selectedGroups')); var selectedGroup = group.element(by.css('.ui-select-search')); group.click(); - //adds group root + //adds group root selectedGroup.sendKeys('root'); element.all(by.css('.ui-select-choices-row-inner span')).first().click(); abstract.waitSpinner(); @@ -75,12 +78,11 @@ describe('syncope enduser user edit', function () { selectedDate.sendKeys('2009-06-21'); element(by.css('[name="firstname"]')).clear(); element(by.css('[name="firstname"]')).sendKeys('Vincenzo'); - element(by.css('[name="surname"]')).clear(); - element(by.css('[name="surname"]')).sendKeys('Bellini'); element(by.css('[name="ctype"]')).clear(); element(by.css('[name="ctype"]')).sendKeys('bellinictype'); abstract.doNext(); + //derSchemas abstract.doNext(); //virSchemas @@ -88,6 +90,9 @@ describe('syncope enduser user edit', function () { //Resources abstract.doNext(); //Captcha + abstract.waitSpinner(); element.all(by.id('save')).last().click(); + abstract.waitSpinner(); }); }); + diff --git a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js index ed4211bf394..0ceaf024527 100644 --- a/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js +++ b/fit/enduser-reference/src/test/resources/org/apache/syncope/client/enduser/protractor/tests/passwordreset.js @@ -17,21 +17,38 @@ * under the License. */ - var abstract = require('./abstract.js'); -describe('syncope enduser user reset password', function () { - - it('should reset password for user bellini', function () { - console.log("password reset test"); +describe('syncope enduser user password reset ', function () { + it('should reset password for user donizetti', function () { + console.log(""); + console.log("user password reset"); abstract.goHome(); - browser.wait(element(by.id('passwordreset')).isPresent()); + + abstract.waitSpinner(); element(by.id('passwordreset')).click(); + abstract.waitSpinner(); - element(by.model('user.username')).sendKeys('donizetti'); + var user = element(by.model('user.username')); + user.click(); + user.sendKeys('donizetti'); + user.click(); element(by.model('user.username')).sendKeys(protractor.Key.TAB); - browser.wait(element(by.id('user.securityanswer')).isPresent()); - element(by.model('user.securityanswer')).sendKeys('Agata Ferlito'); + var secQuest = element(by.model('userSecurityQuestion')); + expect(secQuest.isEnabled()).toBe(false); + expect(element(by.model('userSecurityQuestion')).getAttribute('value')).toEqual('What\'s your mother\'s maiden name?'); + abstract.waitSpinner(); + + var secAns = element(by.model('user.securityAnswer')); + var EC = protractor.ExpectedConditions; + browser.wait(EC.presenceOf(secAns), 5000).then(function () { + secAns.click(); + secAns.sendKeys('Domenica Oliva Nava'); + }, function (error) { + expect(true).toBe(false); + }); + + element.all(by.id('resetpassword')).last().click(); }); }); \ No newline at end of file From a5f250571f15030c2bba42412989ae531ec5262f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 29 Sep 2016 15:58:56 +0200 Subject: [PATCH 024/106] Upgrading Swagger UI --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2b9f62e82e2..93572e8e812 100644 --- a/pom.xml +++ b/pom.xml @@ -402,7 +402,7 @@ under the License. ${project.build.directory}/activiti-modeler 1.5.10 - 2.2.2 + 2.2.5 2.2.4 1.11.4 From a3f65655578c14e7cfd6afee442566f7165784ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 29 Sep 2016 15:59:17 +0200 Subject: [PATCH 025/106] Cleaning up profiles --- fit/enduser-reference/pom.xml | 55 ++++++++++------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml index bf41ff63d9d..e9bfeb63070 100644 --- a/fit/enduser-reference/pom.xml +++ b/fit/enduser-reference/pom.xml @@ -138,7 +138,12 @@ under the License. com.github.klieber - phantomjs-maven-plugin + phantomjs-maven-plugin + + ${phantomjs.version} + false + ${skipTests} + @@ -146,10 +151,6 @@ under the License. - - ${phantomjs.version} - false - @@ -169,6 +170,7 @@ under the License. + ${skipTests} run @@ -180,6 +182,10 @@ under the License. com.github.eirslett frontend-maven-plugin + + ${skipTests} + ${skipTests} + install node and npm @@ -199,6 +205,9 @@ under the License. org.codehaus.mojo exec-maven-plugin + + ${skipTests} + Install Protractor @@ -239,7 +248,6 @@ under the License. exec - ${skipTests} ${enduser-test.dir}/nodejs/node/node ${enduser-test.dir}/nodejs/bin/protractor @@ -439,40 +447,7 @@ under the License. - - - com.github.klieber - phantomjs-maven-plugin - - true - - - - - org.apache.maven.plugins - maven-antrun-plugin - - true - - - - - com.github.eirslett - frontend-maven-plugin - - true - true - - - - - org.codehaus.mojo - exec-maven-plugin - - true - - - + org.codehaus.cargo cargo-maven2-plugin From 37d967032c1a85ec5530f85d6f3f448051c0eb37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 29 Sep 2016 15:59:37 +0200 Subject: [PATCH 026/106] [SYNCOPE-952] Realm management now working for enduser --- .../enduser/SyncopeEnduserApplication.java | 27 +++++-- ...esource.java => AnyTypeClassResource.java} | 8 +- ...TypeResource.java => AnyTypeResource.java} | 8 +- ...rce.java => ExternalResourceResource.java} | 8 +- ...eGroupResource.java => GroupResource.java} | 15 ++-- .../enduser/resources/RealmResource.java | 76 +++++++++++++++++++ .../app/js/controllers/UserController.js | 31 ++++---- .../resources/app/js/services/anyService.js | 6 +- .../resources/app/js/services/groupService.js | 2 +- .../resources/app/js/services/realmService.js | 10 +-- .../app/js/services/resourceService.js | 2 +- .../js/services/securityQuestionService.js | 2 +- .../app/js/services/userSelfService.js | 1 - .../resources/app/views/user-groups.html | 3 +- .../apache/syncope/core/logic/RealmLogic.java | 14 ++-- .../api/data/RealmDataBinder.java | 2 +- .../java/data/RealmDataBinderImpl.java | 21 ++--- .../pushpull/RealmPullResultHandlerImpl.java | 16 ++-- .../pushpull/RealmPushResultHandlerImpl.java | 8 +- 19 files changed, 167 insertions(+), 93 deletions(-) rename client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/{SyncopeAnyClassTypeResource.java => AnyTypeClassResource.java} (91%) rename client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/{SyncopeAnyTypeResource.java => AnyTypeResource.java} (92%) rename client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/{SyncopeResourceResource.java => ExternalResourceResource.java} (92%) rename client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/{SyncopeGroupResource.java => GroupResource.java} (89%) create mode 100644 client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java index 71de4db9316..f47ec8be237 100644 --- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java @@ -31,10 +31,11 @@ import org.apache.syncope.client.enduser.resources.LogoutResource; import org.apache.syncope.client.enduser.resources.SchemaResource; import org.apache.syncope.client.enduser.resources.SecurityQuestionResource; -import org.apache.syncope.client.enduser.resources.SyncopeAnyClassTypeResource; -import org.apache.syncope.client.enduser.resources.SyncopeAnyTypeResource; -import org.apache.syncope.client.enduser.resources.SyncopeGroupResource; -import org.apache.syncope.client.enduser.resources.SyncopeResourceResource; +import org.apache.syncope.client.enduser.resources.AnyTypeClassResource; +import org.apache.syncope.client.enduser.resources.AnyTypeResource; +import org.apache.syncope.client.enduser.resources.GroupResource; +import org.apache.syncope.client.enduser.resources.ExternalResourceResource; +import org.apache.syncope.client.enduser.resources.RealmResource; import org.apache.syncope.client.enduser.resources.UserSelfChangePassword; import org.apache.syncope.client.enduser.resources.UserSelfConfirmPasswordReset; import org.apache.syncope.client.enduser.resources.UserSelfCreateResource; @@ -245,7 +246,7 @@ public IResource getResource() { @Override public IResource getResource() { - return new SyncopeResourceResource(); + return new ExternalResourceResource(); } }); @@ -290,13 +291,23 @@ public IResource getResource() { } }); + mountResource("/api/realms", new ResourceReference("realms") { + + private static final long serialVersionUID = -128426276529456602L; + + @Override + public IResource getResource() { + return new RealmResource(); + } + }); + mountResource("/api/groups", new ResourceReference("groups") { private static final long serialVersionUID = -128426276529456602L; @Override public IResource getResource() { - return new SyncopeGroupResource(); + return new GroupResource(); } }); @@ -306,7 +317,7 @@ public IResource getResource() { @Override public IResource getResource() { - return new SyncopeAnyClassTypeResource(); + return new AnyTypeClassResource(); } }); @@ -316,7 +327,7 @@ public IResource getResource() { @Override public IResource getResource() { - return new SyncopeAnyTypeResource(); + return new AnyTypeResource(); } }); diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java similarity index 91% rename from client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java rename to client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java index bdb6f98cd55..6d230c19b27 100644 --- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyClassTypeResource.java +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeClassResource.java @@ -26,18 +26,14 @@ import org.apache.syncope.common.lib.to.AnyTypeClassTO; import org.apache.syncope.common.rest.api.service.AnyTypeClassService; import org.apache.wicket.request.resource.AbstractResource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -public class SyncopeAnyClassTypeResource extends AbstractBaseResource { +public class AnyTypeClassResource extends AbstractBaseResource { private static final long serialVersionUID = 7475706378304995200L; - private static final Logger LOG = LoggerFactory.getLogger(SyncopeAnyClassTypeResource.class); - private final AnyTypeClassService anyTypeClassService; - public SyncopeAnyClassTypeResource() { + public AnyTypeClassResource() { anyTypeClassService = SyncopeEnduserSession.get().getService(AnyTypeClassService.class); } diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java similarity index 92% rename from client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java rename to client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java index 9c9b1ad2581..5d58f3741c0 100644 --- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeAnyTypeResource.java +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/AnyTypeResource.java @@ -25,18 +25,14 @@ import org.apache.syncope.common.lib.to.AnyTypeTO; import org.apache.syncope.common.rest.api.service.AnyTypeService; import org.apache.wicket.request.resource.AbstractResource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -public class SyncopeAnyTypeResource extends AbstractBaseResource { +public class AnyTypeResource extends AbstractBaseResource { private static final long serialVersionUID = 7475706378304995200L; - private static final Logger LOG = LoggerFactory.getLogger(SyncopeAnyTypeResource.class); - private final AnyTypeService anyTypeService; - public SyncopeAnyTypeResource() { + public AnyTypeResource() { anyTypeService = SyncopeEnduserSession.get().getService(AnyTypeService.class); } diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java similarity index 92% rename from client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java rename to client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java index 8a6d0a95fe3..e779a942790 100644 --- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeResourceResource.java +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/ExternalResourceResource.java @@ -27,18 +27,14 @@ import org.apache.syncope.common.rest.api.service.ResourceService; import org.apache.wicket.request.resource.AbstractResource; import org.apache.wicket.request.resource.IResource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -public class SyncopeResourceResource extends AbstractBaseResource { +public class ExternalResourceResource extends AbstractBaseResource { private static final long serialVersionUID = 7475706378304995200L; - private static final Logger LOG = LoggerFactory.getLogger(SyncopeResourceResource.class); - private final ResourceService resourceService; - public SyncopeResourceResource() { + public ExternalResourceResource() { resourceService = SyncopeEnduserSession.get().getService(ResourceService.class); } diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java similarity index 89% rename from client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java rename to client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java index 7757532b5a1..365d7dfbddc 100644 --- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SyncopeGroupResource.java +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java @@ -29,23 +29,21 @@ import org.apache.syncope.common.rest.api.service.GroupService; import org.apache.wicket.request.resource.AbstractResource; -public class SyncopeGroupResource extends AbstractBaseResource { +public class GroupResource extends AbstractBaseResource { private static final long serialVersionUID = 7475706378304995200L; private final GroupService groupService; - public SyncopeGroupResource() { + public GroupResource() { groupService = SyncopeEnduserSession.get().getService(GroupService.class); } @Override protected ResourceResponse newResourceResponse(final Attributes attributes) { - LOG.debug("Search all available groups"); ResourceResponse response = new ResourceResponse(); - try { HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest(); @@ -55,10 +53,9 @@ protected ResourceResponse newResourceResponse(final Attributes attributes) { return response; } - String realm = java.net.URLDecoder.decode(attributes.getParameters().get("realm").toString( - SyncopeConstants.ROOT_REALM), "UTF-8"); - final List groupTOs = groupService.search(new AnyQuery.Builder().realm(realm).build()). - getResult(); + String realm = java.net.URLDecoder.decode(attributes.getParameters().get("realm"). + toString(SyncopeConstants.ROOT_REALM), "UTF-8"); + final List groupTOs = groupService.search(new AnyQuery.Builder().realm(realm).build()).getResult(); response.setWriteCallback(new AbstractResource.WriteCallback() { @@ -69,7 +66,7 @@ public void writeData(final Attributes attributes) throws IOException { }); response.setStatusCode(Response.Status.OK.getStatusCode()); } catch (Exception e) { - LOG.error("Error retrieving available grupss", e); + LOG.error("Error retrieving available groups", e); response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder() .append("ErrorMessage{{ ") .append(e.getMessage()) diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java new file mode 100644 index 00000000000..6d5049b834a --- /dev/null +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java @@ -0,0 +1,76 @@ +/* + * 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.enduser.resources; + +import java.io.IOException; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.Response; +import org.apache.syncope.client.enduser.SyncopeEnduserSession; +import org.apache.syncope.common.lib.to.RealmTO; +import org.apache.syncope.common.rest.api.service.RealmService; +import org.apache.wicket.request.resource.AbstractResource; + +public class RealmResource extends AbstractBaseResource { + + private static final long serialVersionUID = 7475706378304995200L; + + private final RealmService realmService; + + public RealmResource() { + realmService = SyncopeEnduserSession.get().getService(RealmService.class); + } + + @Override + protected ResourceResponse newResourceResponse(final Attributes attributes) { + LOG.debug("Search all available realms"); + + ResourceResponse response = new ResourceResponse(); + + try { + HttpServletRequest request = (HttpServletRequest) attributes.getRequest().getContainerRequest(); + if (!xsrfCheck(request)) { + LOG.error("XSRF TOKEN does not match"); + response.setError(Response.Status.BAD_REQUEST.getStatusCode(), "XSRF TOKEN does not match"); + return response; + } + + final List realmTOs = realmService.list(); + + response.setWriteCallback(new AbstractResource.WriteCallback() { + + @Override + public void writeData(final Attributes attributes) throws IOException { + attributes.getResponse().write(MAPPER.writeValueAsString(realmTOs)); + } + }); + response.setStatusCode(Response.Status.OK.getStatusCode()); + } catch (Exception e) { + LOG.error("Error retrieving available realms", e); + response.setError(Response.Status.BAD_REQUEST.getStatusCode(), new StringBuilder() + .append("ErrorMessage{{ ") + .append(e.getMessage()) + .append(" }}") + .toString()); + } + + return response; + } + +} diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js index e93e3a2ed19..1d33e3d0fdb 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js @@ -21,9 +21,9 @@ 'use strict'; -angular.module("self").controller("UserController", ['$scope', '$rootScope', '$location', '$compile', "$state", 'AuthService', - 'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 'SecurityQuestionService', 'GroupService', - 'AnyService', 'UserUtil', 'GenericUtil', "ValidationExecutor", +angular.module("self").controller("UserController", ['$scope', '$rootScope', '$location', '$compile', "$state", + 'AuthService', 'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 'SecurityQuestionService', + 'GroupService', 'AnyService', 'UserUtil', 'GenericUtil', "ValidationExecutor", function ($scope, $rootScope, $location, $compile, $state, AuthService, UserSelfService, SchemaService, RealmService, ResourceService, SecurityQuestionService, GroupService, AnyService, UserUtil, GenericUtil, ValidationExecutor) { @@ -106,7 +106,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l }; // add other values for (var j = 1; j < $scope.user.plainAttrs[plainSchemaKey].values.length; j++) { - $scope.dynamicForm.attributeTable[schemas.plainSchemas[i].key].fields.push(schemas.plainSchemas[i].key + "_" + j); + $scope.dynamicForm.attributeTable[schemas.plainSchemas[i].key].fields. + push(schemas.plainSchemas[i].key + "_" + j); } } } @@ -141,7 +142,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l }; // add other values for (var j = 1; j < $scope.user.virAttrs[virSchemaKey].values.length; j++) { - $scope.dynamicForm.virtualAttributeTable[schemas.virSchemas[i].key].fields.push(schemas.virSchemas[i].key + "_" + j); + $scope.dynamicForm.virtualAttributeTable[schemas.virSchemas[i].key].fields. + push(schemas.virSchemas[i].key + "_" + j); } } } @@ -166,11 +168,12 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l }; var initRealms = function () { - $scope.availableRealms = RealmService.getAvailableRealmsStub(); - }; - - var initUserRealm = function () { - $scope.user.realm = RealmService.getUserRealm(); + RealmService.getAvailableRealms().then(function (response) { + for (var i in response) { + $scope.availableRealms.push(response[i].fullPath); + } + $scope.availableRealms.sort(); + }); }; var initResources = function () { @@ -193,6 +196,10 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l }); }; + $scope.refreshGroups = function () { + initGroups(); + } + var initAuxClasses = function () { //fetching default user classes, that should remain in any case AnyService.getAnyType("USER").then(function (response) { @@ -330,7 +337,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l $scope.user = { username: '', password: '', - realm: '', + realm: '/', securityQuestion: undefined, securityAnswer: '', plainAttrs: {}, @@ -339,8 +346,6 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l resources: [], auxClasses: [] }; - // retrieve user realm or all available realms - initUserRealm(); // initialize auxiliary schemas in case of pre-existing classes for (var index in $scope.dynamicForm.selectedAuxClasses) { initUserSchemas($scope.dynamicForm.selectedAuxClasses[index]); diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js index a4240138f19..59f8ec3c9e1 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/anyService.js @@ -30,7 +30,8 @@ angular.module('self') .then(function (response) { return response.data; }, function (response) { - console.debug("Something went wrong during auxiliaryClasses retrieval, exit with status: ", response); + console.error("Something went wrong during auxiliaryClasses retrieval, exit with status: ", + response); return $q.reject(response.data || response.statusText); }); }; @@ -40,7 +41,8 @@ angular.module('self') .then(function (response) { return response.data; }, function (response) { - console.error("Something went wrong during anyType user API retrieval, exit with status: ", response); + console.error("Something went wrong during anyType user API retrieval, exit with status: ", + response); return $q.reject(response.data || response.statusText); }); }; diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js index 7b1f8d06ca8..1de1ef15458 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js @@ -26,7 +26,7 @@ angular.module('self') var groupService = {}; groupService.getGroups = function (realm) { - return $http.get("/syncope-enduser/api/groups?realm="+encodeURI(realm)) + return $http.get("/syncope-enduser/api/groups?realm=" + encodeURI(realm)) .then(function (response) { return response.data; }, function (response) { diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js index 3c030acf69f..a129df76d9e 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/realmService.js @@ -25,14 +25,9 @@ angular.module('self') var realmService = {}; - realmService.getAvailableRealmsStub = function () { - return ["/"]; - }; - realmService.getAvailableRealms = function () { - return $http.get("/syncope-enduser/api/realms") + return $http.get("/syncope-enduser/api/realms") .then(function (response) { - console.debug("realms response: ", response); return response.data; }, function (response) { console.error("Something went wrong during realms retrieval, exit with status: ", response); @@ -40,8 +35,5 @@ angular.module('self') }); }; - realmService.getUserRealm = function () { - return "/"; - }; return realmService; }]); diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js index 9ad2cc4ed0b..e5d2d2ab6ac 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/resourceService.js @@ -31,7 +31,7 @@ angular.module('self') .then(function (response) { return response.data; }, function (response) { - console.debug("Something went wrong during resources retrieval, exit with status: ", response); + console.error("Something went wrong during resources retrieval, exit with status: ", response); return $q.reject(response.data || response.statusText); }); }; diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js index 417468cd011..45fa80b8a8d 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/securityQuestionService.js @@ -35,7 +35,7 @@ angular.module('self') }; securityQuestionService.getSecurityQuestionByUser = function (username) { - return $http.get("/syncope-enduser/api/securityQuestions/byUser/"+username) + return $http.get("/syncope-enduser/api/securityQuestions/byUser/" + username) .then(function (response) { return response.data; }, function (response) { diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js index 09a8ac86311..9f9f444a1b9 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/userSelfService.js @@ -40,7 +40,6 @@ angular.module('login') headers: {'captcha': captcha} }) .then(function (response) { - console.debug("response save: ", response); var username = response; return username; }, function (response) { diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html b/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html index 7f28dd58be1..632da03cb29 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html +++ b/client/enduser/src/main/resources/META-INF/resources/app/views/user-groups.html @@ -19,8 +19,7 @@
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java index 6cc22fd41e0..e82e4956a54 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java @@ -48,6 +48,7 @@ import org.apache.syncope.core.provisioning.api.propagation.PropagationManager; import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter; import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor; +import org.apache.syncope.core.spring.security.AuthContextUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; @@ -70,7 +71,7 @@ public class RealmLogic extends AbstractTransactionalLogic { @Autowired private PropagationTaskExecutor taskExecutor; - @PreAuthorize("hasRole('" + StandardEntitlement.REALM_LIST + "')") + @PreAuthorize("isAuthenticated()") public List list(final String fullPath) { Realm realm = realmDAO.findByFullPath(fullPath); if (realm == null) { @@ -79,11 +80,12 @@ public List list(final String fullPath) { throw new NotFoundException(fullPath); } + final boolean admin = AuthContextUtils.getAuthorizations().keySet().contains(StandardEntitlement.REALM_LIST); return CollectionUtils.collect(realmDAO.findDescendants(realm), new Transformer() { @Override public RealmTO transform(final Realm input) { - return binder.getRealmTO(input); + return binder.getRealmTO(input, admin); } }, new ArrayList()); } @@ -105,7 +107,7 @@ public ProvisioningResult create(final String parentPath, final RealmTO PropagationReporter propagationReporter = taskExecutor.execute(tasks, false); ProvisioningResult result = new ProvisioningResult<>(); - result.setEntity(binder.getRealmTO(realm)); + result.setEntity(binder.getRealmTO(realm, true)); result.getPropagationStatuses().addAll(propagationReporter.getStatuses()); return result; @@ -127,7 +129,7 @@ public ProvisioningResult update(final RealmTO realmTO) { PropagationReporter propagationReporter = taskExecutor.execute(tasks, false); ProvisioningResult result = new ProvisioningResult<>(); - result.setEntity(binder.getRealmTO(realm)); + result.setEntity(binder.getRealmTO(realm, true)); result.getPropagationStatuses().addAll(propagationReporter.getStatuses()); return result; @@ -170,7 +172,7 @@ public ProvisioningResult delete(final String fullPath) { PropagationReporter propagationReporter = taskExecutor.execute(tasks, false); ProvisioningResult result = new ProvisioningResult<>(); - result.setEntity(binder.getRealmTO(realm)); + result.setEntity(binder.getRealmTO(realm, true)); result.getPropagationStatuses().addAll(propagationReporter.getStatuses()); realmDAO.delete(realm); @@ -196,7 +198,7 @@ protected RealmTO resolveReference(final Method method, final Object... args) if (fullPath != null) { try { - return binder.getRealmTO(realmDAO.findByFullPath(fullPath)); + return binder.getRealmTO(realmDAO.findByFullPath(fullPath), true); } catch (Throwable e) { LOG.debug("Unresolved reference", e); throw new UnresolvedReferenceException(e); diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java index 380cb307783..44e00fcbac3 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java @@ -28,6 +28,6 @@ public interface RealmDataBinder { PropagationByResource update(Realm realm, RealmTO realmTO); - RealmTO getRealmTO(Realm realm); + RealmTO getRealmTO(Realm realm, boolean admin); } diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java index 015612ea275..32678cc1d5a 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java @@ -210,23 +210,26 @@ public boolean evaluate(final ExternalResource resource) { } @Override - public RealmTO getRealmTO(final Realm realm) { + public RealmTO getRealmTO(final Realm realm, final boolean admin) { RealmTO realmTO = new RealmTO(); realmTO.setKey(realm.getKey()); realmTO.setName(realm.getName()); realmTO.setParent(realm.getParent() == null ? null : realm.getParent().getKey()); realmTO.setFullPath(realm.getFullPath()); - realmTO.setAccountPolicy(realm.getAccountPolicy() == null ? null : realm.getAccountPolicy().getKey()); - realmTO.setPasswordPolicy(realm.getPasswordPolicy() == null ? null : realm.getPasswordPolicy().getKey()); - realmTO.getActionsClassNames().addAll(realm.getActionsClassNames()); - for (AnyTemplate template : realm.getTemplates()) { - realmTO.getTemplates().put(template.getAnyType().getKey(), template.get()); - } + if (admin) { + realmTO.setAccountPolicy(realm.getAccountPolicy() == null ? null : realm.getAccountPolicy().getKey()); + realmTO.setPasswordPolicy(realm.getPasswordPolicy() == null ? null : realm.getPasswordPolicy().getKey()); + realmTO.getActionsClassNames().addAll(realm.getActionsClassNames()); + + for (AnyTemplate template : realm.getTemplates()) { + realmTO.getTemplates().put(template.getAnyType().getKey(), template.get()); + } - for (ExternalResource resource : realm.getResources()) { - realmTO.getResources().add(resource.getKey()); + for (ExternalResource resource : realm.getResources()) { + realmTO.getResources().add(resource.getKey()); + } } return realmTO; diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java index d2d9dc52346..db285a856c7 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPullResultHandlerImpl.java @@ -221,9 +221,9 @@ private void create( propByRes.add(ResourceOperation.CREATE, resource); } List tasks = propagationManager.createTasks(realm, propByRes, null); - PropagationReporter propagationReporter = taskExecutor.execute(tasks, false); + taskExecutor.execute(tasks, false); - RealmTO actual = binder.getRealmTO(realm); + RealmTO actual = binder.getRealmTO(realm, true); result.setKey(actual.getKey()); result.setName(profile.getTask().getDestinatioRealm().getFullPath() + "/" + actual.getName()); @@ -265,7 +265,7 @@ private ProvisioningReport update(final SyncDelta delta, final Realm realm, fina LOG.debug("About to update {}", realm); - RealmTO before = binder.getRealmTO(realm); + RealmTO before = binder.getRealmTO(realm, true); ProvisioningReport result = new ProvisioningReport(); result.setOperation(ResourceOperation.UPDATE); @@ -327,7 +327,7 @@ private ProvisioningReport deprovision(final SyncDelta delta, final Realm realm, result.setStatus(ProvisioningReport.Status.SUCCESS); result.setKey(realm.getKey()); - RealmTO before = binder.getRealmTO(realm); + RealmTO before = binder.getRealmTO(realm, true); Object output; Result resultStatus; @@ -351,9 +351,9 @@ private ProvisioningReport deprovision(final SyncDelta delta, final Realm realm, if (unlink) { realm.getResources().remove(profile.getTask().getResource()); - output = binder.getRealmTO(realmDAO.save(realm)); + output = binder.getRealmTO(realmDAO.save(realm), true); } else { - output = binder.getRealmTO(realm); + output = binder.getRealmTO(realm, true); } for (PullActions action : profile.getActions()) { @@ -403,7 +403,7 @@ private ProvisioningReport link(final SyncDelta delta, final Realm realm, final result.setStatus(ProvisioningReport.Status.SUCCESS); result.setKey(realm.getKey()); - RealmTO before = binder.getRealmTO(realm); + RealmTO before = binder.getRealmTO(realm, true); Object output; Result resultStatus; @@ -476,7 +476,7 @@ private ProvisioningReport delete(final SyncDelta delta, final Realm realm) ProvisioningReport result = new ProvisioningReport(); try { - RealmTO before = binder.getRealmTO(realm); + RealmTO before = binder.getRealmTO(realm, true); result.setKey(realm.getKey()); result.setName(realm.getFullPath()); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java index 2425ac4063d..f0b44384aec 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/RealmPushResultHandlerImpl.java @@ -107,7 +107,7 @@ private void provision(final Realm realm) { } private void link(final Realm realm, final Boolean unlink) { - RealmTO realmTO = binder.getRealmTO(realm); + RealmTO realmTO = binder.getRealmTO(realm, true); if (unlink) { realmTO.getResources().remove(profile.getTask().getResource().getKey()); } else { @@ -118,14 +118,14 @@ private void link(final Realm realm, final Boolean unlink) { } private void unassign(final Realm realm) { - RealmTO realmTO = binder.getRealmTO(realm); + RealmTO realmTO = binder.getRealmTO(realm, true); realmTO.getResources().remove(profile.getTask().getResource().getKey()); deprovision(update(realmTO)); } private void assign(final Realm realm) { - RealmTO realmTO = binder.getRealmTO(realm); + RealmTO realmTO = binder.getRealmTO(realm, true); realmTO.getResources().add(profile.getTask().getResource().getKey()); provision(update(realmTO)); @@ -222,7 +222,7 @@ private void doHandle(final Realm realm) throws JobExecutionException { if (!profile.getTask().isPerformUpdate()) { LOG.debug("PushTask not configured for update"); } else { - update(binder.getRealmTO(realm)); + update(binder.getRealmTO(realm, true)); } break; From 580defe738226b2a6782bc38b7d9dad8084ef034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 29 Sep 2016 17:25:10 +0200 Subject: [PATCH 027/106] [SYNCOPE-953] Fix provided - besides listing, now also searching for Groups does not require special entitlements any more, removing StandardEntitlements.GROUP_SEARCH --- .../client/console/commons/ITabComponent.java | 9 +++++++-- .../console/panels/GroupDirectoryPanel.java | 2 +- .../syncope/client/console/panels/Realm.java | 18 ++++++++++-------- .../client/console/wizards/any/Groups.java | 8 +++----- .../client/console/wizards/any/Ownership.java | 4 +--- .../enduser/resources/GroupResource.java | 5 ++++- .../app/js/controllers/UserController.js | 6 ++++++ .../common/lib/types/StandardEntitlement.java | 2 -- .../apache/syncope/core/logic/GroupLogic.java | 8 ++++---- 9 files changed, 36 insertions(+), 26 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/ITabComponent.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/ITabComponent.java index 91043b5745f..af09113577f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/commons/ITabComponent.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/ITabComponent.java @@ -16,6 +16,7 @@ package org.apache.syncope.client.console.commons; import java.util.UUID; +import org.apache.commons.lang3.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.authroles.authorization.strategies.role.Roles; import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions; @@ -34,7 +35,7 @@ public abstract class ITabComponent extends Component implements ITab { private final IModel title; /** - * Constructor + * Constructor. * * @param title IModel used to represent the title of the tab. Must contain a string * @param roles authorized roles @@ -45,7 +46,11 @@ public ITabComponent(final IModel title, final String roles) { final ActionPermissions permissions = new ActionPermissions(); setMetaData(MetaDataRoleAuthorizationStrategy.ACTION_PERMISSIONS, permissions); - permissions.authorize(RENDER, new Roles(roles)); + if (StringUtils.isBlank(roles)) { + permissions.authorizeAll(RENDER); + } else { + permissions.authorize(RENDER, new Roles(roles)); + } } /** diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java index 67e806dd9b0..118c4157542 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java @@ -395,7 +395,7 @@ public void onClick(final AjaxRequestTarget target, final Serializable ignore) { target.add(container); } } - }, ActionType.RELOAD, StandardEntitlement.GROUP_SEARCH).build(componentId); + }, ActionType.RELOAD).build(componentId); } }); diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java index d2a869c0b20..857bff0157a 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java @@ -50,6 +50,7 @@ import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.to.RealmTO; +import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.PropagationTaskExecStatus; import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.wicket.Component; @@ -85,8 +86,8 @@ public Realm(final String id, final RealmTO realmTO, final PageReference pageRef setPageRef(pageRef); - AjaxBootstrapTabbedPanel tabbedPanel - = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList(pageRef)); + AjaxBootstrapTabbedPanel tabbedPanel = + new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList(pageRef)); tabbedPanel.setSelectedTab(selectedIndex); addInnerObject(tabbedPanel); this.wizardBuilder = new RealmWizardBuilder(pageRef); @@ -157,14 +158,15 @@ public void onClick(final AjaxRequestTarget target, final RealmTO modelObject) { } }); - final Triple> formLayoutInfo - = FormLayoutInfoUtils.fetch(anyTypeTOs); + final Triple> formLayoutInfo = + FormLayoutInfoUtils.fetch(anyTypeTOs); Collections.sort(anyTypeTOs, new AnyTypeComparator()); for (final AnyTypeTO anyTypeTO : anyTypeTOs) { tabs.add(new ITabComponent( new Model<>(anyTypeTO.getKey()), - String.format("%s_SEARCH", anyTypeTO.getKey())) { + AnyTypeKind.GROUP.name().equals(anyTypeTO.getKey()) + ? null : String.format("%s_SEARCH", anyTypeTO.getKey())) { private static final long serialVersionUID = 1169585538404171118L; @@ -202,8 +204,8 @@ protected Panel customResultBody(final String panelId, final RealmTO item, final propagations.add(syncope); propagations.addAll(((ProvisioningResult) result).getPropagationStatuses()); - ListViewPanel.Builder builder - = new ListViewPanel.Builder(PropagationStatus.class, pageRef) { + ListViewPanel.Builder builder = + new ListViewPanel.Builder(PropagationStatus.class, pageRef) { private static final long serialVersionUID = -6809736686861678498L; @@ -218,7 +220,7 @@ protected Component getValueComponent(final String key, final PropagationStatus afterObj.getAttrMap().get(ConnIdSpecialAttributeName.NAME).getValues()) ? StringUtils.EMPTY : afterObj.getAttrMap().get(ConnIdSpecialAttributeName.NAME).getValues(). - iterator().next(); + iterator().next(); return new Label("field", remoteId); } else if ("status".equalsIgnoreCase(key)) { diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java index 8181baf3f4f..e8aba25985d 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java @@ -42,10 +42,8 @@ import org.apache.wicket.model.util.ListModel; import org.apache.wicket.util.lang.Args; import org.apache.syncope.common.lib.to.GroupableRelatableTO; -import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions; import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy; -import org.apache.wicket.authroles.authorization.strategies.role.Roles; import org.apache.wicket.extensions.wizard.WizardModel.ICondition; public class Groups extends WizardStep implements ICondition { @@ -66,7 +64,7 @@ public Groups(final T anyTO, final boolean templateMode) { // ----------------------------------------------------------------- final ActionPermissions permissions = new ActionPermissions(); setMetaData(MetaDataRoleAuthorizationStrategy.ACTION_PERMISSIONS, permissions); - permissions.authorize(RENDER, new Roles(StandardEntitlement.GROUP_SEARCH)); + permissions.authorizeAll(RENDER); // ----------------------------------------------------------------- setOutputMarkupId(true); @@ -114,7 +112,7 @@ public List execute(final String filter) { groupRestClient.search( realm, SyncopeClient.getGroupSearchConditionBuilder(). - isAssignable().and().is("name").equalTo(filter).query(), + isAssignable().and().is("name").equalTo(filter).query(), -1, -1, new SortParam<>("name", true), null), @@ -160,6 +158,6 @@ public String transform(final GroupTO input) { public boolean evaluate() { return CollectionUtils.isNotEmpty(allGroups) && SyncopeConsoleApplication.get().getSecuritySettings().getAuthorizationStrategy(). - isActionAuthorized(this, RENDER); + isActionAuthorized(this, RENDER); } } diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java index eb5b3188c5f..9fe6a0f1b3a 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java @@ -106,9 +106,7 @@ public Ownership(final GroupWrapper groupWrapper, final PageReference pageRef) { // ----------------------------------------------------------------- final ActionPermissions permissions = new ActionPermissions(); setMetaData(MetaDataRoleAuthorizationStrategy.ACTION_PERMISSIONS, permissions); - permissions.authorize(RENDER, new Roles(new StringBuilder(). - append(StandardEntitlement.USER_SEARCH).append(","). - append(StandardEntitlement.GROUP_SEARCH).toString())); + permissions.authorize(RENDER, new Roles(StandardEntitlement.USER_SEARCH)); // ----------------------------------------------------------------- setTitleModel(new ResourceModel("group.ownership")); diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java index 365d7dfbddc..00998599fe3 100644 --- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java +++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/GroupResource.java @@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Response; import org.apache.syncope.client.enduser.SyncopeEnduserSession; +import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.GroupTO; import org.apache.syncope.common.rest.api.beans.AnyQuery; @@ -55,7 +56,9 @@ protected ResourceResponse newResourceResponse(final Attributes attributes) { String realm = java.net.URLDecoder.decode(attributes.getParameters().get("realm"). toString(SyncopeConstants.ROOT_REALM), "UTF-8"); - final List groupTOs = groupService.search(new AnyQuery.Builder().realm(realm).build()).getResult(); + final List groupTOs = groupService.search(new AnyQuery.Builder().realm(realm). + fiql(SyncopeClient.getGroupSearchConditionBuilder().isAssignable().query()). + build()).getResult(); response.setWriteCallback(new AbstractResource.WriteCallback() { diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js index 1d33e3d0fdb..c6b0b4e67db 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js @@ -181,6 +181,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l for (var i in response) { $scope.dynamicForm.resources.push(response[i].key); } + $scope.dynamicForm.resources.sort(); }); }; @@ -191,6 +192,11 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l for (var i in response) { $scope.dynamicForm.groups.push({"rightKey": response[i].key, "groupName": response[i].name}); } + $scope.dynamicForm.groups.sort(function (a, b) { + var x = a.groupName; + var y = b.groupName; + return x < y ? -1 : x > y ? 1 : 0; + }); }, function (e) { $scope.showError("An error occur during retrieving groups " + e, $scope.notification) }); diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java index ecaa25faa00..74c59b7e1b1 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java @@ -96,8 +96,6 @@ public final class StandardEntitlement { public static final String USER_DELETE = "USER_DELETE"; - public static final String GROUP_SEARCH = "GROUP_SEARCH"; - public static final String GROUP_CREATE = "GROUP_CREATE"; public static final String GROUP_READ = "GROUP_READ"; diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java index bd07a22fc72..157a7d63b14 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java @@ -189,23 +189,23 @@ public GroupTO transform(final Group input) { }, new ArrayList()); } - @PreAuthorize("hasRole('" + StandardEntitlement.GROUP_SEARCH + "')") + @PreAuthorize("isAuthenticated()") @Transactional(readOnly = true) @Override public int searchCount(final SearchCond searchCondition, final String realm) { return searchDAO.count( - getEffectiveRealms(AuthContextUtils.getAuthorizations().get(StandardEntitlement.GROUP_SEARCH), realm), + getEffectiveRealms(SyncopeConstants.FULL_ADMIN_REALMS, realm), searchCondition, AnyTypeKind.GROUP); } - @PreAuthorize("hasRole('" + StandardEntitlement.GROUP_SEARCH + "')") + @PreAuthorize("isAuthenticated()") @Transactional(readOnly = true) @Override public List search(final SearchCond searchCondition, final int page, final int size, final List orderBy, final String realm, final boolean details) { List matchingGroups = searchDAO.search( - getEffectiveRealms(AuthContextUtils.getAuthorizations().get(StandardEntitlement.GROUP_SEARCH), realm), + getEffectiveRealms(SyncopeConstants.FULL_ADMIN_REALMS, realm), searchCondition, page, size, orderBy, AnyTypeKind.GROUP); return CollectionUtils.collect(matchingGroups, new Transformer() { From 9d861564d404c15d64f9836f01813b5b8e4fe6fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 30 Sep 2016 10:52:19 +0200 Subject: [PATCH 028/106] [SYNCOPE-940] Enable link to Realms only if required entitlements are owned --- .../client/console/widgets/NumberWidget.java | 122 ++++++++++-------- 1 file changed, 69 insertions(+), 53 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java index 386cc8980cf..fe5ef293299 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.List; +import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.commons.AnyTypeComparator; import org.apache.syncope.common.lib.to.AnyTypeTO; import org.apache.syncope.client.console.rest.AnyTypeRestClient; @@ -31,6 +32,8 @@ import org.apache.syncope.client.console.pages.Realms; import org.apache.syncope.client.console.pages.Roles; import org.apache.syncope.client.console.topology.Topology; +import org.apache.syncope.common.lib.types.StandardEntitlement; +import org.apache.wicket.request.component.IRequestablePage; import org.apache.wicket.request.mapper.parameter.PageParameters; public class NumberWidget extends BaseWidget { @@ -48,65 +51,78 @@ public NumberWidget(final String id, final String bg, final int number, final St WebMarkupContainer box = new WebMarkupContainer("box"); box.add(new AttributeAppender("class", " " + bg)); - box.add(new AjaxEventBehavior("onmousedown") { + + boolean isAuthorized = true; + final PageParameters pageParameters = new PageParameters(); + final Class responsePage; + List anyTypeTOs = new AnyTypeRestClient().list(); + switch (id) { + case "totalUsers": + pageParameters.add("selectedIndex", 1); + responsePage = Realms.class; + isAuthorized = SyncopeConsoleSession.get().owns(StandardEntitlement.USER_SEARCH); + break; + + case "totalGroups": + pageParameters.add("selectedIndex", 2); + responsePage = Realms.class; + break; + + case "totalAny1OrRoles": + if (icon.equals("ion ion-gear-a")) { + Collections.sort(anyTypeTOs, new AnyTypeComparator()); + Integer selectedIndex = null; + for (int i = 0; i < anyTypeTOs.size() && selectedIndex == null; i++) { + if (anyTypeTOs.get(i).getKey().equals(label)) { + selectedIndex = i + 1; + pageParameters.add("selectedIndex", selectedIndex); + } + } + responsePage = Realms.class; + isAuthorized = SyncopeConsoleSession.get().owns(label + "_SEARCH"); + } else { + responsePage = Roles.class; + isAuthorized = SyncopeConsoleSession.get().owns(StandardEntitlement.ROLE_LIST); + } + break; + + case "totalAny2OrResources": + if (icon.equals("ion ion-gear-a")) { + Collections.sort(anyTypeTOs, new AnyTypeComparator()); + Integer selectedIndex = null; + for (int i = 0; i < anyTypeTOs.size() && selectedIndex == null; i++) { + if (anyTypeTOs.get(i).getKey().equals(label)) { + selectedIndex = i + 1; + pageParameters.add("selectedIndex", selectedIndex); + } + } + responsePage = Realms.class; + isAuthorized = SyncopeConsoleSession.get().owns(label + "_SEARCH"); + } else { + responsePage = Topology.class; + isAuthorized = SyncopeConsoleSession.get().owns(StandardEntitlement.CONNECTOR_LIST) + && SyncopeConsoleSession.get().owns(StandardEntitlement.RESOURCE_LIST); + } + break; + + default: + pageParameters.add("selectedIndex", 0); + responsePage = Realms.class; + } + + AjaxEventBehavior clickToRealms = new AjaxEventBehavior("onmousedown") { private static final long serialVersionUID = -7133385027739964990L; @Override protected void onEvent(final AjaxRequestTarget target) { - List anyTypeTOs = new AnyTypeRestClient().list(); - PageParameters pageParameters = new PageParameters(); - switch (id) { - case "totalUsers": - pageParameters.add("selectedIndex", 1); - setResponsePage(Realms.class, pageParameters); - break; - - case "totalGroups": - pageParameters.add("selectedIndex", 2); - setResponsePage(Realms.class, pageParameters); - break; - - case "totalAny1OrRoles": - if (icon.equals("ion ion-gear-a")) { - Collections.sort(anyTypeTOs, new AnyTypeComparator()); - int selectedIndex = 1; - for (final AnyTypeTO anyTypeTO : anyTypeTOs) { - if (anyTypeTO.getKey().equals(label)) { - pageParameters.add("selectedIndex", selectedIndex); - break; - } - selectedIndex++; - } - setResponsePage(Realms.class, pageParameters); - } else { - setResponsePage(Roles.class); - } - break; - - case "totalAny2OrResources": - if (icon.equals("ion ion-gear-a")) { - Collections.sort(anyTypeTOs, new AnyTypeComparator()); - int selectedIndex = 1; - for (final AnyTypeTO anyTypeTO : anyTypeTOs) { - if (anyTypeTO.getKey().equals(label)) { - pageParameters.add("selectedIndex", selectedIndex); - break; - } - selectedIndex++; - } - setResponsePage(Realms.class, pageParameters); - } else { - setResponsePage(Topology.class); - } - break; - - default: - pageParameters.add("selectedIndex", 0); - setResponsePage(Realms.class, pageParameters); - } + setResponsePage(responsePage, pageParameters); } - }); + }; + if (isAuthorized) { + box.add(clickToRealms); + } + add(box); numberLabel = new Label("number", number); From adb567116e9748fb36a236c4c7cad4c05a64ca95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 30 Sep 2016 17:27:54 +0200 Subject: [PATCH 029/106] [SYNCOPE-946] Combining jQuery and AdminLTE to provide the new EncryptedFieldPanel --- .../console/rest/AbstractAnyRestClient.java | 3 +- .../markup/html/form/EncryptedFieldPanel.java | 39 +++++++++++ .../console/wizards/any/PlainAttrs.java | 17 +++-- .../markup/html/form/AjaxTextFieldPanel.html | 25 +++----- .../markup/html/form/EncryptedFieldPanel.html | 64 +++++++++++++++++++ 5 files changed, 127 insertions(+), 21 deletions(-) create mode 100644 client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java create mode 100644 client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.html diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java index b2870292517..9d7d1d783f9 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java @@ -34,7 +34,6 @@ import org.apache.syncope.common.lib.types.ResourceAssociationAction; import org.apache.syncope.common.lib.types.ResourceDeassociationAction; import org.apache.syncope.common.rest.api.service.AnyService; -import org.apache.syncope.common.rest.api.service.UserService; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; public abstract class AbstractAnyRestClient extends BaseRestClient { @@ -63,7 +62,7 @@ public ProvisioningResult update(final String etag, final P patch) { result = getService(etag, getAnyServiceClass()).update(patch). readEntity(new GenericType>() { }); - resetClient(UserService.class); + resetClient(getAnyServiceClass()); } return result; } diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java new file mode 100644 index 00000000000..10befa013e4 --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java @@ -0,0 +1,39 @@ +/* + * 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.wicket.markup.html.form; + +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.ResourceModel; + +public class EncryptedFieldPanel extends FieldPanel implements Cloneable { + + public EncryptedFieldPanel(final String id, final String name, final IModel model) { + super(id, name, model); + + field = new TextField("encryptedField", model) { + + @Override + protected String[] getInputTypes() { + return new String[] { "password" }; + } + }; + add(field.setLabel(new ResourceModel(name, name)).setRequired(false).setOutputMarkupId(true)); + } +} diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java index 96d92730b7f..b0429efe909 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java @@ -33,6 +33,7 @@ import org.apache.syncope.client.console.wicket.markup.html.form.BinaryFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.DateTextFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.EncryptedFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel; import org.apache.syncope.client.console.wizards.AjaxWizard; @@ -266,8 +267,8 @@ public String getObject( break; case Long: - panel = new AjaxSpinnerFieldPanel.Builder() - .build("panel", schemaTO.getKey(), Long.class, new Model()); + panel = new AjaxSpinnerFieldPanel.Builder(). + build("panel", schemaTO.getKey(), Long.class, new Model()); if (required) { panel.addRequiredLabel(); @@ -275,8 +276,8 @@ public String getObject( break; case Double: - panel = new AjaxSpinnerFieldPanel.Builder().step(0.1) - .build("panel", schemaTO.getKey(), Double.class, new Model()); + panel = new AjaxSpinnerFieldPanel.Builder().step(0.1). + build("panel", schemaTO.getKey(), Double.class, new Model()); if (required) { panel.addRequiredLabel(); @@ -291,6 +292,14 @@ public String getObject( } break; + case Encrypted: + panel = new EncryptedFieldPanel("panel", schemaTO.getKey(), new Model()); + + if (required) { + panel.addRequiredLabel(); + } + break; + default: panel = new AjaxTextFieldPanel("panel", schemaTO.getKey(), new Model(), false); diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html index 0b29bbaa7bb..2c1b7bbcbf9 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html @@ -17,19 +17,14 @@ under the License. --> - - Ajaxt text field panel - - - - - - - - -
- -
-
- + + + + + + +
+ +
+
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.html new file mode 100644 index 00000000000..6a6117faf93 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.html @@ -0,0 +1,64 @@ + + + + + + + +
+ + + + + + + +
+
+ From 459cb2e4e13bf94c24b61644b86060b8c9490b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 30 Sep 2016 17:32:30 +0200 Subject: [PATCH 030/106] Upgrading greenmail, removing jcommander which seems unused --- pom.xml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 93572e8e812..7bb6e957434 100644 --- a/pom.xml +++ b/pom.xml @@ -1296,12 +1296,7 @@ under the License. FileSaver.js ${fileSaver.version} - - com.beust - jcommander - 1.48 - - + org.codehaus.izpack izpack-compiler @@ -1357,7 +1352,7 @@ under the License. com.icegreen greenmail - 1.5.1 + 1.5.2 test From 77407a43ad1af88c4d39aa4ef6b4b3ecfb7c4adf Mon Sep 17 00:00:00 2001 From: Matteo Di Carlo Date: Mon, 3 Oct 2016 09:16:33 +0200 Subject: [PATCH 031/106] [SYNCOPE-942] fixes bug in changing security answer in enduser --- .../app/js/controllers/UserController.js | 16 +++++++++------- .../resources/app/js/services/groupService.js | 2 -- .../resources/app/js/services/schemaService.js | 4 ++-- .../app/views/dynamicPlainAttributes.html | 3 ++- .../resources/app/views/user-credentials.html | 2 +- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js index c6b0b4e67db..5e38b82f2bd 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js @@ -37,7 +37,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l $scope.availableRealms = []; $scope.availableSecurityQuestions = []; - $scope.initialSecurityQuestion = undefined; + $scope.initialSecurityQuestion = ''; $scope.captchaInput = { value: "" }; @@ -198,7 +198,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l return x < y ? -1 : x > y ? 1 : 0; }); }, function (e) { - $scope.showError("An error occur during retrieving groups " + e, $scope.notification) + $scope.showError("An error occur during retrieving groups " + e, $scope.notification); }); }; @@ -243,9 +243,11 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l UserSelfService.read().then(function (response) { $scope.user = UserUtil.getUnwrappedUser(response); $scope.user.password = undefined; + $scope.initialSecurityQuestion = $scope.user.securityQuestion; // initialize already assigned resources $scope.dynamicForm.selectedResources = $scope.user.resources; + // initialize already assigned groups -- keeping the same structure of groups for (var index in $scope.user.memberships) { $scope.dynamicForm.selectedGroups.push( @@ -296,9 +298,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l //removing derived schemas for (var i = 0; i < $scope.dynamicForm.derSchemas.length; i++) { - if ((anyTypeClass && $scope.dynamicForm.derSchemas[i].anyTypeClass == anyTypeClass) + if ((anyTypeClass && $scope.dynamicForm.derSchemas[i].anyTypeClass === anyTypeClass) || (group && $scope.dynamicForm.derSchemas[i].key.includes(group + '#'))) { - //cleaning both form and user model delete $scope.user.derAttrs[$scope.dynamicForm.derSchemas[i].key]; $scope.dynamicForm.derSchemas.splice(i, 1); @@ -307,9 +308,8 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l } //removing virtual schemas for (var i = 0; i < $scope.dynamicForm.virSchemas.length; i++) { - if ((anyTypeClass && $scope.dynamicForm.virSchemas[i].anyTypeClass == anyTypeClass) + if ((anyTypeClass && $scope.dynamicForm.virSchemas[i].anyTypeClass === anyTypeClass) || (group && $scope.dynamicForm.virSchemas[i].key.includes(group + '#'))) { - //cleaning both form and user model delete $scope.user.virAttrs[$scope.dynamicForm.virSchemas[i].key]; $scope.dynamicForm.virSchemas.splice(i, 1); @@ -344,7 +344,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l username: '', password: '', realm: '/', - securityQuestion: undefined, + securityQuestion: '', securityAnswer: '', plainAttrs: {}, derAttrs: {}, @@ -410,6 +410,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l }); } }; + $scope.retrieveSecurityQuestion = function (user) { if ($rootScope.pwdResetRequiringSecurityQuestions) { if (user && user.username && user.username.length) { @@ -431,6 +432,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l } } }; + $scope.resetPassword = function (user) { if (user && user.username) { $scope.retrieveSecurityQuestion(user); diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js index 1de1ef15458..59d0e7fadb5 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/groupService.js @@ -22,9 +22,7 @@ angular.module('self') .factory('GroupService', ['$resource', '$q', '$http', function ($group, $q, $http) { - var groupService = {}; - groupService.getGroups = function (realm) { return $http.get("/syncope-enduser/api/groups?realm=" + encodeURI(realm)) .then(function (response) { diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js index 2d86dac88be..dd5ff3a6a9e 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js +++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js @@ -26,9 +26,9 @@ angular.module('self') var schemaService = {}; schemaService.getUserSchemas = function (anyTypeClass) { - var param = anyTypeClass ? "?anyTypeClass=" + encodeURI(anyTypeClass) : ""; + var classParam = anyTypeClass ? "?anyTypeClass=" + encodeURI(anyTypeClass) : ""; - return $http.get("/syncope-enduser/api/schemas" + param) + return $http.get("/syncope-enduser/api/schemas" + classParam) .then(function (response) { return response.data; }, function (response) { diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttributes.html b/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttributes.html index 8a21985b1d6..9932f8bfa4e 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttributes.html +++ b/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttributes.html @@ -16,18 +16,19 @@ specific language governing permissions and limitations under the License. --> -
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/user-resources.html b/client/enduser/src/main/resources/META-INF/resources/app/views/user-resources.html index 0c2b2db8767..9d27a61fdaf 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/views/user-resources.html +++ b/client/enduser/src/main/resources/META-INF/resources/app/views/user-resources.html @@ -20,7 +20,6 @@
- From 624674d601d6ae9daee2a1f3ba80059d53638294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 13 Oct 2016 16:47:22 +0200 Subject: [PATCH 060/106] Upgrading the frontend plugin --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4aa3709be60..cd7b9ec2a80 100644 --- a/pom.xml +++ b/pom.xml @@ -1632,7 +1632,7 @@ under the License. com.github.eirslett frontend-maven-plugin - 1.0 + 1.1 org.codehaus.mojo From 02c8233de2c52fce543e372b0f4c03150a1f6b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 14 Oct 2016 15:03:39 +0200 Subject: [PATCH 061/106] Upgrading Jackson --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cd7b9ec2a80..81b8bf70a1b 100644 --- a/pom.xml +++ b/pom.xml @@ -360,7 +360,7 @@ under the License. 2.17.3 - 2.8.3 + 2.8.4 4.3.3.RELEASE 4.1.3.RELEASE From 3927f2c9626c1c598df759c5c854644c019c9124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Mon, 17 Oct 2016 15:11:19 +0200 Subject: [PATCH 062/106] Upgrading Commons-Lang --- .../org/apache/syncope/client/console/widgets/LoadWidget.java | 3 ++- .../src/test/java/org/apache/syncope/fit/core/UserITCase.java | 2 +- pom.xml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/LoadWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/LoadWidget.java index 835fd58b8f7..5a42f24fdfb 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/LoadWidget.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/LoadWidget.java @@ -48,7 +48,8 @@ private Line build(final SystemInfo systeminfo) { List memValues = new ArrayList<>(); for (SystemInfo.LoadInstant instant : systeminfo.getLoad()) { - labels.add(DateFormatUtils.ISO_DATETIME_FORMAT.format(systeminfo.getStartTime() + instant.getUptime())); + labels.add(DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT. + format(systeminfo.getStartTime() + instant.getUptime())); cpuValues.add(instant.getSystemLoadAverage() * 1000); memValues.add(instant.getTotalMemory()); diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java index f5f73a590b0..456c7285c27 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java @@ -88,7 +88,7 @@ public class UserITCase extends AbstractITCase { - private static final FastDateFormat DATE_FORMAT = DateFormatUtils.ISO_DATE_FORMAT; + private static final FastDateFormat DATE_FORMAT = DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT; private boolean getBooleanAttribute(final ConnObjectTO connObjectTO, final String attrName) { return Boolean.parseBoolean(connObjectTO.getAttrMap().get(attrName).getValues().get(0)); diff --git a/pom.xml b/pom.xml index 81b8bf70a1b..c27550ca6b2 100644 --- a/pom.xml +++ b/pom.xml @@ -387,7 +387,7 @@ under the License. 1.4 1.10 3.0 - 3.4 + 3.5 4.1 1.1.3 From c81bc6ca10cfa35efcf93abc9a07d78a73703952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 25 Aug 2016 15:57:02 +0200 Subject: [PATCH 063/106] Upgrade to CXF 3.1.8 --- .../syncope/common/lib/SyncopeConstants.java | 4 +- .../syncope/common/lib/info/package-info.java | 6 +- .../syncope/common/lib/jaxb/package-info.java | 6 +- .../syncope/common/lib/package-info.java | 2 +- .../common/lib/patch/package-info.java | 6 +- .../common/lib/policy/package-info.java | 6 +- .../common/lib/report/package-info.java | 6 +- .../common/lib/search/package-info.java | 6 +- .../syncope/common/lib/to/package-info.java | 6 +- .../common/lib/types/package-info.java | 6 +- common/rest-api/pom.xml | 3 +- core/rest-cxf/pom.xml | 8 +- .../rest/cxf/ExtendedSwagger2Serializers.java | 194 +++--------------- .../core/rest/cxf/Swagger2Feature.java | 175 ---------------- .../core/rest/cxf/Swagger2Serializers.java | 36 ---- .../main/resources/META-INF/web-fragment.xml | 2 +- .../src/main/resources/restCXFContext.xml | 7 +- .../main/resources/jboss/restCXFContext.xml | 22 +- pom.xml | 2 +- 19 files changed, 96 insertions(+), 407 deletions(-) delete mode 100644 core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java delete mode 100644 core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java index 81f93a0366d..8d80f6d55ce 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java @@ -25,7 +25,9 @@ public final class SyncopeConstants { - public static final String NAMESPACE = "http://syncope.apache.org/2.0"; + public static final String NS_PREFIX = "syncope2"; + + public static final String NS = "http://syncope.apache.org/2.0"; public static final String MASTER_DOMAIN = "Master"; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java index fccc6f41bf5..60ef65dcf8e 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/info/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.info; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java index a04b95df5c4..dd6b2603f2c 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/jaxb/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.jaxb; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java index 8eac5d576d6..43df8b422fe 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/package-info.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema(namespace = SyncopeConstants.NS) package org.apache.syncope.common.lib; import javax.xml.bind.annotation.XmlSchema; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java index 426ac6d5e93..2aeca44704b 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.patch; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java index bb266284420..67952acbcc6 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/policy/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.policy; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java index bc452c11280..9d6a5da70c3 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/report/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.report; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java index ff6b5e71a35..5b06db00ac6 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.search; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java index b02ed8f49a9..7467695d154 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.to; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java index 80cb87faa77..6d6cd5c5f21 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/package-info.java @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -@XmlSchema(namespace = SyncopeConstants.NAMESPACE) +@XmlSchema( + namespace = SyncopeConstants.NS, + xmlns = { @XmlNs(prefix = SyncopeConstants.NS_PREFIX, + namespaceURI = SyncopeConstants.NS) }) package org.apache.syncope.common.lib.types; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; import org.apache.syncope.common.lib.SyncopeConstants; diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml index de49287e01a..d6d25ac7e46 100644 --- a/common/rest-api/pom.xml +++ b/common/rest-api/pom.xml @@ -138,7 +138,8 @@ under the License. Apache Syncope ${project.version} - syncope + syncope2 + false true true true diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml index 218a9b6806d..8af667b0f88 100644 --- a/core/rest-cxf/pom.xml +++ b/core/rest-cxf/pom.xml @@ -241,7 +241,7 @@ under the License. schema-prefix - syncope1 + syncope2 @@ -253,7 +253,7 @@ under the License. ^.*$ - schema_1_syncope1.html + schema_1_syncope2.html @@ -276,8 +276,8 @@ under the License. - - + + diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java index 45b479ef38f..6d2b4cd8294 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ExtendedSwagger2Serializers.java @@ -18,192 +18,56 @@ */ package org.apache.syncope.core.rest.cxf; -import io.swagger.jaxrs.listing.SwaggerSerializers; -import io.swagger.models.HttpMethod; -import io.swagger.models.Operation; -import io.swagger.models.Path; -import io.swagger.models.Swagger; -import io.swagger.models.Tag; import io.swagger.models.parameters.HeaderParameter; -import java.io.IOException; -import java.io.OutputStream; -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; +import io.swagger.models.parameters.Parameter; +import java.net.URL; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import org.apache.commons.collections4.ComparatorUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.cxf.jaxrs.ext.MessageContext; -import org.apache.cxf.jaxrs.model.ClassResourceInfo; -import org.apache.cxf.jaxrs.model.OperationResourceInfo; -import org.apache.cxf.jaxrs.model.doc.DocumentationProvider; -import org.apache.cxf.jaxrs.utils.JAXRSUtils; +import org.apache.cxf.jaxrs.swagger.DefaultSwagger2Serializers; +import org.apache.cxf.jaxrs.swagger.Swagger2Serializers; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.rest.api.RESTHeaders; import org.apache.syncope.core.persistence.api.DomainsHolder; import org.apache.syncope.core.spring.ApplicationContextProvider; -public class ExtendedSwagger2Serializers extends SwaggerSerializers implements Swagger2Serializers { +public class ExtendedSwagger2Serializers extends DefaultSwagger2Serializers implements Swagger2Serializers { - protected boolean dynamicBasePath; + private List domains; - protected boolean replaceTags; + public ExtendedSwagger2Serializers() { + super(); - protected DocumentationProvider javadocProvider; - - protected List cris; - - @Override - public void setDynamicBasePath(final boolean dynamicBasePath) { - this.dynamicBasePath = dynamicBasePath; - } - - @Override - public void setReplaceTags(final boolean replaceTags) { - this.replaceTags = replaceTags; - } - - @Override - public void setJavadocProvider(final DocumentationProvider javadocProvider) { - this.javadocProvider = javadocProvider; - } - - @Override - public void setClassResourceInfos(final List classResourceInfos) { - this.cris = classResourceInfos; + URL[] javaDocURLs = JavaDocUtils.getJavaDocURLs(); + if (javaDocURLs != null) { + super.setJavaDocURLs(javaDocURLs); + } } @Override - public void writeTo( - final Swagger data, - final Class type, - final Type genericType, - final Annotation[] annotations, - final MediaType mediaType, - final MultivaluedMap headers, - final OutputStream out) throws IOException { - - if (dynamicBasePath) { - MessageContext ctx = JAXRSUtils.createContextValue( - JAXRSUtils.getCurrentMessage(), null, MessageContext.class); - data.setBasePath(StringUtils.substringBeforeLast(ctx.getHttpServletRequest(). - getRequestURI(), "/")); - } - - if (replaceTags || javadocProvider != null) { - List domains = new ArrayList<>( + protected void addParameters(final List parameters) { + if (domains == null) { + domains = new ArrayList<>( ApplicationContextProvider.getApplicationContext(). getBean(DomainsHolder.class).getDomains().keySet()); - - Map operations = new HashMap<>(); - Map, OperationResourceInfo> methods = new HashMap<>(); - for (ClassResourceInfo cri : cris) { - for (OperationResourceInfo ori : cri.getMethodDispatcher().getOperationResourceInfos()) { - String normalizedPath = getNormalizedPath( - cri.getURITemplate().getValue(), ori.getURITemplate().getValue()); - - operations.put(normalizedPath, cri); - methods.put(ImmutablePair.of(ori.getHttpMethod(), normalizedPath), ori); - } - } - - if (replaceTags && data.getTags() != null) { - data.getTags().clear(); - } - for (final Map.Entry entry : data.getPaths().entrySet()) { - Tag tag = null; - if (replaceTags && operations.containsKey(entry.getKey())) { - ClassResourceInfo cri = operations.get(entry.getKey()); - - tag = new Tag(); - tag.setName(cri.getURITemplate().getValue().replaceAll("/", "_")); - if (javadocProvider != null) { - tag.setDescription(javadocProvider.getClassDoc(cri)); - } - - data.addTag(tag); - } - - for (Map.Entry subentry : entry.getValue().getOperationMap().entrySet()) { - if (replaceTags && tag != null) { - subentry.getValue().setTags(Collections.singletonList(tag.getName())); - } - - Pair key = ImmutablePair.of(subentry.getKey().name(), entry.getKey()); - if (methods.containsKey(key) && javadocProvider != null) { - OperationResourceInfo ori = methods.get(key); - - subentry.getValue().setSummary(javadocProvider.getMethodDoc(ori)); - - boolean domainHeaderParameterFound = false; - for (int i = 0; i < subentry.getValue().getParameters().size(); i++) { - subentry.getValue().getParameters().get(i). - setDescription(javadocProvider.getMethodParameterDoc(ori, i)); - - if (subentry.getValue().getParameters().get(i) instanceof HeaderParameter - && RESTHeaders.DOMAIN.equals( - subentry.getValue().getParameters().get(i).getName())) { - - domainHeaderParameterFound = true; - } - } - if (!domainHeaderParameterFound) { - HeaderParameter domainHeaderParameter = new HeaderParameter(); - domainHeaderParameter.setName(RESTHeaders.DOMAIN); - domainHeaderParameter.setRequired(true); - domainHeaderParameter.setType("string"); - domainHeaderParameter.setEnum(domains); - domainHeaderParameter.setDefault(SyncopeConstants.MASTER_DOMAIN); - - subentry.getValue().getParameters().add(domainHeaderParameter); - } - - if (subentry.getValue().getResponses() != null - && !subentry.getValue().getResponses().isEmpty()) { - - subentry.getValue().getResponses().entrySet().iterator().next().getValue(). - setDescription(javadocProvider.getMethodResponseDoc(ori)); - } - } - } - } } - if (replaceTags && data.getTags() != null) { - Collections.sort(data.getTags(), new Comparator() { - - @Override - public int compare(final Tag tag1, final Tag tag2) { - return ComparatorUtils.naturalComparator().compare(tag1.getName(), tag2.getName()); - } - }); - } - - super.writeTo(data, type, genericType, annotations, mediaType, headers, out); - } - protected String getNormalizedPath(final String classResourcePath, final String operationResourcePath) { - StringBuilder normalizedPath = new StringBuilder(); + boolean domainHeaderParameterFound = false; + for (int i = 0; i < parameters.size(); i++) { + if (parameters.get(i) instanceof HeaderParameter + && RESTHeaders.DOMAIN.equals(parameters.get(i).getName())) { - String[] segments = org.apache.commons.lang3.StringUtils.split(classResourcePath + operationResourcePath, - "/"); - for (String segment : segments) { - if (!org.apache.commons.lang3.StringUtils.isEmpty(segment)) { - normalizedPath.append("/").append(segment); + domainHeaderParameterFound = true; } } - // Adapt to Swagger's path expression - if (normalizedPath.toString().endsWith(":.*}")) { - normalizedPath.setLength(normalizedPath.length() - 4); - normalizedPath.append('}'); + if (!domainHeaderParameterFound) { + HeaderParameter domainHeaderParameter = new HeaderParameter(); + domainHeaderParameter.setName(RESTHeaders.DOMAIN); + domainHeaderParameter.setRequired(true); + domainHeaderParameter.setType("string"); + domainHeaderParameter.setEnum(domains); + domainHeaderParameter.setDefault(SyncopeConstants.MASTER_DOMAIN); + + parameters.add(domainHeaderParameter); } - return StringUtils.EMPTY.equals(normalizedPath.toString()) ? "/" : normalizedPath.toString(); } } diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java deleted file mode 100644 index e01d7e26bb0..00000000000 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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.core.rest.cxf; - -import io.swagger.jaxrs.config.BeanConfig; -import io.swagger.jaxrs.config.DefaultReaderConfig; -import io.swagger.jaxrs.config.ReaderConfig; -import io.swagger.jaxrs.listing.ApiListingResource; -import java.io.IOException; -import java.net.URI; -import java.net.URL; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.regex.Pattern; -import javax.servlet.ServletContext; -import javax.ws.rs.HttpMethod; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.container.PreMatching; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.UriInfo; -import org.apache.commons.lang3.StringUtils; -import org.apache.cxf.Bus; -import org.apache.cxf.endpoint.Server; -import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean; -import org.apache.cxf.jaxrs.ext.MessageContext; -import org.apache.cxf.jaxrs.model.ClassResourceInfo; -import org.apache.cxf.jaxrs.provider.ServerProviderFactory; -import org.apache.cxf.jaxrs.utils.InjectionUtils; - -/** - * Automatically loads available javadocs from class loader (when {@link java.net.URLClassLoader}). - */ -public class Swagger2Feature extends org.apache.cxf.jaxrs.swagger.Swagger2Feature { - - @Override - public void initialize(final Server server, final Bus bus) { - URL[] javaDocURLs = JavaDocUtils.getJavaDocURLs(); - if (javaDocURLs != null) { - super.setJavaDocURLs(javaDocURLs); - } - - super.initialize(server, bus); - } - - // ------- Remove the code below this point when CXF 3.1.8 is available ----- - private Swagger2Serializers swagger2Serializers; - - public void setSwagger2Serializers(final Swagger2Serializers swagger2Serializers) { - this.swagger2Serializers = swagger2Serializers; - } - - @Override - protected void addSwaggerResource(final Server server, final Bus bus) { - List swaggerResources = new LinkedList<>(); - ApiListingResource apiListingResource = new ApiListingResource(); - swaggerResources.add(apiListingResource); - if (SWAGGER_UI_RESOURCE_ROOT != null) { - swaggerResources.add(new SwaggerUIService()); - bus.setProperty("swagger.service.ui.available", "true"); - } - JAXRSServiceFactoryBean sfb = - (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName()); - sfb.setResourceClassesFromBeans(swaggerResources); - - List cris = sfb.getClassResourceInfo(); - - List providers = new ArrayList<>(); - for (ClassResourceInfo cri : cris) { - if (ApiListingResource.class == cri.getResourceClass()) { - InjectionUtils.injectContextProxies(cri, apiListingResource); - } - } - if (SWAGGER_UI_RESOURCE_ROOT != null) { - providers.add(new SwaggerUIFilter()); - } - - if (swagger2Serializers != null) { - swagger2Serializers.setJavadocProvider(javadocProvider); - swagger2Serializers.setClassResourceInfos(cris); - providers.add(swagger2Serializers); - } - - providers.add(new ReaderConfigFilter()); - ((ServerProviderFactory) server.getEndpoint().get( - ServerProviderFactory.class.getName())).setUserProviders(providers); - - BeanConfig beanConfig = new BeanConfig(); - beanConfig.setResourcePackage(getResourcePackage()); - beanConfig.setVersion(getVersion()); - String basePath = getBasePath(); - beanConfig.setBasePath(basePath); - beanConfig.setHost(getHost()); - beanConfig.setSchemes(getSchemes()); - beanConfig.setTitle(getTitle()); - beanConfig.setDescription(getDescription()); - beanConfig.setContact(getContact()); - beanConfig.setLicense(getLicense()); - beanConfig.setLicenseUrl(getLicenseUrl()); - beanConfig.setTermsOfServiceUrl(getTermsOfServiceUrl()); - beanConfig.setScan(isScan()); - beanConfig.setPrettyPrint(isPrettyPrint()); - beanConfig.setFilterClass(getFilterClass()); - } - - protected class ReaderConfigFilter implements ContainerRequestFilter { - - @Context - protected MessageContext mc; - - @Override - public void filter(final ContainerRequestContext requestContext) throws IOException { - ServletContext servletContext = mc.getServletContext(); - if (servletContext != null && servletContext.getAttribute(ReaderConfig.class.getName()) == null) { - if (mc.getServletConfig() != null - && Boolean.valueOf(mc.getServletConfig().getInitParameter("scan.all.resources"))) { - addReaderConfig(mc.getServletConfig().getInitParameter("ignore.routes")); - } else if (isScanAllResources()) { - addReaderConfig(getIgnoreRoutes()); - } - } - } - - protected void addReaderConfig(final String ignoreRoutesParam) { - DefaultReaderConfig rc = new DefaultReaderConfig(); - rc.setScanAllResources(true); - if (ignoreRoutesParam != null) { - Set routes = new LinkedHashSet<>(); - for (String route : StringUtils.split(ignoreRoutesParam, ",")) { - routes.add(route.trim()); - } - rc.setIgnoredRoutes(routes); - } - mc.getServletContext().setAttribute(ReaderConfig.class.getName(), rc); - } - } - - @PreMatching - protected static class SwaggerUIFilter implements ContainerRequestFilter { - - private static final Pattern PATTERN = - Pattern.compile(".*[.]js|/css/.*|/images/.*|/lib/.*|.*ico|/fonts/.*"); - - @Override - public void filter(final ContainerRequestContext rc) throws IOException { - if (HttpMethod.GET.equals(rc.getRequest().getMethod())) { - UriInfo ui = rc.getUriInfo(); - String path = "/" + ui.getPath(); - if (PATTERN.matcher(path).matches()) { - rc.setRequestUri(URI.create("api-docs" + path)); - } - } - } - } - -} diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java deleted file mode 100644 index 39abf7bea97..00000000000 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Serializers.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.core.rest.cxf; - -import io.swagger.models.Swagger; -import java.util.List; -import javax.ws.rs.ext.MessageBodyWriter; -import org.apache.cxf.jaxrs.model.ClassResourceInfo; -import org.apache.cxf.jaxrs.model.doc.DocumentationProvider; - -public interface Swagger2Serializers extends MessageBodyWriter { - - void setDynamicBasePath(boolean dynamicBasePath); - - void setReplaceTags(boolean replaceTags); - - void setJavadocProvider(DocumentationProvider javadocProvider); - - void setClassResourceInfos(List classResourceInfos); -} diff --git a/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml b/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml index 405139a270d..9e75b2d9ddd 100644 --- a/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml +++ b/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml @@ -45,7 +45,7 @@ under the License. WADLServlet /index.html - /schema_1_syncope1.html + /schema_1_syncope2.html /syncope.wadl diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml index 4f4d12b398f..5daa96a779e 100644 --- a/core/rest-cxf/src/main/resources/restCXFContext.xml +++ b/core/rest-cxf/src/main/resources/restCXFContext.xml @@ -40,7 +40,7 @@ under the License. - syncope + syncope2 @@ -91,7 +91,8 @@ under the License. - + + @@ -103,7 +104,7 @@ under the License. - + diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml index 1b709b153bc..7a9bed588b5 100644 --- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml +++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml @@ -40,7 +40,7 @@ under the License. - syncope + syncope2 @@ -91,7 +91,8 @@ under the License. - + + @@ -108,24 +109,23 @@ under the License. + + + /WEB-INF/lib/syncope-common-rest-api-${syncope.version}-javadoc.jar + /WEB-INF/lib/syncope-ext-camel-rest-api-${syncope.version}-javadoc.jar + + - + - + - - - /WEB-INF/lib/syncope-common-rest-api-${syncope.version}-javadoc.jar - /WEB-INF/lib/syncope-ext-camel-rest-api-${syncope.version}-javadoc.jar - - - diff --git a/pom.xml b/pom.xml index c27550ca6b2..4b611f94f06 100644 --- a/pom.xml +++ b/pom.xml @@ -356,7 +356,7 @@ under the License. 1.5.1 1.3.2 - 3.1.7 + 3.1.8 2.17.3 From 69cb87038c3959a23aba93d724dc5c133757be15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Thu, 20 Oct 2016 10:15:33 +0200 Subject: [PATCH 064/106] Upgrading AdminLTE to 2.3.7 --- .../syncope/client/console/themes/css/AdminLTE.css | 14 +++++++++----- .../client/console/themes/js/AdminLTE-app.min.js | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/themes/css/AdminLTE.css b/client/console/src/main/resources/org/apache/syncope/client/console/themes/css/AdminLTE.css index 2b8ced966d9..97ef7bec14a 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/themes/css/AdminLTE.css +++ b/client/console/src/main/resources/org/apache/syncope/client/console/themes/css/AdminLTE.css @@ -1,6 +1,6 @@ @import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); /*! - * AdminLTE v2.3.6 + * AdminLTE v2.3.7 * Author: Almsaeed Studio * Website: Almsaeed Studio * License: Open source - MIT @@ -543,7 +543,8 @@ a:focus { padding: 0; margin-right: 10px; } -.sidebar-menu li.active > a > .fa-angle-left > a > .pull-right-container > .fa-angle-left { +.sidebar-menu li.active > a > .fa-angle-left, +.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left { -webkit-transform: rotate(-90deg); -ms-transform: rotate(-90deg); -o-transform: rotate(-90deg); @@ -1269,7 +1270,8 @@ a:focus { .form-group.has-success label { color: #00a65a; } -.form-group.has-success .form-control { +.form-group.has-success .form-control, +.form-group.has-success .input-group-addon { border-color: #00a65a; box-shadow: none; } @@ -1279,7 +1281,8 @@ a:focus { .form-group.has-warning label { color: #f39c12; } -.form-group.has-warning .form-control { +.form-group.has-warning .form-control, +.form-group.has-warning .input-group-addon { border-color: #f39c12; box-shadow: none; } @@ -1289,7 +1292,8 @@ a:focus { .form-group.has-error label { color: #dd4b39; } -.form-group.has-error .form-control { +.form-group.has-error .form-control, +.form-group.has-error .input-group-addon { border-color: #dd4b39; box-shadow: none; } diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/themes/js/AdminLTE-app.min.js b/client/console/src/main/resources/org/apache/syncope/client/console/themes/js/AdminLTE-app.min.js index d0c2a25e5a3..51d50100df3 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/themes/js/AdminLTE-app.min.js +++ b/client/console/src/main/resources/org/apache/syncope/client/console/themes/js/AdminLTE-app.min.js @@ -7,7 +7,7 @@ * @Author Almsaeed Studio * @Support * @Email - * @version 2.3.6 + * @version 2.3.7 * @license MIT */ function _init(){"use strict";$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){var a=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),b=$(window).height(),c=$(".sidebar").height();if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",b-$(".main-footer").outerHeight());else{var d;b>=c?($(".content-wrapper, .right-side").css("min-height",b-a),d=b-a):($(".content-wrapper, .right-side").css("min-height",c),d=c);var e=$($.AdminLTE.options.controlSidebarOptions.selector);"undefined"!=typeof e&&e.height()>d&&$(".content-wrapper, .right-side").css("min-height",e.height())}},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&window.console&&window.console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu={activate:function(a){var b=$.AdminLTE.options.screenSizes;$(document).on("click",a,function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").hasClass("sidebar-collapse")?$("body").removeClass("sidebar-collapse").trigger("expanded.pushMenu"):$("body").addClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").hasClass("sidebar-open")?$("body").removeClass("sidebar-open").removeClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").addClass("sidebar-open").trigger("expanded.pushMenu")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var a=this,b=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>b&&a.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>b&&a.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(a){var b=this,c=$.AdminLTE.options.animationSpeed;$(document).off("click",a+" li a").on("click",a+" li a",function(a){var d=$(this),e=d.next();if(e.is(".treeview-menu")&&e.is(":visible")&&!$("body").hasClass("sidebar-collapse"))e.slideUp(c,function(){e.removeClass("menu-open")}),e.parent("li").removeClass("active");else if(e.is(".treeview-menu")&&!e.is(":visible")){var f=d.parents("ul").first(),g=f.find("ul:visible").slideUp(c);g.removeClass("menu-open");var h=d.parent("li");e.slideDown(c,function(){e.addClass("menu-open"),f.find("li.active").removeClass("active"),h.addClass("active"),b.layout.fix()})}e.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var a=this,b=$.AdminLTE.options.controlSidebarOptions,c=$(b.selector),d=$(b.toggleBtnSelector);d.on("click",function(d){d.preventDefault(),c.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?a.close(c,b.slide):a.open(c,b.slide)});var e=$(".control-sidebar-bg");a._fix(e),$("body").hasClass("fixed")?a._fixForFixed(c):$(".content-wrapper, .right-side").height() .box-body, > .box-footer, > form >.box-body, > form > .box-footer");c.hasClass("collapsed-box")?(a.children(":first").removeClass(b.icons.open).addClass(b.icons.collapse),d.slideDown(b.animationSpeed,function(){c.removeClass("collapsed-box")})):(a.children(":first").removeClass(b.icons.collapse).addClass(b.icons.open),d.slideUp(b.animationSpeed,function(){c.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp(this.animationSpeed)}}}if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",animationSpeed:500,sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,sidebarExpandOnHover:!1,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!1,enableControlSidebar:!0,controlSidebarOptions:{toggleBtnSelector:"[data-toggle='control-sidebar']",selector:".control-sidebar",slide:!0},enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa-minus",open:"fa-plus",remove:"fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){"use strict";$("body").removeClass("hold-transition"),"undefined"!=typeof AdminLTEOptions&&$.extend(!0,$.AdminLTE.options,AdminLTEOptions);var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),a.enableControlSidebar&&$.AdminLTE.controlSidebar.activate(),a.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:a.navbarMenuHeight,alwaysVisible:!1,size:a.navbarMenuSlimscrollWidth}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu.activate(a.sidebarToggleSelector),a.enableBSToppltip&&$("body").tooltip({selector:a.BSTooltipSelector}),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(document).on("click",a.directChat.contactToggleSelector,function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").on("click",function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){"use strict";a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(a){return a},onLoadDone:function(a){return a}},b),f=a('
');return this.each(function(){if(""===e.source)return void(window.console&&window.console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.on("click",function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){"use strict";a.fn.activateBox=function(){a.AdminLTE.boxWidget.activate(this)},a.fn.toggleBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.collapse,this);a.AdminLTE.boxWidget.collapse(b)},a.fn.removeBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.remove,this);a.AdminLTE.boxWidget.remove(b)}}(jQuery),function(a){"use strict";a.fn.todolist=function(b){var c=a.extend({onCheck:function(a){return a},onUncheck:function(a){return a}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input",this).on("ifChecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onCheck.call(b)}),a("input",this).on("ifUnchecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onUncheck.call(b)})):a("input",this).on("change",function(){var b=a(this).parents("li").first();b.toggleClass("done"),a("input",b).is(":checked")?c.onCheck.call(b):c.onUncheck.call(b)})})}}(jQuery); \ No newline at end of file From 68c9cc31b23d6de2f486474938e0152e5fad0751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 21 Oct 2016 09:46:22 +0200 Subject: [PATCH 065/106] Updating CHANGES for release --- CHANGES | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGES b/CHANGES index a9814cb348c..2540f4a6564 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,27 @@ Apache Syncope - CHANGES Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- +Release Notes - Syncope - Version 2.0.1 +================================================================================ + +** Bug + * [SYNCOPE-937] - Security question not loaded while resetting the user password + * [SYNCOPE-940] - Handle authorization issues more gracefully in the console + * [SYNCOPE-942] - Bug in changing security answer in the Enduser UI + * [SYNCOPE-944] - Cannot manually assign groups provided with dynamic assignment rules + * [SYNCOPE-946] - Encrypted attribute values not managed as password values + * [SYNCOPE-947] - Missing quotes defining realm (JEXL) expression in user/group/anyobject templates for realms + * [SYNCOPE-950] - Self-registration / self-update not working + * [SYNCOPE-953] - Enduser shows groups of the selected realm rather than groups assignable to users in the selected realm + +** Improvement + * [SYNCOPE-948] - Optionally provide schema information with attribute values + * [SYNCOPE-949] - Leave WebApplicationException to default processing + * [SYNCOPE-952] - Provide realm management to enduser + * [SYNCOPE-958] - Enduser improvements + * [SYNCOPE-959] - Specify working domain in enduser.properties + * [SYNCOPE-960] - Make the breadcrumb in creation navigable only when the Finish page has been reached + Release Notes - Syncope - Version 2.0.0 ================================================================================ From 11447fc94e3fa62c81c0d67ea23c93f8899af608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 21 Oct 2016 09:47:08 +0200 Subject: [PATCH 066/106] Updating Eclipse files for release --- .../org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF | 2 +- .../org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF | 2 +- .../releng/org.apache.syncope.ide.eclipse.site/category.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF index 4be1800d76f..2e4fa975f85 100644 --- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF +++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Apache Syncope Eclipse Plugin Bundle-SymbolicName: org.apache.syncope.ide.eclipse.plugin;singleton:=true -Bundle-Version: 2.0.1.qualifier +Bundle-Version: 2.0.1 Bundle-Activator: org.apache.syncope.ide.eclipse.plugin.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF index 54434b94f09..219d1fa0145 100644 --- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF +++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: org.apache.syncope.ide.eclipse.tests Bundle-SymbolicName: org.apache.syncope.ide.eclipse.tests;singleton:=true -Bundle-Version: 2.0.1.qualifier +Bundle-Version: 2.0.1 Bundle-ActivationPolicy: lazy Bundle-Vendor: Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml index 5efe82f828b..b225937bb8d 100644 --- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml +++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml @@ -18,7 +18,7 @@ specific language governing permissions and limitations under the License. --> - + From 931b28aea66bb100995f1b3177751287c758cd32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 21 Oct 2016 09:47:51 +0200 Subject: [PATCH 067/106] Updating downloads site page for release --- src/site/xdoc/downloads.xml | 68 ++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/site/xdoc/downloads.xml b/src/site/xdoc/downloads.xml index fac3cffa2f0..9a9bf6efb42 100644 --- a/src/site/xdoc/downloads.xml +++ b/src/site/xdoc/downloads.xml @@ -58,8 +58,8 @@ under the License. - -

Release date: September 9th 2016

+ +

Release date: October 21st 2016

Release notes

@@ -73,82 +73,82 @@ under the License. - syncope-2.0.0-source-release.zip + syncope-2.0.1-source-release.zip - asc - md5 - sha1 + asc + md5 + sha1 - syncope-standalone-2.0.0-distribution.zip + syncope-standalone-2.0.1-distribution.zip - asc - md5 - sha1 + asc + md5 + sha1 - apache-syncope-2.0.0.deb + apache-syncope-2.0.1.deb - asc - md5 - sha1 + asc + md5 + sha1 - apache-syncope-console-2.0.0.deb + apache-syncope-console-2.0.1.deb - asc - md5 - sha1 + asc + md5 + sha1 - apache-syncope-enduser-2.0.0.deb + apache-syncope-enduser-2.0.1.deb - asc - md5 - sha1 + asc + md5 + sha1 - syncope-installer-2.0.0.jar + syncope-installer-2.0.1.jar - asc - md5 - sha1 + asc + md5 + sha1 - syncope-client-cli-2.0.0.zip + syncope-client-cli-2.0.1.zip - asc - md5 - sha1 + asc + md5 + sha1 - syncope-client-cli-2.0.0.zip + syncope-client-cli-2.0.1.zip - asc - md5 - sha1 + asc + md5 + sha1 From dd0af57f98167158a8aef0dc08a9b60dcd1f1951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 21 Oct 2016 09:53:31 +0200 Subject: [PATCH 068/106] [maven-release-plugin] prepare release syncope-2.0.1 --- archetype/pom.xml | 2 +- client/cli/pom.xml | 2 +- client/console/pom.xml | 2 +- client/enduser/pom.xml | 2 +- client/lib/pom.xml | 2 +- client/pom.xml | 2 +- common/lib/pom.xml | 2 +- common/pom.xml | 2 +- common/rest-api/pom.xml | 2 +- core/logic/pom.xml | 2 +- core/migration/pom.xml | 2 +- core/persistence-api/pom.xml | 2 +- core/persistence-jpa/pom.xml | 2 +- core/pom.xml | 2 +- core/provisioning-api/pom.xml | 2 +- core/provisioning-java/pom.xml | 2 +- core/rest-cxf/pom.xml | 2 +- core/spring/pom.xml | 2 +- core/workflow-activiti/pom.xml | 2 +- core/workflow-api/pom.xml | 2 +- core/workflow-java/pom.xml | 2 +- deb/console/pom.xml | 2 +- deb/core/pom.xml | 2 +- deb/enduser/pom.xml | 2 +- deb/pom.xml | 2 +- ext/camel/client-console/pom.xml | 2 +- ext/camel/common-lib/pom.xml | 2 +- ext/camel/logic/pom.xml | 2 +- ext/camel/persistence-api/pom.xml | 2 +- ext/camel/persistence-jpa/pom.xml | 2 +- ext/camel/pom.xml | 2 +- ext/camel/provisioning-api/pom.xml | 2 +- ext/camel/provisioning-camel/pom.xml | 2 +- ext/camel/rest-api/pom.xml | 2 +- ext/camel/rest-cxf/pom.xml | 2 +- ext/pom.xml | 2 +- ext/swagger-ui/pom.xml | 2 +- fit/build-tools/pom.xml | 2 +- fit/console-reference/pom.xml | 2 +- fit/core-reference/pom.xml | 2 +- fit/enduser-reference/pom.xml | 2 +- fit/pom.xml | 2 +- .../bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml | 2 +- ide/eclipse/pom.xml | 2 +- .../releng/org.apache.syncope.ide.eclipse.site/pom.xml | 2 +- ide/pom.xml | 2 +- installer/pom.xml | 2 +- pom.xml | 4 ++-- standalone/pom.xml | 2 +- 49 files changed, 50 insertions(+), 50 deletions(-) diff --git a/archetype/pom.xml b/archetype/pom.xml index f02f7f8a62d..2786129edbd 100644 --- a/archetype/pom.xml +++ b/archetype/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Archetype diff --git a/client/cli/pom.xml b/client/cli/pom.xml index c87aac25250..b5735409a23 100644 --- a/client/cli/pom.xml +++ b/client/cli/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Client CLI diff --git a/client/console/pom.xml b/client/console/pom.xml index 812070f2534..3189aab5cd8 100644 --- a/client/console/pom.xml +++ b/client/console/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Client Console diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml index 6af95bd2eca..164b3d1700c 100644 --- a/client/enduser/pom.xml +++ b/client/enduser/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Client Enduser diff --git a/client/lib/pom.xml b/client/lib/pom.xml index 17e6bc69e7b..b2784579e55 100644 --- a/client/lib/pom.xml +++ b/client/lib/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Client Lib diff --git a/client/pom.xml b/client/pom.xml index fc447bb4d1d..f09bfb8fa02 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Client diff --git a/common/lib/pom.xml b/common/lib/pom.xml index 6744ebb0a13..c592ea30339 100644 --- a/common/lib/pom.xml +++ b/common/lib/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-common - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Common Lib diff --git a/common/pom.xml b/common/pom.xml index dadf7a023ca..cb790460fdf 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Common diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml index d6d25ac7e46..f578d7a48cb 100644 --- a/common/rest-api/pom.xml +++ b/common/rest-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-common - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Common REST API diff --git a/core/logic/pom.xml b/core/logic/pom.xml index f6fde87f9a6..6ae72e017c7 100644 --- a/core/logic/pom.xml +++ b/core/logic/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Logic diff --git a/core/migration/pom.xml b/core/migration/pom.xml index 7f106b26555..29f53695cd9 100644 --- a/core/migration/pom.xml +++ b/core/migration/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Migration diff --git a/core/persistence-api/pom.xml b/core/persistence-api/pom.xml index 948a535d718..e685881aa7a 100644 --- a/core/persistence-api/pom.xml +++ b/core/persistence-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Persistence API diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml index 88fa2bc2dfe..c6c14414c1a 100644 --- a/core/persistence-jpa/pom.xml +++ b/core/persistence-jpa/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Persistence JPA diff --git a/core/pom.xml b/core/pom.xml index 0da40dc7bad..f65d8846884 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core diff --git a/core/provisioning-api/pom.xml b/core/provisioning-api/pom.xml index b3d71b63536..7a2dffce6b7 100644 --- a/core/provisioning-api/pom.xml +++ b/core/provisioning-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Provisioning API diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml index cd6436e53ad..47f856f0f46 100644 --- a/core/provisioning-java/pom.xml +++ b/core/provisioning-java/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Provisioning Java diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml index 8af667b0f88..4fe1849b84c 100644 --- a/core/rest-cxf/pom.xml +++ b/core/rest-cxf/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core REST CXF diff --git a/core/spring/pom.xml b/core/spring/pom.xml index 9944f257f52..9d89e3c632c 100644 --- a/core/spring/pom.xml +++ b/core/spring/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Spring diff --git a/core/workflow-activiti/pom.xml b/core/workflow-activiti/pom.xml index 117ad2ac231..a4dd8892d44 100644 --- a/core/workflow-activiti/pom.xml +++ b/core/workflow-activiti/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Workflow Activiti diff --git a/core/workflow-api/pom.xml b/core/workflow-api/pom.xml index 957afbe277a..c355deceeb9 100644 --- a/core/workflow-api/pom.xml +++ b/core/workflow-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Workflow API diff --git a/core/workflow-java/pom.xml b/core/workflow-java/pom.xml index bd2703e7565..fcfe6c76482 100644 --- a/core/workflow-java/pom.xml +++ b/core/workflow-java/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Core Workflow Java diff --git a/deb/console/pom.xml b/deb/console/pom.xml index 6cc067db92d..961ae1dd8f8 100644 --- a/deb/console/pom.xml +++ b/deb/console/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-deb - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Deb Console diff --git a/deb/core/pom.xml b/deb/core/pom.xml index fd8e7bc8a73..9467fa23b6e 100644 --- a/deb/core/pom.xml +++ b/deb/core/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-deb - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Deb Core diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml index 4c52b9b465a..b140068324e 100644 --- a/deb/enduser/pom.xml +++ b/deb/enduser/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-deb - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Deb Enduser diff --git a/deb/pom.xml b/deb/pom.xml index 647325dc06c..a279a7196ab 100644 --- a/deb/pom.xml +++ b/deb/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Deb diff --git a/ext/camel/client-console/pom.xml b/ext/camel/client-console/pom.xml index 22bde467cea..eb2eb9a6052 100644 --- a/ext/camel/client-console/pom.xml +++ b/ext/camel/client-console/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Client Console diff --git a/ext/camel/common-lib/pom.xml b/ext/camel/common-lib/pom.xml index 0a31e955cdd..ba20c5d2024 100644 --- a/ext/camel/common-lib/pom.xml +++ b/ext/camel/common-lib/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Common Lib diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml index ed1696429a5..fc2889eaa45 100644 --- a/ext/camel/logic/pom.xml +++ b/ext/camel/logic/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Logic diff --git a/ext/camel/persistence-api/pom.xml b/ext/camel/persistence-api/pom.xml index 568f70aace5..8e610e2f66e 100644 --- a/ext/camel/persistence-api/pom.xml +++ b/ext/camel/persistence-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Persistence API diff --git a/ext/camel/persistence-jpa/pom.xml b/ext/camel/persistence-jpa/pom.xml index 29c5144ff44..61307db1069 100644 --- a/ext/camel/persistence-jpa/pom.xml +++ b/ext/camel/persistence-jpa/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Persistence JPA diff --git a/ext/camel/pom.xml b/ext/camel/pom.xml index f22e72c7939..571259ee2ae 100644 --- a/ext/camel/pom.xml +++ b/ext/camel/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-ext - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel diff --git a/ext/camel/provisioning-api/pom.xml b/ext/camel/provisioning-api/pom.xml index 75ef09a080b..7a56acedaf2 100644 --- a/ext/camel/provisioning-api/pom.xml +++ b/ext/camel/provisioning-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Provisioning API diff --git a/ext/camel/provisioning-camel/pom.xml b/ext/camel/provisioning-camel/pom.xml index 02b83db5291..33ed288571d 100644 --- a/ext/camel/provisioning-camel/pom.xml +++ b/ext/camel/provisioning-camel/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel Provisioning diff --git a/ext/camel/rest-api/pom.xml b/ext/camel/rest-api/pom.xml index 11f3f71ae2f..c3034bcb5a2 100644 --- a/ext/camel/rest-api/pom.xml +++ b/ext/camel/rest-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel REST API diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml index 1d03e457d8f..e4833a3921c 100644 --- a/ext/camel/rest-cxf/pom.xml +++ b/ext/camel/rest-cxf/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Camel REST CXF diff --git a/ext/pom.xml b/ext/pom.xml index e90bc8ae043..f532de8cddc 100644 --- a/ext/pom.xml +++ b/ext/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions diff --git a/ext/swagger-ui/pom.xml b/ext/swagger-ui/pom.xml index 08f924032b9..90ba4bd1790 100644 --- a/ext/swagger-ui/pom.xml +++ b/ext/swagger-ui/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-ext - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Extensions: Swagger UI diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml index 690f179ad45..061bddaf6aa 100644 --- a/fit/build-tools/pom.xml +++ b/fit/build-tools/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope FIT Build Tools diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml index d62d3c9a785..a4cada4d94e 100644 --- a/fit/console-reference/pom.xml +++ b/fit/console-reference/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope FIT Console Reference diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml index c818825ef3f..9beea42a234 100644 --- a/fit/core-reference/pom.xml +++ b/fit/core-reference/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope FIT Core Reference diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml index d970fe7e684..4960fea71de 100644 --- a/fit/enduser-reference/pom.xml +++ b/fit/enduser-reference/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope FIT Enduser Reference diff --git a/fit/pom.xml b/fit/pom.xml index 7041e6997fc..2819085e1dd 100644 --- a/fit/pom.xml +++ b/fit/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope FIT diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml index a45a4158223..f415bc5470e 100644 --- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml +++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ide syncope-ide-eclipse - 2.0.1-SNAPSHOT + 2.0.1 ../../ diff --git a/ide/eclipse/pom.xml b/ide/eclipse/pom.xml index 98291f51e2d..3b5b2fdb5a1 100644 --- a/ide/eclipse/pom.xml +++ b/ide/eclipse/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-ide - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope IDE Eclipse diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml index 0111fb70807..e1e8e82f057 100644 --- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml +++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ide syncope-ide-eclipse - 2.0.1-SNAPSHOT + 2.0.1 ../../ diff --git a/ide/pom.xml b/ide/pom.xml index 5d1ff8cc1be..c7e87a4173a 100644 --- a/ide/pom.xml +++ b/ide/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope IDE diff --git a/installer/pom.xml b/installer/pom.xml index e52569a4258..e98e02501b2 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Installer diff --git a/pom.xml b/pom.xml index 4b611f94f06..ed683abbe01 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 pom @@ -52,7 +52,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git https://git-wip-us.apache.org/repos/asf?p=syncope.git - HEAD + syncope-2.0.1 diff --git a/standalone/pom.xml b/standalone/pom.xml index ac97c02c862..0fae0965ead 100644 --- a/standalone/pom.xml +++ b/standalone/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1-SNAPSHOT + 2.0.1 Apache Syncope Standalone Distribution From 03c57c3f6d558623aaacb13a57e4b12b40acc4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 21 Oct 2016 09:53:52 +0200 Subject: [PATCH 069/106] [maven-release-plugin] prepare for next development iteration --- archetype/pom.xml | 2 +- client/cli/pom.xml | 2 +- client/console/pom.xml | 2 +- client/enduser/pom.xml | 2 +- client/lib/pom.xml | 2 +- client/pom.xml | 2 +- common/lib/pom.xml | 2 +- common/pom.xml | 2 +- common/rest-api/pom.xml | 2 +- core/logic/pom.xml | 2 +- core/migration/pom.xml | 2 +- core/persistence-api/pom.xml | 2 +- core/persistence-jpa/pom.xml | 2 +- core/pom.xml | 2 +- core/provisioning-api/pom.xml | 2 +- core/provisioning-java/pom.xml | 2 +- core/rest-cxf/pom.xml | 2 +- core/spring/pom.xml | 2 +- core/workflow-activiti/pom.xml | 2 +- core/workflow-api/pom.xml | 2 +- core/workflow-java/pom.xml | 2 +- deb/console/pom.xml | 2 +- deb/core/pom.xml | 2 +- deb/enduser/pom.xml | 2 +- deb/pom.xml | 2 +- ext/camel/client-console/pom.xml | 2 +- ext/camel/common-lib/pom.xml | 2 +- ext/camel/logic/pom.xml | 2 +- ext/camel/persistence-api/pom.xml | 2 +- ext/camel/persistence-jpa/pom.xml | 2 +- ext/camel/pom.xml | 2 +- ext/camel/provisioning-api/pom.xml | 2 +- ext/camel/provisioning-camel/pom.xml | 2 +- ext/camel/rest-api/pom.xml | 2 +- ext/camel/rest-cxf/pom.xml | 2 +- ext/pom.xml | 2 +- ext/swagger-ui/pom.xml | 2 +- fit/build-tools/pom.xml | 2 +- fit/console-reference/pom.xml | 2 +- fit/core-reference/pom.xml | 2 +- fit/enduser-reference/pom.xml | 2 +- fit/pom.xml | 2 +- .../bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml | 2 +- ide/eclipse/pom.xml | 2 +- .../releng/org.apache.syncope.ide.eclipse.site/pom.xml | 2 +- ide/pom.xml | 2 +- installer/pom.xml | 2 +- pom.xml | 4 ++-- standalone/pom.xml | 2 +- 49 files changed, 50 insertions(+), 50 deletions(-) diff --git a/archetype/pom.xml b/archetype/pom.xml index 2786129edbd..d5568552d3c 100644 --- a/archetype/pom.xml +++ b/archetype/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Archetype diff --git a/client/cli/pom.xml b/client/cli/pom.xml index b5735409a23..fa6e94739f0 100644 --- a/client/cli/pom.xml +++ b/client/cli/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Client CLI diff --git a/client/console/pom.xml b/client/console/pom.xml index 3189aab5cd8..b89de7833c5 100644 --- a/client/console/pom.xml +++ b/client/console/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Client Console diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml index 164b3d1700c..900521be65a 100644 --- a/client/enduser/pom.xml +++ b/client/enduser/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Client Enduser diff --git a/client/lib/pom.xml b/client/lib/pom.xml index b2784579e55..460fb8ba80f 100644 --- a/client/lib/pom.xml +++ b/client/lib/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-client - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Client Lib diff --git a/client/pom.xml b/client/pom.xml index f09bfb8fa02..22dc99cdc41 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Client diff --git a/common/lib/pom.xml b/common/lib/pom.xml index c592ea30339..9f007b2fb1b 100644 --- a/common/lib/pom.xml +++ b/common/lib/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-common - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Common Lib diff --git a/common/pom.xml b/common/pom.xml index cb790460fdf..cbd5ece36c9 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Common diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml index f578d7a48cb..7c7ba592540 100644 --- a/common/rest-api/pom.xml +++ b/common/rest-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-common - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Common REST API diff --git a/core/logic/pom.xml b/core/logic/pom.xml index 6ae72e017c7..59b5e01cedb 100644 --- a/core/logic/pom.xml +++ b/core/logic/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Logic diff --git a/core/migration/pom.xml b/core/migration/pom.xml index 29f53695cd9..b7fff523eae 100644 --- a/core/migration/pom.xml +++ b/core/migration/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Migration diff --git a/core/persistence-api/pom.xml b/core/persistence-api/pom.xml index e685881aa7a..f46df222b84 100644 --- a/core/persistence-api/pom.xml +++ b/core/persistence-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Persistence API diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml index c6c14414c1a..5dfd6e97be1 100644 --- a/core/persistence-jpa/pom.xml +++ b/core/persistence-jpa/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Persistence JPA diff --git a/core/pom.xml b/core/pom.xml index f65d8846884..bd3b890af14 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core diff --git a/core/provisioning-api/pom.xml b/core/provisioning-api/pom.xml index 7a2dffce6b7..e6aacf4f3fb 100644 --- a/core/provisioning-api/pom.xml +++ b/core/provisioning-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Provisioning API diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml index 47f856f0f46..f5d38029010 100644 --- a/core/provisioning-java/pom.xml +++ b/core/provisioning-java/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Provisioning Java diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml index 4fe1849b84c..41a84874755 100644 --- a/core/rest-cxf/pom.xml +++ b/core/rest-cxf/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core REST CXF diff --git a/core/spring/pom.xml b/core/spring/pom.xml index 9d89e3c632c..df2871b9b26 100644 --- a/core/spring/pom.xml +++ b/core/spring/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Spring diff --git a/core/workflow-activiti/pom.xml b/core/workflow-activiti/pom.xml index a4dd8892d44..d762549482d 100644 --- a/core/workflow-activiti/pom.xml +++ b/core/workflow-activiti/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Workflow Activiti diff --git a/core/workflow-api/pom.xml b/core/workflow-api/pom.xml index c355deceeb9..5b16654e585 100644 --- a/core/workflow-api/pom.xml +++ b/core/workflow-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Workflow API diff --git a/core/workflow-java/pom.xml b/core/workflow-java/pom.xml index fcfe6c76482..e7cba57ca2c 100644 --- a/core/workflow-java/pom.xml +++ b/core/workflow-java/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-core - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Core Workflow Java diff --git a/deb/console/pom.xml b/deb/console/pom.xml index 961ae1dd8f8..eff23f4a44a 100644 --- a/deb/console/pom.xml +++ b/deb/console/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-deb - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Deb Console diff --git a/deb/core/pom.xml b/deb/core/pom.xml index 9467fa23b6e..725e1349557 100644 --- a/deb/core/pom.xml +++ b/deb/core/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-deb - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Deb Core diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml index b140068324e..d2a5dc68724 100644 --- a/deb/enduser/pom.xml +++ b/deb/enduser/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-deb - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Deb Enduser diff --git a/deb/pom.xml b/deb/pom.xml index a279a7196ab..c22f1b98870 100644 --- a/deb/pom.xml +++ b/deb/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Deb diff --git a/ext/camel/client-console/pom.xml b/ext/camel/client-console/pom.xml index eb2eb9a6052..15c43a4d458 100644 --- a/ext/camel/client-console/pom.xml +++ b/ext/camel/client-console/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Client Console diff --git a/ext/camel/common-lib/pom.xml b/ext/camel/common-lib/pom.xml index ba20c5d2024..30854c62e19 100644 --- a/ext/camel/common-lib/pom.xml +++ b/ext/camel/common-lib/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Common Lib diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml index fc2889eaa45..2a97dd5124f 100644 --- a/ext/camel/logic/pom.xml +++ b/ext/camel/logic/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Logic diff --git a/ext/camel/persistence-api/pom.xml b/ext/camel/persistence-api/pom.xml index 8e610e2f66e..86e53c004cd 100644 --- a/ext/camel/persistence-api/pom.xml +++ b/ext/camel/persistence-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Persistence API diff --git a/ext/camel/persistence-jpa/pom.xml b/ext/camel/persistence-jpa/pom.xml index 61307db1069..02e7af105f0 100644 --- a/ext/camel/persistence-jpa/pom.xml +++ b/ext/camel/persistence-jpa/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Persistence JPA diff --git a/ext/camel/pom.xml b/ext/camel/pom.xml index 571259ee2ae..3bd4c408986 100644 --- a/ext/camel/pom.xml +++ b/ext/camel/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-ext - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel diff --git a/ext/camel/provisioning-api/pom.xml b/ext/camel/provisioning-api/pom.xml index 7a56acedaf2..ee0456dee8c 100644 --- a/ext/camel/provisioning-api/pom.xml +++ b/ext/camel/provisioning-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Provisioning API diff --git a/ext/camel/provisioning-camel/pom.xml b/ext/camel/provisioning-camel/pom.xml index 33ed288571d..e1e248360ff 100644 --- a/ext/camel/provisioning-camel/pom.xml +++ b/ext/camel/provisioning-camel/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel Provisioning diff --git a/ext/camel/rest-api/pom.xml b/ext/camel/rest-api/pom.xml index c3034bcb5a2..68ada795e9d 100644 --- a/ext/camel/rest-api/pom.xml +++ b/ext/camel/rest-api/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel REST API diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml index e4833a3921c..5811d4a9af3 100644 --- a/ext/camel/rest-cxf/pom.xml +++ b/ext/camel/rest-cxf/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ext syncope-ext-camel - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Camel REST CXF diff --git a/ext/pom.xml b/ext/pom.xml index f532de8cddc..25593dd72aa 100644 --- a/ext/pom.xml +++ b/ext/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions diff --git a/ext/swagger-ui/pom.xml b/ext/swagger-ui/pom.xml index 90ba4bd1790..0f43343fb66 100644 --- a/ext/swagger-ui/pom.xml +++ b/ext/swagger-ui/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-ext - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Extensions: Swagger UI diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml index 061bddaf6aa..bb68ba2a208 100644 --- a/fit/build-tools/pom.xml +++ b/fit/build-tools/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope FIT Build Tools diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml index a4cada4d94e..fc4decf042d 100644 --- a/fit/console-reference/pom.xml +++ b/fit/console-reference/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope FIT Console Reference diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml index 9beea42a234..75f36845c1f 100644 --- a/fit/core-reference/pom.xml +++ b/fit/core-reference/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope FIT Core Reference diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml index 4960fea71de..ccd11f75983 100644 --- a/fit/enduser-reference/pom.xml +++ b/fit/enduser-reference/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-fit - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope FIT Enduser Reference diff --git a/fit/pom.xml b/fit/pom.xml index 2819085e1dd..25c34668b35 100644 --- a/fit/pom.xml +++ b/fit/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope FIT diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml index f415bc5470e..322502a8ff4 100644 --- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml +++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ide syncope-ide-eclipse - 2.0.1 + 2.0.2-SNAPSHOT ../../ diff --git a/ide/eclipse/pom.xml b/ide/eclipse/pom.xml index 3b5b2fdb5a1..6ad27cdddc9 100644 --- a/ide/eclipse/pom.xml +++ b/ide/eclipse/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope-ide - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope IDE Eclipse diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml index e1e8e82f057..f74e7f333df 100644 --- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml +++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope.ide syncope-ide-eclipse - 2.0.1 + 2.0.2-SNAPSHOT ../../ diff --git a/ide/pom.xml b/ide/pom.xml index c7e87a4173a..77c4bd76a6f 100644 --- a/ide/pom.xml +++ b/ide/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope IDE diff --git a/installer/pom.xml b/installer/pom.xml index e98e02501b2..7e7ddceb852 100644 --- a/installer/pom.xml +++ b/installer/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Installer diff --git a/pom.xml b/pom.xml index ed683abbe01..bb8b3114a49 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT pom @@ -52,7 +52,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git https://git-wip-us.apache.org/repos/asf?p=syncope.git - syncope-2.0.1 + HEAD diff --git a/standalone/pom.xml b/standalone/pom.xml index 0fae0965ead..cf3e4d18a96 100644 --- a/standalone/pom.xml +++ b/standalone/pom.xml @@ -24,7 +24,7 @@ under the License. org.apache.syncope syncope - 2.0.1 + 2.0.2-SNAPSHOT Apache Syncope Standalone Distribution From 1069e7e7deb570b50d365d278066e59dac114bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 21 Oct 2016 11:03:05 +0200 Subject: [PATCH 070/106] Updating Eclipse files for next development iteration --- .../org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF | 2 +- .../org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF | 2 +- .../releng/org.apache.syncope.ide.eclipse.site/category.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF index 2e4fa975f85..6f3ba7344c5 100644 --- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF +++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Apache Syncope Eclipse Plugin Bundle-SymbolicName: org.apache.syncope.ide.eclipse.plugin;singleton:=true -Bundle-Version: 2.0.1 +Bundle-Version: 2.0.2.qualifier Bundle-Activator: org.apache.syncope.ide.eclipse.plugin.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF index 219d1fa0145..3c5b50b4c27 100644 --- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF +++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: org.apache.syncope.ide.eclipse.tests Bundle-SymbolicName: org.apache.syncope.ide.eclipse.tests;singleton:=true -Bundle-Version: 2.0.1 +Bundle-Version: 2.0.2.qualifier Bundle-ActivationPolicy: lazy Bundle-Vendor: Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml index b225937bb8d..1e70f4448d1 100644 --- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml +++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml @@ -18,7 +18,7 @@ specific language governing permissions and limitations under the License. --> - + From 2ace913c134d0df35c2a553e7e207b2df4ceae28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Tue, 25 Oct 2016 13:07:39 +0200 Subject: [PATCH 071/106] Adding warning about suspended users and authentication.statuses --- .../systemadministration/configurationparameters.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc index 8a547a0fbac..0b33c93e066 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc @@ -41,6 +41,8 @@ processes, including <>; application) is allowed; * `passwordReset.securityQuestion` - whether the <> feature involves security questions; * `authentication.statuses` - the list of <> statuses for which users are allowed to authenticate; +[WARNING] +Suspended Users are anyway not allowed to authenticate. * `log.lastlogindate` - whether the system updates the `lastLoginDate` field of users upon authentication; * `tasks.interruptMaxRetries` - how many attempts shall be made when interrupting a running <>; * `return.password.value` - whether the hashed password value shall be returned when reading users; From 43fe9e87c91d4abd4a0e08e230ffc91eee4c9fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Tue, 25 Oct 2016 13:21:23 +0200 Subject: [PATCH 072/106] Some small fixes --- .../systemadministration/configurationparameters.adoc | 2 +- .../systemadministration/dbms.adoc | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc index 0b33c93e066..e28f4bc4382 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc @@ -46,7 +46,7 @@ Suspended Users are anyway not allowed to authenticate. * `log.lastlogindate` - whether the system updates the `lastLoginDate` field of users upon authentication; * `tasks.interruptMaxRetries` - how many attempts shall be made when interrupting a running <>; * `return.password.value` - whether the hashed password value shall be returned when reading users; -* `identity.recertification.day.interval` - number of days bewteen +* `identity.recertification.day.interval` - number of days between <>. Besides this default set, new configuration parameters can be defined to support <> code. diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/dbms.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/dbms.adoc index 596332102fb..4eb7eaf289f 100644 --- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/dbms.adoc +++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/dbms.adoc @@ -70,8 +70,13 @@ Master.username=syncope Master.password=syncope Master.databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB) Master.orm=META-INF/spring-orm.xml +Master.audit.sql=audit_mysql_innodb.sql .... +[WARNING] +This assumes that the InnoDB engine is enabled in your MySQL instance - if this is not the case, then change the value +for `Master.audit` to `audit.sql`. + [WARNING] This assumes that you have a MySQL instance running on localhost, listening on its default port 3306 with a database `syncope` fully accessible by user `syncope` with password `syncope`. @@ -124,6 +129,7 @@ Master.username=syncope Master.password=syncope Master.databasePlatform=org.apache.openjpa.jdbc.sql.OracleDictionary Master.orm=META-INF/spring-orm-oracle.xml +Master.audit.sql=audit_oracle.sql .... [WARNING] @@ -149,6 +155,7 @@ Master.username=syncope Master.password=syncope Master.databasePlatform=org.apache.openjpa.jdbc.sql.SQLServerDictionary Master.orm=META-INF/spring-orm-sqlserver.xml +Master.audit.sql=audit_sqlserver.sql .... [WARNING] From 1bc21e3eb330f44c490baf3448565b4fa6598308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Chicchiricc=C3=B2?= Date: Fri, 28 Oct 2016 13:05:53 +0200 Subject: [PATCH 073/106] [SYNCOPE-962] Initial changes --- .../client/console/pages/BasePage.java | 10 +- .../topology/TopologyWebSocketBehavior.java | 4 +- .../html/form/AjaxDropDownChoicePanel.java | 2 +- .../ws/api/SyncopeWebSocketBehavior.java | 93 +++++++++++++++++++ .../syncope/client/console/pages/Login.html | 3 +- .../console/pages/MustChangePassword.html | 3 +- .../console/panels/RealmChoicePanel.html | 2 +- .../markup/html/form/AbstractFieldPanel.html | 2 +- pom.xml | 8 +- 9 files changed, 109 insertions(+), 18 deletions(-) create mode 100644 client/console/src/main/java/org/apache/syncope/client/console/wicket/protocol/ws/api/SyncopeWebSocketBehavior.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 aa3014488cc..dc3f724c4dc 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 @@ -34,6 +34,7 @@ import org.apache.syncope.client.console.topology.Topology; import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem; import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal; +import org.apache.syncope.client.console.wicket.protocol.ws.api.SyncopeWebSocketBehavior; import org.apache.syncope.client.console.widgets.ApprovalsWidget; import org.apache.syncope.client.console.widgets.JobWidget; import org.apache.syncope.client.console.widgets.ReconciliationWidget; @@ -60,7 +61,6 @@ import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.protocol.ws.api.WebSocketBehavior; import org.apache.wicket.protocol.ws.api.message.ConnectedMessage; import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler; import org.apache.wicket.request.mapper.parameter.PageParameters; @@ -88,7 +88,7 @@ public BasePage(final PageParameters parameters) { super(parameters); // Native WebSocket - add(new WebSocketBehavior() { + add(new SyncopeWebSocketBehavior() { private static final long serialVersionUID = 3109256773218160485L; @@ -306,9 +306,9 @@ public void onComponentTag(final Component component, final ComponentTag tag) { } // Extensions - ClassPathScanImplementationLookup classPathScanImplementationLookup - = (ClassPathScanImplementationLookup) SyncopeConsoleApplication.get(). - getServletContext().getAttribute(ConsoleInitializer.CLASSPATH_LOOKUP); + ClassPathScanImplementationLookup classPathScanImplementationLookup = + (ClassPathScanImplementationLookup) SyncopeConsoleApplication.get(). + getServletContext().getAttribute(ConsoleInitializer.CLASSPATH_LOOKUP); List> extPageClasses = classPathScanImplementationLookup.getExtPageClasses(); WebMarkupContainer extensionsLI = new WebMarkupContainer(getLIContainerId("extensions")); diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyWebSocketBehavior.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyWebSocketBehavior.java index 634633238c0..def404e3b52 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyWebSocketBehavior.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyWebSocketBehavior.java @@ -28,18 +28,18 @@ import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.rest.ConnectorRestClient; import org.apache.syncope.client.console.rest.ResourceRestClient; +import org.apache.syncope.client.console.wicket.protocol.ws.api.SyncopeWebSocketBehavior; import org.apache.syncope.common.lib.to.ConnInstanceTO; import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.wicket.Application; import org.apache.wicket.Session; import org.apache.wicket.ThreadContext; -import org.apache.wicket.protocol.ws.api.WebSocketBehavior; import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler; import org.apache.wicket.protocol.ws.api.message.TextMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TopologyWebSocketBehavior extends WebSocketBehavior { +public class TopologyWebSocketBehavior extends SyncopeWebSocketBehavior { private static final long serialVersionUID = -1653665542635275551L; diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java index 6b9696fe50e..4fbc518d3bd 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java @@ -45,7 +45,7 @@ public AjaxDropDownChoicePanel( super(id, name, model); field = new BootstrapSelect<>( - "dropDownChoiceField", model, Collections.emptyList(), new ChoiceRenderer()); + "dropDownChoiceField", model, Collections.emptyList(), new ChoiceRenderer<>()); add(field.setLabel(new Model<>(name)).setOutputMarkupId(true)); if (enableOnBlur) { diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/protocol/ws/api/SyncopeWebSocketBehavior.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/protocol/ws/api/SyncopeWebSocketBehavior.java new file mode 100644 index 00000000000..b104c77fb22 --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/protocol/ws/api/SyncopeWebSocketBehavior.java @@ -0,0 +1,93 @@ +/* + * 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.wicket.protocol.ws.api; + +import java.util.Map; +import org.apache.wicket.Component; +import org.apache.wicket.MetaDataKey; +import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; +import org.apache.wicket.protocol.ws.WebSocketSettings; +import org.apache.wicket.protocol.ws.api.WebSocketBehavior; +import org.apache.wicket.protocol.ws.api.WicketWebSocketJQueryResourceReference; +import org.apache.wicket.request.cycle.RequestCycle; +import org.apache.wicket.util.lang.Args; +import org.apache.wicket.util.lang.Generics; +import org.apache.wicket.util.template.PackageTextTemplate; + +/** + * Temporary work-around class for WICKET-6262. + */ +public abstract class SyncopeWebSocketBehavior extends WebSocketBehavior { + + private static final long serialVersionUID = -2137694236966234985L; + + private static final MetaDataKey IS_JAVA_SCRIPT_CONTRIBUTED = new MetaDataKey() { + + private static final long serialVersionUID = 3109256773218160485L; + + }; + + @Override + public void renderHead(final Component component, final IHeaderResponse response) { + RequestCycle cycle = component.getRequestCycle(); + if (cycle.find(IPartialPageRequestHandler.class) == null) { + Object contributed = cycle.getMetaData(IS_JAVA_SCRIPT_CONTRIBUTED); + if (contributed == null) { + cycle.setMetaData(IS_JAVA_SCRIPT_CONTRIBUTED, new Object()); + + response.render(JavaScriptHeaderItem.forReference(WicketWebSocketJQueryResourceReference.get())); + + PackageTextTemplate webSocketSetupTemplate = + new PackageTextTemplate(WicketWebSocketJQueryResourceReference.class, + "res/js/wicket-websocket-setup.js.tmpl"); + + Map variables = Generics.newHashMap(); + + // set falsy JS values for the non-used parameter + int pageId = component.getPage().getPageId(); + variables.put("pageId", pageId); + variables.put("resourceName", ""); + + WebSocketSettings webSocketSettings = WebSocketSettings.Holder.get(component.getApplication()); + + CharSequence baseUrl = getBaseUrl(webSocketSettings); + Args.notNull(baseUrl, "baseUrl"); + variables.put("baseUrl", baseUrl); + + CharSequence contextPath = getContextPath(webSocketSettings); + Args.notNull(contextPath, "contextPath"); + variables.put("contextPath", contextPath); + + // preserve the application name for JSR356 based impl + variables.put("applicationName", component.getApplication().getName()); + + CharSequence filterPrefix = getFilterPrefix(webSocketSettings); + Args.notNull(filterPrefix, "filterPrefix"); + variables.put("filterPrefix", filterPrefix); + + String webSocketSetupScript = webSocketSetupTemplate.asString(variables); + + response.render(OnDomReadyHeaderItem.forScript(webSocketSetupScript)); + } + } + } +} diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html index eb98bb8355d..68e92839d4b 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html @@ -55,8 +55,7 @@ -
+
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/success.html b/client/enduser/src/main/resources/META-INF/resources/app/views/success.html index 994ad1b5b96..1be0c9a93de 100644 --- a/client/enduser/src/main/resources/META-INF/resources/app/views/success.html +++ b/client/enduser/src/main/resources/META-INF/resources/app/views/success.html @@ -20,7 +20,7 @@