[2/2] syncope git commit: [SYNCOPE-862] Adjusting one failing test

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Adjusting one failing test


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

Branch: refs/heads/master
Commit: bcc33d296a3504595285079a195e8fe01fbd98d0
Parents: 9706adc
Author: Francesco Chicchiriccò 
Authored: Wed Jun 15 08:35:30 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Wed Jun 15 08:35:30 2016 +0200

--
 .../test/java/org/apache/syncope/fit/core/VirAttrITCase.java | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/bcc33d29/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
index 37fc276..b6ae443 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
@@ -451,9 +451,9 @@ public class VirAttrITCase extends AbstractITCase {
 
 @Test
 public void issueSYNCOPE453() {
-String resourceName = "issueSYNCOPE453-Res-" + getUUIDString();
+String resourceName = "issueSYNCOPE453Res" + getUUIDString();
 String groupKey = null;
-String groupName = "issueSYNCOPE453-Group-" + getUUIDString();
+String groupName = "issueSYNCOPE453Group" + getUUIDString();
 
 try {
 // ---
@@ -518,7 +518,7 @@ public class VirAttrITCase extends AbstractITCase {
 
 item = new MappingItemTO();
 item.setExtAttrName("EMAIL");
-item.setIntAttrName("rvirtualdata");
+item.setIntAttrName("groups[" + groupName + "].rvirtualdata");
 item.setPurpose(MappingPurpose.PROPAGATION);
 mapping.getItems().add(item);
 
@@ -565,6 +565,8 @@ public class VirAttrITCase extends AbstractITCase {
 
assertEquals(userTO.getPlainAttrMap().get("fullname").getValues().get(0), 
actuals.get("id").toString());
 assertEquals("m...@group.it", actuals.get("email"));
 // ---
+} catch(Exception e) {
+LOG.error("Unexpected error", e);
 } finally {
 // ---
 // Delete resource and group ad-hoc



[1/2] syncope git commit: [SYNCOPE-862] Updating conf migration from 1.2

2016-06-14 Thread ilgrosso
Repository: syncope
Updated Branches:
  refs/heads/master 89ae8b0fa -> bcc33d296


[SYNCOPE-862] Updating conf migration from 1.2


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

Branch: refs/heads/master
Commit: 9706adc12e046a2a29e724eda621ab5844bcf737
Parents: 89ae8b0
Author: Francesco Chicchiriccò 
Authored: Wed Jun 15 08:07:28 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Wed Jun 15 08:07:28 2016 +0200

--
 .../cli/commands/migrate/MigrateConf.java   | 85 
 client/cli/src/test/resources/schema20.sql  | 43 +-
 2 files changed, 74 insertions(+), 54 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/9706adc1/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
--
diff --git 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
index e3110b9..db4d533 100644
--- 
a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
+++ 
b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
@@ -89,43 +89,40 @@ public class MigrateConf {
 return value;
 }
 
-private static String toNewIntMappingType(final String oldIntMappingType) {
-String newIntMappingType;
-switch (oldIntMappingType) {
+private static void writeIntAttrName(
+final String intMappingType,
+final String intAttrNameKey,
+final String intAttrNameValue,
+final XMLStreamWriter writer)
+throws XMLStreamException {
+
+switch (intMappingType) {
 case "UserId":
-newIntMappingType = "UserKey";
+case "RoleId":
+writer.writeAttribute(intAttrNameKey, "key");
 break;
 
-case "UserSchema":
-case "MembershipSchema":
-newIntMappingType = "UserPlainSchema";
+case "Username":
+writer.writeAttribute(intAttrNameKey, "username");
 break;
 
-case "MembershipDerivedSchema":
-newIntMappingType = "UserDerivedSchema";
-break;
-
-case "RoleId":
-newIntMappingType = "GroupKey";
+case "Password":
+writer.writeAttribute(intAttrNameKey, "password");
 break;
 
 case "RoleName":
-newIntMappingType = "GroupName";
+writer.writeAttribute(intAttrNameKey, "name");
 break;
 
 case "RoleOwnerSchema":
-newIntMappingType = "GroupOwnerSchema";
-break;
-
-case "RoleSchema":
-newIntMappingType = "RolePlainSchema";
+writer.writeAttribute(intAttrNameKey, "userOwner");
 break;
 
 default:
-newIntMappingType = oldIntMappingType;
+if (StringUtils.isNotBlank(intAttrNameValue)) {
+writer.writeAttribute(intAttrNameKey, intAttrNameValue);
+}
 }
-
-return newIntMappingType;
 }
 
 private static void exec(final String src, final String dst) throws 
XMLStreamException, IOException {
@@ -505,15 +502,23 @@ public class MigrateConf {
 String uIntMappingType = getAttributeValue(reader, 
"intMappingType");
 if (uIntMappingType.endsWith("VirtualSchema")) {
 reporter.writeStartElement("MappingItem");
-copyAttrs(reader, reporter, "accountid");
+copyAttrs(reader, reporter, "accountid", 
"intMappingType");
 reporter.writeEndElement();
 } else {
 writer.writeStartElement("MappingItem");
-copyAttrs(reader, writer, "accountid", 
"intMappingType", "mapping_id");
+copyAttrs(reader, writer,
+"accountid", "intMappingType", 
"mapping_id", "intMappingType", "intAttrName");
 writer.writeAttribute("id", 
UUID.randomUUID().toString());
-writer.writeAttribute("mapping_id", 
mappings.get(getAttributeValue(reader, "mapping_id")));
-writer.writeAttribute("intMappingType", 
toNewIntMappingType(uIntMappingType)

[05/13] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
Unique schema key across the three tables


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

Branch: refs/heads/master
Commit: 85dd9063d5b7ac1692c8a2dcedbdd210b435d63d
Parents: 50f5a66
Author: Francesco Chicchiriccò 
Authored: Thu Jun 9 18:20:30 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 18:21:53 2016 +0200

--
 .../notification/NotificationResultManager.java |   1 -
 .../resource/ResourceResultManager.java |   1 -
 .../syncope/common/lib/EntityTOUtils.java   |  18 -
 .../lib/policy/DefaultAccountRuleConf.java  |   7 +-
 .../lib/policy/DefaultPasswordRuleConf.java |   7 +-
 .../common/lib/report/GroupReportletConf.java   |   9 +-
 .../syncope/common/lib/report/Schema.java   |   7 +-
 .../common/lib/report/UserReportletConf.java|   9 +-
 .../common/lib/search/SearchableFields.java |  17 +
 .../syncope/common/lib/to/MappingItemTO.java|  14 -
 .../apache/syncope/common/lib/to/MappingTO.java |  12 -
 .../syncope/common/lib/to/NotificationTO.java   |  11 -
 .../common/lib/types/EntityViolationType.java   |   2 +-
 .../common/lib/types/IntMappingType.java| 203 
 .../api/dao/ExternalResourceDAO.java|   3 +-
 .../core/persistence/api/entity/AnyUtils.java   |   9 +-
 .../api/entity/LinkingMappingItem.java  |  21 -
 .../persistence/api/entity/Notification.java|   5 -
 .../api/entity/resource/MappingItem.java|   5 -
 .../api/search/SearchCondVisitor.java   |   4 +-
 .../persistence/jpa/dao/JPADerSchemaDAO.java|   8 +-
 .../jpa/dao/JPAExternalResourceDAO.java |  10 +-
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  |   2 +-
 .../persistence/jpa/dao/JPAVirSchemaDAO.java|  11 +-
 .../persistence/jpa/entity/AbstractSchema.java  |  40 ++
 .../persistence/jpa/entity/JPAAnyUtils.java | 131 +++--
 .../persistence/jpa/entity/JPADerSchema.java|   8 +-
 .../persistence/jpa/entity/JPANotification.java |  15 -
 .../persistence/jpa/entity/JPAPlainSchema.java  |   6 +-
 .../persistence/jpa/entity/JPAVirSchema.java|   8 +-
 .../entity/anyobject/JPAAPlainAttrValue.java|   3 -
 .../jpa/entity/conf/JPACPlainAttrValue.java |   3 -
 .../jpa/entity/group/JPAGPlainAttrValue.java|   3 -
 .../jpa/entity/resource/JPAMapping.java |  23 +-
 .../jpa/entity/resource/JPAMappingItem.java |  50 +-
 .../jpa/entity/user/JPAUPlainAttrValue.java |   3 -
 .../validation/entity/AbstractValidator.java|   2 +-
 .../jpa/validation/entity/DomainValidator.java  |  12 +-
 .../entity/ExternalResourceValidator.java   |  64 +--
 .../validation/entity/PlainSchemaValidator.java |  36 +-
 .../entity/RelationshipTypeValidator.java   |   4 +-
 .../jpa/validation/entity/RoleValidator.java|   6 +-
 .../validation/entity/SchemaKeyValidator.java   |  62 +--
 .../main/resources/domains/MasterContent.xml|  17 +-
 .../core/persistence/jpa/inner/ConfTest.java|   2 +-
 .../persistence/jpa/inner/DerSchemaTest.java|   2 +-
 .../persistence/jpa/inner/NotificationTest.java |   4 -
 .../persistence/jpa/inner/PlainSchemaTest.java  |   7 +-
 .../persistence/jpa/inner/ResourceTest.java |  30 +-
 .../persistence/jpa/inner/VirSchemaTest.java|   2 +-
 .../persistence/jpa/outer/PlainSchemaTest.java  |  24 +
 .../persistence/jpa/outer/ResourceTest.java |   5 -
 .../persistence/jpa/outer/VirSchemaTest.java|   2 -
 .../test/resources/domains/MasterContent.xml| 187 ---
 .../src/test/resources/domains/TwoContent.xml   |  11 +
 .../provisioning/api/IntAttrNameParser.java | 140 ++
 .../core/provisioning/api/MappingManager.java   |   8 +-
 .../provisioning/java/MappingManagerImpl.java   | 501 +--
 .../java/data/AbstractAnyDataBinder.java|  16 +-
 .../java/data/NotificationDataBinderImpl.java   |   9 +
 .../java/data/ResourceDataBinderImpl.java   |  76 +--
 .../notification/NotificationManagerImpl.java   |  76 +--
 .../provisioning/java/pushpull/PullUtils.java   | 126 ++---
 .../java/ResourceDataBinderTest.java|   2 -
 .../syncope/fit/core/ConfigurationITCase.java   |   2 +-
 .../syncope/fit/core/ConnectorITCase.java   |   2 -
 .../syncope/fit/core/DerSchemaITCase.java   |   2 +-
 .../apache/syncope/fit/core/GroupITCase.java|   3 -
 .../syncope/fit/core/MigrationITCase.java   |  17 -
 .../syncope/fit/core/MultitenancyITCase.java|   7 +-
 .../syncope/fit/core/NotificationITCase.java|   2 -
 .../fit/core/NotificationTaskITCase.java|   3 -
 .../syncope/fit/core/PlainSchemaITCase.java |   4 +-
 .../apache/syncope/fit/core/PushTaskITCase.java |   3 -
 .../apache/syncope/fit/core/ResourceITCase.java |  36 +-
 .../apac

[07/13] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/0f738186/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index 60be1fe..5280c3c 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -27,6 +27,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.persistence.NoResultException;
 import javax.persistence.Query;
 import javax.persistence.TypedQuery;
 import org.apache.commons.collections4.CollectionUtils;
@@ -40,6 +41,7 @@ import 
org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
@@ -124,6 +126,38 @@ public class JPAAnyObjectDAO extends 
AbstractAnyDAO implements AnyObj
 }
 
 @Override
+public AnyObject findByName(final String name) {
+TypedQuery query = entityManager().createQuery(
+"SELECT e FROM " + JPAAnyObject.class.getSimpleName() + " e 
WHERE e.name = :name", AnyObject.class);
+query.setParameter("name", name);
+
+AnyObject result = null;
+try {
+result = query.getSingleResult();
+} catch (NoResultException e) {
+LOG.debug("No any object found with name {}", name, e);
+}
+
+return result;
+}
+
+@Override
+public AnyObject authFindByName(final String name) {
+if (name == null) {
+throw new NotFoundException("Null name");
+}
+
+AnyObject anyObject = findByName(name);
+if (anyObject == null) {
+throw new NotFoundException("Any Object " + name);
+}
+
+securityChecks(anyObject);
+
+return anyObject;
+}
+
+@Override
 public List findARelationships(final AnyObject anyObject) {
 TypedQuery query = entityManager().createQuery(
 "SELECT e FROM " + JPAARelationship.class.getSimpleName()

http://git-wip-us.apache.org/repos/asf/syncope/blob/0f738186/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
index 07e18e2..d1df518 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.persistence.jpa.dao;
 
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -40,9 +39,6 @@ public class JPAConfDAO extends AbstractDAO implements 
ConfDAO {
 @Autowired
 private PlainSchemaDAO schemaDAO;
 
-@Autowired
-private PlainAttrDAO attrDAO;
-
 @Override
 public Conf get() {
 Conf instance = entityManager().find(JPAConf.class, KEY);
@@ -96,8 +92,8 @@ public class JPAConfDAO extends AbstractDAO implements 
ConfDAO {
 if (old != null && (!attr.getSchema().isUniqueConstraint()
 || 
(!attr.getUniqueValue().getStringValue().equals(old.getUniqueValue().getStringValue()
 {
 
-instance.getPlainAttrs().remove(old);
-attrDAO.delete(old.getKey(), CPlainAttr.class);
+old.setOwner(null);
+instance.remove(old);
 }
 
 instance.add(attr);
@@ -111,8 +107,8 @@ public class JPAConfDAO extends AbstractDAO 
implements ConfDAO {
 Conf instance = get();
 CPlainAttr attr = instance.getPlainAttr(key);
 if (attr != null) {
-instance.getPlainAttrs().remove(attr);
-attrDAO.delete(attr.getKey(), CPlainAttr.class);
+

[03/13] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
--
diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml 
b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
index a24431e..3d8d0a5 100644
--- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
@@ -22,6 +22,7 @@ under the License.
 
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
@@ -73,6 +80,7 @@ under the License.
attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" 
stringValue="active"/>
 
   
+  
   
   
 
+  
   
   
   
   
+  
   
   
 
+  
   

http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
--
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
new file mode 100644
index 000..4beb5ce
--- /dev/null
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
@@ -0,0 +1,140 @@
+/*
+ * 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.provisioning.api;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.core.persistence.api.entity.AnyUtils;
+import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+
+public final class IntAttrNameParser {
+
+private static final Pattern ENCLOSING_GROUP_PATTERN = 
Pattern.compile("^groups\\[[\\w]+\\]\\.[\\w]+");
+
+private static final Pattern RELATED_ANY_OBJECT_PATTERN = 
Pattern.compile("^anyObjects\\[[\\w]+\\]\\.[\\w]+");
+
+private static final Pattern MEMBERSHIP_PATTERN = 
Pattern.compile("^\\[[\\w]+\\]\\.[\\w]+");
+
+public static class IntAttrName {
+
+private AnyTypeKind anyTypeKind;
+
+private String field;
+
+private SchemaType schemaType;
+
+private String schemaName;
+
+private String enclosingGroup;
+
+private String relatedAnyObject;
+
+private String membershipOfGroup;
+
+public AnyTypeKind getAnyTypeKind() {
+return anyTypeKind;
+}
+
+public String getField() {
+return field;
+}
+
+public SchemaType getSchemaType() {
+return schemaType;
+}
+
+public String getSchemaName() {
+return schemaName;
+}
+
+public String getEnclosingGroup() {
+return enclosingGroup;
+}
+
+public String getRelatedAnyObject() {
+return relatedAnyObject;
+}
+
+public String getMembershipOfGroup() {
+return membershipOfGroup;
+}
+
+@Override
+public String toString() {
+return ToStringBuilder.reflectionToString(field, 
ToStringStyle.MULTI_LINE_STYLE);
+}
+
+}
+
+private static void setFieldOrSchemaName(
+final String fieldOrSchemaName, final AnyUtils anyUtils, final 
IntAttrName result) {
+
+if (anyUtils.isFieldName(fieldOrSchemaName)) {
+result.field = fieldOrSchemaName;
+} else {
+result.schemaName = fieldOrSchemaName;
+}
+}
+
+public static IntAttrName parse(
+final String intAttrName,
+final AnyUtilsFactory anyUtilsFactory,
+final AnyTypeKind provisionAnyTypeKind) {
+
+IntAttrName result = new IntAttrName();
+
+if (intAttrName.indexOf('.') == -1) {
+result.anyTypeKind = provisionAnyTypeKind;
+  

[01/13] syncope git commit: Upgrading Tomcat

2016-06-14 Thread ilgrosso
Repository: syncope
Updated Branches:
  refs/heads/master 47cdb82e5 -> 89ae8b0fa


Upgrading Tomcat


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

Branch: refs/heads/master
Commit: 89ae8b0fa2f905be34b4e0b881bcce4027901658
Parents: d751777
Author: Francesco Chicchiriccò 
Authored: Tue Jun 14 18:21:25 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 18:21:53 2016 +0200

--
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/89ae8b0f/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 15be564..2a73c9b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -433,7 +433,7 @@ under the License.
 ${log.directory}/cargo.log
 ${log.directory}/cargo-output.log
 
-8.0.33
+8.5.3
 
 admin
 anonymous



[04/13] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
index 4bbb240..2817795 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
@@ -20,7 +20,6 @@ package 
org.apache.syncope.core.persistence.jpa.validation.entity;
 
 import javax.validation.ConstraintValidatorContext;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -29,37 +28,30 @@ public class PlainSchemaValidator extends 
AbstractValidatorhttp://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
index 8051bda..9953859 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
@@ -31,8 +31,8 @@ public class RelationshipTypeValidator extends 
AbstractValidatorhttp://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
index 29558a0..c1de34d 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
@@ -28,10 +28,10 @@ public class RoleValidator extends 
AbstractValidator {
 public boolean isValid(final Role role, final ConstraintValidatorContext 
context) {
 context.disableDefaultConstraintViolation();
 
-if (role.getKey() == null || 
!NAME_PATTERN.matcher(role.getKey()).matches()) {
+if (role.getKey() == null || 
!KEY_PATTERN.matcher(role.getKey()).matches()) {
 context.buildConstraintViolationWithTemplate(
-getTemplate(EntityViolationType.InvalidName, "Invalid Role 
name")).
-addPropertyNode("name").addConstraintViolation();
+getTemplate(EntityViolationType.InvalidKey, "Invalid role 
key")).
+addPropertyNode("key").addConstraintViolation();
 return false;
 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
index b4d00d5..8c71620 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
@@ -18,77 +18,37 @@
  */
 package org.apache.syncope.core.persistence.jpa.validation.entity;
 
-import java.lang.reflect.Field;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 import javax.validation.ConstraintValidatorContext;
-import org.apache.commons.lang3.ClassUtils;
 import org.apache.syncope.common.lib.types.EntityViolationType;

[06/13] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/0f738186/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
index b65cc79..67a821c 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
@@ -29,6 +29,7 @@ import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
@@ -48,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+@Transactional(readOnly = true)
 @Component
 public class VirAttrHandlerImpl implements VirAttrHandler {
 
@@ -122,7 +124,8 @@ public class VirAttrHandlerImpl implements VirAttrHandler {
 if (attr != null) {
 VirAttrCacheValue virAttrCacheValue = new 
VirAttrCacheValue();
 virAttrCacheValue.setValues(attr.getValue());
-virAttrCache.put(any.getType().getKey(), 
any.getKey(), schema.getKey(),
+virAttrCache.put(
+any.getType().getKey(), any.getKey(), 
schema.getKey(),
 virAttrCacheValue);
 LOG.debug("Values for {} set in cache: {}", 
schema, virAttrCacheValue);
 
@@ -139,10 +142,23 @@ public class VirAttrHandlerImpl implements VirAttrHandler 
{
 return result;
 }
 
-@Transactional(readOnly = true)
 @Override
 public List getValues(final Any any, final VirSchema schema) {
-if (!anyUtilsFactory.getInstance(any).getAllowedSchemas(any, 
VirSchema.class).contains(schema)) {
+if (!anyUtilsFactory.getInstance(any).
+getAllowedSchemas(any, 
VirSchema.class).forSelfContains(schema)) {
+
+LOG.debug("{} not allowed for {}", schema, any);
+return Collections.emptyList();
+}
+
+return ListUtils.emptyIfNull(getValues(any, 
Collections.singleton(schema)).get(schema));
+}
+
+@Override
+public List getValues(final Any any, final Membership 
membership, final VirSchema schema) {
+if (!anyUtilsFactory.getInstance(any).
+getAllowedSchemas(any, 
VirSchema.class).getForMembership(membership.getRightEnd()).contains(schema)) {
+
 LOG.debug("{} not allowed for {}", schema, any);
 return Collections.emptyList();
 }
@@ -150,9 +166,19 @@ public class VirAttrHandlerImpl implements VirAttrHandler {
 return ListUtils.emptyIfNull(getValues(any, 
Collections.singleton(schema)).get(schema));
 }
 
-@Transactional(readOnly = true)
 @Override
 public Map> getValues(final Any any) {
-return getValues(any, 
anyUtilsFactory.getInstance(any).getAllowedSchemas(any, VirSchema.class));
+return getValues(
+any,
+anyUtilsFactory.getInstance(any).getAllowedSchemas(any, 
VirSchema.class).getForSelf());
 }
+
+@Override
+public Map> getValues(final Any any, final 
Membership membership) {
+return getValues(
+any,
+anyUtilsFactory.getInstance(any).getAllowedSchemas(any, 
VirSchema.class).
+getForMembership(membership.getRightEnd()));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0f738186/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
--
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 a144d67..0ccbe14 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.ja

[09/13] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/d7517772/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
index a2c9271..4c44b7f 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.policy.PullPolicySpec;
-import org.apache.syncope.core.provisioning.java.MappingManagerImpl;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
@@ -47,8 +46,8 @@ import 
org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
+import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
@@ -63,6 +62,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.apache.syncope.core.provisioning.api.pushpull.PullCorrelationRule;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 
 @Transactional(readOnly = true)
 @Component
@@ -103,6 +103,9 @@ public class PullUtils {
 @Autowired
 private AnyUtilsFactory anyUtilsFactory;
 
+@Autowired
+private IntAttrNameParser intAttrNameParser;
+
 public String findMatchingAnyKey(
 final AnyType anyType,
 final String name,
@@ -127,7 +130,7 @@ public class PullUtils {
 public boolean handle(final ConnectorObject obj) {
 return found.add(obj);
 }
-}, 
MappingManagerImpl.buildOperationOptions(MappingManagerImpl.getPullMappingItems(provision).iterator()));
+}, 
MappingUtils.buildOperationOptions(MappingUtils.getPullMappingItems(provision).iterator()));
 
 if (found.isEmpty()) {
 LOG.debug("No {} found on {} with __NAME__ {}", 
provision.getObjectClass(), resource, name);
@@ -170,10 +173,10 @@ public class PullUtils {
 
 List result = new ArrayList<>();
 
-MappingItem connObjectKeyItem = 
MappingManagerImpl.getConnObjectKeyItem(provision);
+MappingItem connObjectKeyItem = 
MappingUtils.getConnObjectKeyItem(provision);
 
 String transfUid = uid;
-for (MappingItemTransformer transformer : 
MappingManagerImpl.getMappingItemTransformers(connObjectKeyItem)) {
+for (MappingItemTransformer transformer : 
MappingUtils.getMappingItemTransformers(connObjectKeyItem)) {
 List output = transformer.beforePull(
 connObjectKeyItem,
 null,
@@ -183,9 +186,8 @@ public class PullUtils {
 }
 }
 
-IntAttrName intAttrName = IntAttrNameParser.parse(
+IntAttrName intAttrName = intAttrNameParser.parse(
 connObjectKeyItem.getIntAttrName(),
-anyUtilsFactory,
 provision.getAnyType().getKind());
 
 if (intAttrName.getField() != null) {
@@ -214,6 +216,8 @@ public class PullUtils {
 result.add(anyObject.getKey());
 }
 break;
+
+default:
 }
 } else if (intAttrName.getSchemaType() != null) {
 switch (intAttrName.getSchemaType()) {
@@ -246,6 +250,8 @@ public class PullUtils {
 result.add(any.getKey());
 }
 break;
+
+default:
 }
 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/d7517772/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
---

[10/13] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/d7517772/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
index e2f793a..7d38624 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
@@ -21,24 +21,21 @@ package org.apache.syncope.core.provisioning.java;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.jexl3.JexlContext;
-import org.apache.commons.jexl3.MapContext;
-import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
 import 
org.apache.syncope.core.provisioning.api.utils.policy.InvalidPasswordRuleConf;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
@@ -48,53 +45,46 @@ import 
org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
 import org.apache.syncope.core.spring.security.Encryptor;
-import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
 import org.apache.syncope.core.spring.security.PasswordGenerator;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
+import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Schema;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import 
org.apache.syncope.core.persistence.api.entity.anyobject.APlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
-import 
org.apache.syncope.core.provisioning.java.data.JEXLMappingItemTransformer;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.identityconnectors.framework.common.FrameworkUtil;
 import org.

[12/13] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Features complete


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

Branch: refs/heads/master
Commit: d7517772baae1da11aa2364e2f2cbd52c9514715
Parents: 85dd906
Author: Francesco Chicchiriccò 
Authored: Tue Jun 14 17:57:42 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 18:21:53 2016 +0200

--
 .../client/console/commons/Constants.java   |  34 +-
 .../NotificationWizardBuilder.java  | 103 +--
 .../client/console/panels/BeanPanel.java|  60 +-
 .../console/panels/ConnObjectListViewPanel.java |   2 +-
 .../client/console/rest/SchemaRestClient.java   |   1 +
 .../client/console/wizards/any/Groups.java  |  11 +-
 .../console/wizards/any/Relationships.java  |  10 +-
 .../wizards/resources/ResourceMappingPanel.java | 317 --
 .../SyncopeConsoleApplication.properties|   1 +
 .../SyncopeConsoleApplication_it.properties |   1 +
 .../SyncopeConsoleApplication_pt_BR.properties  |   1 +
 .../SyncopeConsoleApplication_ru.properties |   1 +
 .../NotificationWizardBuilder$Details.html  |   3 -
 ...NotificationWizardBuilder$Details.properties |   3 +-
 ...ificationWizardBuilder$Details_it.properties |   3 +-
 ...cationWizardBuilder$Details_pt_BR.properties |   3 +-
 ...ificationWizardBuilder$Details_ru.properties |  14 +-
 .../NotificationWizardBuilder$Events.properties |   2 -
 ...tificationWizardBuilder$Events_it.properties |   2 -
 ...icationWizardBuilder$Events_pt_BR.properties |   2 -
 ...tificationWizardBuilder$Events_ru.properties |  52 +-
 .../console/pages/Notifications.properties  |   2 -
 .../console/pages/Notifications_it.properties   |   2 -
 .../pages/Notifications_pt_BR.properties|   2 -
 .../console/pages/Notifications_ru.properties   |  50 +-
 .../wizards/resources/ResourceMappingPanel.html |  19 +-
 .../resources/ResourceProvisionPanel.properties |   5 +-
 .../ResourceProvisionPanel_it.properties|   5 +-
 .../ResourceProvisionPanel_pt_BR.properties |   5 +-
 .../ResourceProvisionPanel_ru.properties|   6 +-
 .../syncope/common/lib/to/AnyObjectTO.java  |   2 +-
 .../common/lib/to/GroupableRelatableTO.java |  36 ++
 .../syncope/common/lib/to/GroupableTO.java  |  31 -
 .../syncope/common/lib/to/RelatableTO.java  |  30 -
 .../apache/syncope/common/lib/to/UserTO.java|   2 +-
 .../syncope/core/logic/ResourceLogic.java   |   6 +-
 .../logic/report/ReconciliationReportlet.java   |   6 +-
 .../core/persistence/api/dao/SchemaDAO.java |   2 +-
 .../persistence/jpa/entity/JPAAnyUtils.java |  11 +-
 .../jpa/entity/resource/JPAMappingItem.java |   4 +-
 .../entity/ExternalResourceValidator.java   | 102 +--
 .../persistence/jpa/inner/ResourceTest.java |  65 +-
 .../persistence/jpa/outer/ResourceTest.java |   1 +
 .../test/resources/domains/MasterContent.xml|  13 +-
 .../src/test/resources/domains/TwoContent.xml   |   4 +-
 .../core/provisioning/api/IntAttrName.java  | 103 +++
 .../provisioning/api/IntAttrNameParser.java | 140 -
 .../core/provisioning/api/MappingManager.java   |   7 +-
 .../api/data/MappingItemTransformer.java|   4 +-
 .../provisioning/java/ConnectorFacadeProxy.java |   5 +-
 .../provisioning/java/IntAttrNameParser.java| 120 
 .../provisioning/java/MappingManagerImpl.java   | 623 +++
 .../provisioning/java/VirAttrHandlerImpl.java   |   5 +-
 .../java/data/AbstractAnyDataBinder.java|  37 +-
 .../data/DefaultMappingItemTransformer.java |   2 +-
 .../java/data/JEXLMappingItemTransformer.java   |  46 +-
 .../java/data/NotificationDataBinderImpl.java   |   7 +-
 .../java/data/ResourceDataBinderImpl.java   |  60 +-
 .../java/data/UserDataBinderImpl.java   |   5 +-
 .../notification/NotificationManagerImpl.java   |  30 +-
 .../AbstractPropagationTaskExecutor.java|   6 +-
 .../propagation/PropagationManagerImpl.java |   4 +-
 .../pushpull/AbstractPushResultHandler.java |   4 +-
 .../pushpull/PlainAttrsPullCorrelationRule.java |   6 +-
 .../java/pushpull/PullJobDelegate.java  |  10 +-
 .../provisioning/java/pushpull/PullUtils.java   |  22 +-
 .../java/utils/ConnObjectUtils.java |   3 +-
 .../provisioning/java/utils/MappingUtils.java   | 239 +++
 .../src/main/resources/provisioningContext.xml  |   1 +
 .../java/IntAttrNameParserTest.java | 161 +
 .../core/provisioning/java/MappingTest.java |   5 +-
 .../reference/PrefixMappingItemTransformer.java |   4 +-
 .../fit/console/NotificationsITCase.java|  12 +-
 .../syncope/fit/console/TopologyITCase.java |  13 +-
 .../apache/syncope/fit/core/GroupITCase.java|  31 +-
 .../sy

[13/13] syncope git commit: Fixing OpenJPA warnings about 'Supplied parameters do not match expected parameters'

2016-06-14 Thread ilgrosso
Fixing OpenJPA warnings about 'Supplied parameters do not match expected 
parameters'


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

Branch: refs/heads/master
Commit: 50f5a66778f7f94692e02a9e16243584817356b1
Parents: 0f73818
Author: Francesco Chicchiriccò 
Authored: Wed Jun 1 18:52:42 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 18:21:53 2016 +0200

--
 .../persistence/jpa/dao/JPAAnyObjectDAO.java| 30 --
 .../core/persistence/jpa/dao/JPAUserDAO.java| 60 
 .../persistence/jpa/dao/JPAVirSchemaDAO.java| 45 +--
 .../persistence/jpa/outer/ResourceTest.java |  8 +--
 4 files changed, 115 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/50f5a667/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index 5280c3c..c527a15 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -56,6 +56,7 @@ import 
org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory;
 import 
org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership;
 import 
org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship;
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -211,12 +212,29 @@ public class JPAAnyObjectDAO extends 
AbstractAnyDAO implements AnyObj
 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)
 @Override
 public List findDynGroupMemberships(final AnyObject anyObject) {
-TypedQuery query = entityManager().createQuery(
-"SELECT e.group FROM " + 
JPAADynGroupMembership.class.getSimpleName()
-+ " e WHERE :anyObject MEMBER OF e.anyObjects", Group.class);
-query.setParameter("anyObject", anyObject);
-
-return query.getResultList();
+Query query = entityManager().createNativeQuery(
+"SELECT t2.id FROM " + JPAADynGroupMembership.TABLE + " t0 "
++ "INNER JOIN ADynGroupMembership_AnyObject t1 "
++ "ON t0.id = t1.aDynGroupMembership_id "
++ "LEFT OUTER JOIN " + JPAGroup.TABLE + " t2 "
++ "ON t0.GROUP_ID = t2.id "
++ "WHERE t1.anyObject_id = ?1");
+query.setParameter(1, anyObject.getKey());
+
+List result = new ArrayList<>();
+for (Object key : query.getResultList()) {
+String actualKey = key instanceof Object[]
+? (String) ((Object[]) key)[0]
+: ((String) key);
+
+Group group = groupDAO.find(actualKey);
+if (group == null) {
+LOG.error("Could not find group with id {}, even though 
returned by the native query", actualKey);
+} else if (!result.contains(group)) {
+result.add(group);
+}
+}
+return result;
 }
 
 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)

http://git-wip-us.apache.org/repos/asf/syncope/blob/50f5a667/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index 0624190..0cd53a0 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -66,6 +66,8 @@ import 
org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import o

[02/13] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
index 70d55ba..012acb9 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
@@ -30,7 +30,6 @@ import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.NotificationTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.service.NotificationService;
 import org.apache.syncope.fit.AbstractITCase;
@@ -51,7 +50,6 @@ public class NotificationITCase extends AbstractITCase {
 
is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query());
 
 notificationTO.setRecipientAttrName("email");
-notificationTO.setRecipientAttrType(IntMappingType.UserPlainSchema);
 
 notificationTO.setSender("sync...@syncope.apache.org");
 notificationTO.setSubject("Test notification");

http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
index 5493282..665d38b 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
@@ -46,7 +46,6 @@ import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.beans.ExecuteQuery;
@@ -322,7 +321,6 @@ public class NotificationTaskITCase extends 
AbstractTaskITCase {
 inGroups("f779c0d4-633b-4be5-8f57-32eb478a3ca5").query());
 notification.setSelfAsRecipient(false);
 notification.setRecipientAttrName("email");
-notification.setRecipientAttrType(IntMappingType.UserPlainSchema);
 notification.getStaticRecipients().add(MAIL_ADDRESS);
 
notification.setRecipientsProviderClassName(TestNotificationRecipientsProvider.class.getName());
 
@@ -395,7 +393,6 @@ public class NotificationTaskITCase extends 
AbstractTaskITCase {
 inGroups("f779c0d4-633b-4be5-8f57-32eb478a3ca5").query());
 notification.setSelfAsRecipient(true);
 notification.setRecipientAttrName("email");
-notification.setRecipientAttrType(IntMappingType.UserPlainSchema);
 if (staticRecipients != null) {
 CollectionUtils.addAll(notification.getStaticRecipients(), 
staticRecipients);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/85dd9063/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
index 3f9ac6d..36fe888 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
@@ -88,7 +88,7 @@ public class PlainSchemaITCase extends AbstractITCase {
 boolean entityViolationTypeCheck = false;
 for (String element : e.getElements()) {
 if (!entityViolationTypeCheck) {
-entityViolationTypeCheck = 
element.contains(EntityViolationType.InvalidName.name());
+entityViolationTypeCheck = 
element.contains(EntityViolationType.InvalidKey.name());
 }
 }
 assertTrue(entityViolationTypeCheck);
@@ -334,7 +334,7 @@ public class PlainSchemaITCase extends AbstractITCase {
 fail();
 } catch (SyncopeClientException e) {
 assertEquals(ClientExceptionType.InvalidPlainSchema, e.getTyp

[11/13] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/d7517772/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
--
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
index 302a798..46e6700 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
@@ -15,55 +15,51 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# notifications=Уведомления
+# 
notifications=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 
notifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f
-# notification.templates=Шаблоны
+# 
notification.templates=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd\u00d1\u008b
 notification.templates=\u0428\u0430\u0431\u043b\u043e\u043d\u044b
 
-# sender=Отправитель
+# 
sender=\u00d0\u009e\u00d1\u0082\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00b8\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008c
 sender=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c
-# template=Шаблон
+# 
template=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd
 template=\u0428\u0430\u0431\u043b\u043e\u043d
-# traceLevel=Логирование
+# 
traceLevel=\u00d0\u009b\u00d0\u00be\u00d0\u00b3\u00d0\u00b8\u00d1\u0080\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 traceLevel=\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
-# notification=Уведомление
+# 
notification=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 notification=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# about=Уведомление о
+# 
about=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 \u00d0\u00be
 about=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e
-# events=События
+# 
events=\u00d0\u00a1\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d1\u008f
 events=\u0421\u043e\u0431\u044b\u0442\u0438\u044f
-# selfAsRecipient=Включить в получатели 
пользователей, о которых рассылается 
уведомление
+# 
selfAsRecipient=\u00d0\u0092\u00d0\u00ba\u00d0\u00bb\u00d1\u008e\u00d1\u0087\u00d0\u00b8\u00d1\u0082\u00d1\u008c
 \u00d0\u00b2 
\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u0083\u00d1\u0087\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b8
 
\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9,
 \u00d0\u00be 
\u00d0\u00ba\u00d0\u00be\u00d1\u0082\u00d0\u00be\u00d1\u0080\u00d1\u008b\u00d1\u0085
 
\u00d1\u0080\u00d0\u00b0\u00d1\u0081\u00d1\u0081\u00d1\u008b\u00d0\u00bb\u00d0\u00b0\u00d0\u00b5\u00d1\u0082\u00d1\u0081\u00d1\u008f
 
\u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 selfAsRecipient=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 
\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, 
\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 
\u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f 
\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# recipientAttrType=Тип атрибута с адресом 
электронной почты получателей
-recipientAttrType=\u0422\u0438\u043f 
\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 
\u0430\u0434\u0440\u0435\u0441\u043e\u043c 
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 
\u043f\u043e\u0447\u0442\u044b 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# recipientAttrName=Наименование атрибута с 
адресом электронной почты получателей
-recipientAttrName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435
 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 
\u0430\u0434\u0440\u0435\u0441\u043e\u043c 
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 
\u043f\u043e\u0447\u0442\u044b 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# checkRecipients=Поиск полу

[syncope] Git Push Summary

2016-06-14 Thread ilgrosso
Repository: syncope
Updated Branches:
  refs/heads/SYNCOPE-862 [deleted] 8e162494e


[08/13] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Preliminary work


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

Branch: refs/heads/master
Commit: 0f738186c95c51e3aa861babc34f28d0627e773a
Parents: 47cdb82
Author: Francesco Chicchiriccò 
Authored: Tue May 31 17:59:00 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 18:21:53 2016 +0200

--
 .../AnyObjectDisplayAttributesModalPanel.java   |   2 +-
 .../html/repeater/data/table/AttrColumn.java|  19 +-
 .../data/table/ConnObjectAttrColumn.java|  63 +
 .../console/wizards/any/AnyObjectDetails.java   |  53 
 .../wizards/any/AnyObjectWizardBuilder.java |  22 +-
 .../console/wizards/any/AnyWizardBuilder.java   |   3 -
 .../console/wizards/any/ConnObjectPanel.java|   4 +-
 .../console/wizards/any/GroupDetails.java   |   4 +-
 .../client/console/wizards/any/Groups.java  |   1 -
 .../wizards/resources/ResourceMappingPanel.java |   1 +
 .../console/wizards/any/AnyObjectDetails.html   |  25 ++
 .../syncope/common/lib/AnyOperations.java   |  90 +--
 .../common/lib/patch/AnyObjectPatch.java|  10 +
 .../syncope/common/lib/patch/AnyPatch.java  |  10 +-
 .../common/lib/patch/AttributablePatch.java |  38 +++
 .../common/lib/patch/MembershipPatch.java   |  33 ++-
 .../syncope/common/lib/to/AnyObjectTO.java  |  10 +
 .../org/apache/syncope/common/lib/to/AnyTO.java |  34 ++-
 .../syncope/common/lib/to/AttributableTO.java   |  53 
 .../syncope/common/lib/to/ConnObjectTO.java |   9 +-
 .../syncope/common/lib/to/MembershipTO.java |  75 +-
 .../syncope/common/lib/to/RelationshipTO.java   |  26 --
 .../common/lib/types/EntityViolationType.java   |   4 +-
 .../common/lib/types/IntMappingType.java|   8 +-
 .../persistence/api/dao/AllowedSchemas.java | 114 +
 .../core/persistence/api/dao/AnyDAO.java|   3 +-
 .../core/persistence/api/dao/AnyObjectDAO.java  |   4 +
 .../core/persistence/api/entity/Any.java|   2 +
 .../core/persistence/api/entity/AnyUtils.java   |   3 +-
 .../api/entity/GroupablePlainAttr.java  |  26 ++
 .../api/entity/GroupableRelatable.java  | 100 
 .../api/entity/anyobject/APlainAttr.java|   4 +-
 .../api/entity/anyobject/AnyObject.java |  24 +-
 .../persistence/api/entity/user/UPlainAttr.java |   4 +-
 .../core/persistence/api/entity/user/User.java  |  32 +--
 .../persistence/jpa/dao/AbstractAnyDAO.java |  56 +++--
 .../persistence/jpa/dao/JPAAnyObjectDAO.java|  34 +++
 .../core/persistence/jpa/dao/JPAConfDAO.java|  12 +-
 .../core/persistence/jpa/dao/JPAGroupDAO.java   |  32 ++-
 .../persistence/jpa/dao/JPAPlainAttrDAO.java|   2 +-
 .../persistence/jpa/entity/AbstractAny.java |  28 ---
 .../jpa/entity/AbstractGroupableRelatable.java  | 158 
 .../persistence/jpa/entity/JPAAnyUtils.java |  13 +-
 .../jpa/entity/anyobject/JPAAPlainAttr.java |  22 +-
 .../jpa/entity/anyobject/JPAAnyObject.java  |  95 +++
 .../persistence/jpa/entity/conf/JPAConf.java|   8 +-
 .../jpa/entity/group/JPAGPlainAttr.java |   4 +-
 .../persistence/jpa/entity/group/JPAGroup.java  |  45 +++-
 .../jpa/entity/resource/JPAMappingItem.java |   4 +
 .../jpa/entity/user/JPAUPlainAttr.java  |  22 +-
 .../persistence/jpa/entity/user/JPAUser.java|  73 ++
 .../jpa/validation/entity/AnyValidator.java |  55 ++--
 .../entity/EntityValidationListener.java|   5 +-
 .../entity/PlainAttrValueValidator.java |   2 +-
 .../persistence/jpa/inner/AnyObjectTest.java|   1 +
 .../persistence/jpa/inner/PlainAttrTest.java|   2 +-
 .../core/persistence/jpa/outer/ConfTest.java|  72 ++
 .../core/persistence/jpa/outer/GroupTest.java   |   1 +
 .../core/persistence/jpa/outer/UserTest.java|  91 ++-
 .../test/resources/domains/MasterContent.xml|  11 +-
 .../core/provisioning/api/DerAttrHandler.java   |  23 +-
 .../core/provisioning/api/VirAttrHandler.java   |  28 ++-
 .../provisioning/java/DerAttrHandlerImpl.java   |  32 ++-
 .../provisioning/java/MappingManagerImpl.java   |  20 ++
 .../provisioning/java/VirAttrHandlerImpl.java   |  36 ++-
 .../java/data/AbstractAnyDataBinder.java| 248 ---
 .../java/data/AnyObjectDataBinderImpl.java  | 115 +++--
 .../java/data/GroupDataBinderImpl.java  |   6 +-
 .../java/data/UserDataBinderImpl.java   |  90 +--
 .../java/job/SetUMembershipsJob.java|   3 +-
 .../provisioning/java/pushpull/PullUtils.java   |   8 +
 .../java/utils/ConnObjectUtils.java |   2 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   2 +-
 fit/build-tools/src/main/resources/testdb.sql   |   1 +

syncope git commit: Spelling fix

2016-06-14 Thread coheigea
Repository: syncope
Updated Branches:
  refs/heads/master 449cac5c7 -> 47cdb82e5


Spelling fix


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

Branch: refs/heads/master
Commit: 47cdb82e5759d316b627366364cf322a60535932
Parents: 449cac5
Author: Colm O hEigeartaigh 
Authored: Tue Jun 14 17:19:26 2016 +0100
Committer: Colm O hEigeartaigh 
Committed: Tue Jun 14 17:19:26 2016 +0100

--
 .../console/wizards/resources/AbstractConnConfPanel.properties | 2 +-
 .../wizards/resources/AbstractConnConfPanel_pt_BR.properties   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/47cdb82e/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.properties
--
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.properties
 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.properties
index dc8013d..951b837 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.properties
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.properties
@@ -15,5 +15,5 @@
 # specific language governing permissions and limitations
 # under the License.
 check=Check connection
-property.empty.list=No connector configuraton property available
+property.empty.list=No connector configuration property available
 error_connection=Connection failure

http://git-wip-us.apache.org/repos/asf/syncope/blob/47cdb82e/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel_pt_BR.properties
--
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel_pt_BR.properties
 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel_pt_BR.properties
index 24e7b44..232ac9c 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel_pt_BR.properties
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel_pt_BR.properties
@@ -15,5 +15,5 @@
 # specific language governing permissions and limitations
 # under the License.
 check=Verificar a Conex\u00e3o
-property.empty.list=No connector configuraton property available
+property.empty.list=No connector configuration property available
 error_connection=Falha na Conex\u00e3o



syncope git commit: [SYNCOPE-827] provides filters management for push tasks

2016-06-14 Thread fmartelli
Repository: syncope
Updated Branches:
  refs/heads/master f5f6270ef -> 449cac5c7


[SYNCOPE-827] provides filters management for push tasks


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

Branch: refs/heads/master
Commit: 449cac5c7068c71a27c72fdfd8dcb269a53fa351
Parents: f5f6270
Author: fmartelli 
Authored: Tue Jun 14 18:08:25 2016 +0200
Committer: fmartelli 
Committed: Tue Jun 14 18:08:25 2016 +0200

--
 .../client/console/tasks/PushTaskFilters.java   | 87 
 .../client/console/tasks/PushTaskWrapper.java   | 79 ++
 .../console/tasks/SchedTaskWizardBuilder.java   | 10 +++
 .../client/console/tasks/PushTaskFilters.html   | 28 +++
 .../console/tasks/PushTaskFilters.properties| 19 +
 .../console/tasks/PushTaskFilters_it.properties | 19 +
 .../tasks/PushTaskFilters_pt_BR.properties  | 19 +
 .../console/tasks/PushTaskFilters_ru.properties | 21 +
 .../syncope/fit/console/TopologyITCase.java | 10 +++
 9 files changed, 292 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/449cac5c/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskFilters.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskFilters.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskFilters.java
new file mode 100644
index 000..872ed21
--- /dev/null
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskFilters.java
@@ -0,0 +1,87 @@
+/*
+ * 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.tasks;
+
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.panels.search.AnyObjectSearchPanel;
+import org.apache.syncope.client.console.panels.search.MapOfListModel;
+import org.apache.syncope.client.console.panels.search.SearchClause;
+import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.tabs.Accordion;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
+
+public class PushTaskFilters extends WizardStep {
+
+private static final long serialVersionUID = 855618618337931784L;
+
+private final AnyTypeRestClient anyTypeRestClient = new 
AnyTypeRestClient();
+
+public PushTaskFilters(final PushTaskWrapper pushTaskWrapper) {
+super();
+
+final LoadableDetachableModel> types = new 
LoadableDetachableModel>() {
+
+private static final long serialVersionUID = 5275935387613157437L;
+
+@Override
+protected List load() {
+return anyTypeRestClient.list();
+}
+};
+
+// 
+// aDynMembershipConds
+// 
+add(new ListView("filters", types) {
+
+private static final long serialVersionUID = 1L;
+
+@Override
+protected void populateItem(final ListItem item) {
+final String key = item.getModelObject().getKey();
+item.add(new Accordion("filters", 
Collections.singletonList(
+new AbstractTab(new StringResourceModel(
+   

[15/15] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Preliminary work


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

Branch: refs/heads/SYNCOPE-862
Commit: acce340d1289f1529fe6342f0a4d7c0a3507c6f4
Parents: f5f6270
Author: Francesco Chicchiriccò 
Authored: Tue May 31 17:59:00 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 17:59:30 2016 +0200

--
 .../AnyObjectDisplayAttributesModalPanel.java   |   2 +-
 .../html/repeater/data/table/AttrColumn.java|  19 +-
 .../data/table/ConnObjectAttrColumn.java|  63 +
 .../console/wizards/any/AnyObjectDetails.java   |  53 
 .../wizards/any/AnyObjectWizardBuilder.java |  22 +-
 .../console/wizards/any/AnyWizardBuilder.java   |   3 -
 .../console/wizards/any/ConnObjectPanel.java|   4 +-
 .../console/wizards/any/GroupDetails.java   |   4 +-
 .../client/console/wizards/any/Groups.java  |   1 -
 .../wizards/resources/ResourceMappingPanel.java |   1 +
 .../console/wizards/any/AnyObjectDetails.html   |  25 ++
 .../syncope/common/lib/AnyOperations.java   |  90 +--
 .../common/lib/patch/AnyObjectPatch.java|  10 +
 .../syncope/common/lib/patch/AnyPatch.java  |  10 +-
 .../common/lib/patch/AttributablePatch.java |  38 +++
 .../common/lib/patch/MembershipPatch.java   |  33 ++-
 .../syncope/common/lib/to/AnyObjectTO.java  |  10 +
 .../org/apache/syncope/common/lib/to/AnyTO.java |  34 ++-
 .../syncope/common/lib/to/AttributableTO.java   |  53 
 .../syncope/common/lib/to/ConnObjectTO.java |   9 +-
 .../syncope/common/lib/to/MembershipTO.java |  75 +-
 .../syncope/common/lib/to/RelationshipTO.java   |  26 --
 .../common/lib/types/EntityViolationType.java   |   4 +-
 .../common/lib/types/IntMappingType.java|   8 +-
 .../persistence/api/dao/AllowedSchemas.java | 114 +
 .../core/persistence/api/dao/AnyDAO.java|   3 +-
 .../core/persistence/api/dao/AnyObjectDAO.java  |   4 +
 .../core/persistence/api/entity/Any.java|   2 +
 .../core/persistence/api/entity/AnyUtils.java   |   3 +-
 .../api/entity/GroupablePlainAttr.java  |  26 ++
 .../api/entity/GroupableRelatable.java  | 100 
 .../api/entity/anyobject/APlainAttr.java|   4 +-
 .../api/entity/anyobject/AnyObject.java |  24 +-
 .../persistence/api/entity/user/UPlainAttr.java |   4 +-
 .../core/persistence/api/entity/user/User.java  |  32 +--
 .../persistence/jpa/dao/AbstractAnyDAO.java |  56 +++--
 .../persistence/jpa/dao/JPAAnyObjectDAO.java|  34 +++
 .../core/persistence/jpa/dao/JPAConfDAO.java|  12 +-
 .../core/persistence/jpa/dao/JPAGroupDAO.java   |  32 ++-
 .../persistence/jpa/dao/JPAPlainAttrDAO.java|   2 +-
 .../persistence/jpa/entity/AbstractAny.java |  28 ---
 .../jpa/entity/AbstractGroupableRelatable.java  | 158 
 .../persistence/jpa/entity/JPAAnyUtils.java |  13 +-
 .../jpa/entity/anyobject/JPAAPlainAttr.java |  22 +-
 .../jpa/entity/anyobject/JPAAnyObject.java  |  95 +++
 .../persistence/jpa/entity/conf/JPAConf.java|   8 +-
 .../jpa/entity/group/JPAGPlainAttr.java |   4 +-
 .../persistence/jpa/entity/group/JPAGroup.java  |  45 +++-
 .../jpa/entity/resource/JPAMappingItem.java |   4 +
 .../jpa/entity/user/JPAUPlainAttr.java  |  22 +-
 .../persistence/jpa/entity/user/JPAUser.java|  73 ++
 .../jpa/validation/entity/AnyValidator.java |  55 ++--
 .../entity/EntityValidationListener.java|   5 +-
 .../entity/PlainAttrValueValidator.java |   2 +-
 .../persistence/jpa/inner/AnyObjectTest.java|   1 +
 .../persistence/jpa/inner/PlainAttrTest.java|   2 +-
 .../core/persistence/jpa/outer/ConfTest.java|  72 ++
 .../core/persistence/jpa/outer/GroupTest.java   |   1 +
 .../core/persistence/jpa/outer/UserTest.java|  91 ++-
 .../test/resources/domains/MasterContent.xml|  11 +-
 .../core/provisioning/api/DerAttrHandler.java   |  23 +-
 .../core/provisioning/api/VirAttrHandler.java   |  28 ++-
 .../provisioning/java/DerAttrHandlerImpl.java   |  32 ++-
 .../provisioning/java/MappingManagerImpl.java   |  20 ++
 .../provisioning/java/VirAttrHandlerImpl.java   |  36 ++-
 .../java/data/AbstractAnyDataBinder.java| 248 ---
 .../java/data/AnyObjectDataBinderImpl.java  | 115 +++--
 .../java/data/GroupDataBinderImpl.java  |   6 +-
 .../java/data/UserDataBinderImpl.java   |  90 +--
 .../java/job/SetUMembershipsJob.java|   3 +-
 .../provisioning/java/pushpull/PullUtils.java   |   8 +
 .../java/utils/ConnObjectUtils.java |   2 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   2 +-
 fit/build-tools/src/main/resources/testdb.sql   |  

[07/15] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
index 4bbb240..2817795 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
@@ -20,7 +20,6 @@ package 
org.apache.syncope.core.persistence.jpa.validation.entity;
 
 import javax.validation.ConstraintValidatorContext;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -29,37 +28,30 @@ public class PlainSchemaValidator extends 
AbstractValidatorhttp://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
index 8051bda..9953859 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
@@ -31,8 +31,8 @@ public class RelationshipTypeValidator extends 
AbstractValidatorhttp://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
index 29558a0..c1de34d 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
@@ -28,10 +28,10 @@ public class RoleValidator extends 
AbstractValidator {
 public boolean isValid(final Role role, final ConstraintValidatorContext 
context) {
 context.disableDefaultConstraintViolation();
 
-if (role.getKey() == null || 
!NAME_PATTERN.matcher(role.getKey()).matches()) {
+if (role.getKey() == null || 
!KEY_PATTERN.matcher(role.getKey()).matches()) {
 context.buildConstraintViolationWithTemplate(
-getTemplate(EntityViolationType.InvalidName, "Invalid Role 
name")).
-addPropertyNode("name").addConstraintViolation();
+getTemplate(EntityViolationType.InvalidKey, "Invalid role 
key")).
+addPropertyNode("key").addConstraintViolation();
 return false;
 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
index b4d00d5..8c71620 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
@@ -18,77 +18,37 @@
  */
 package org.apache.syncope.core.persistence.jpa.validation.entity;
 
-import java.lang.reflect.Field;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 import javax.validation.ConstraintValidatorContext;
-import org.apache.commons.lang3.ClassUtils;
 import org.apache.syncope.common.lib.types.EntityViolationType;

[04/15] syncope git commit: Fixing OpenJPA warnings about 'Supplied parameters do not match expected parameters'

2016-06-14 Thread ilgrosso
Fixing OpenJPA warnings about 'Supplied parameters do not match expected 
parameters'


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

Branch: refs/heads/SYNCOPE-862
Commit: 579f4b04660d03e58a2c8fc32f69174b211b63a4
Parents: acce340
Author: Francesco Chicchiriccò 
Authored: Wed Jun 1 18:52:42 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 17:59:30 2016 +0200

--
 .../persistence/jpa/dao/JPAAnyObjectDAO.java| 30 --
 .../core/persistence/jpa/dao/JPAUserDAO.java| 60 
 .../persistence/jpa/dao/JPAVirSchemaDAO.java| 45 +--
 .../persistence/jpa/outer/ResourceTest.java |  8 +--
 4 files changed, 115 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/579f4b04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index 5280c3c..c527a15 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -56,6 +56,7 @@ import 
org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory;
 import 
org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership;
 import 
org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship;
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -211,12 +212,29 @@ public class JPAAnyObjectDAO extends 
AbstractAnyDAO implements AnyObj
 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)
 @Override
 public List findDynGroupMemberships(final AnyObject anyObject) {
-TypedQuery query = entityManager().createQuery(
-"SELECT e.group FROM " + 
JPAADynGroupMembership.class.getSimpleName()
-+ " e WHERE :anyObject MEMBER OF e.anyObjects", Group.class);
-query.setParameter("anyObject", anyObject);
-
-return query.getResultList();
+Query query = entityManager().createNativeQuery(
+"SELECT t2.id FROM " + JPAADynGroupMembership.TABLE + " t0 "
++ "INNER JOIN ADynGroupMembership_AnyObject t1 "
++ "ON t0.id = t1.aDynGroupMembership_id "
++ "LEFT OUTER JOIN " + JPAGroup.TABLE + " t2 "
++ "ON t0.GROUP_ID = t2.id "
++ "WHERE t1.anyObject_id = ?1");
+query.setParameter(1, anyObject.getKey());
+
+List result = new ArrayList<>();
+for (Object key : query.getResultList()) {
+String actualKey = key instanceof Object[]
+? (String) ((Object[]) key)[0]
+: ((String) key);
+
+Group group = groupDAO.find(actualKey);
+if (group == null) {
+LOG.error("Could not find group with id {}, even though 
returned by the native query", actualKey);
+} else if (!result.contains(group)) {
+result.add(group);
+}
+}
+return result;
 }
 
 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)

http://git-wip-us.apache.org/repos/asf/syncope/blob/579f4b04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index 0624190..0cd53a0 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -66,6 +66,8 @@ import 
org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 imp

[05/15] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
index 70d55ba..012acb9 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
@@ -30,7 +30,6 @@ import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.NotificationTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.service.NotificationService;
 import org.apache.syncope.fit.AbstractITCase;
@@ -51,7 +50,6 @@ public class NotificationITCase extends AbstractITCase {
 
is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query());
 
 notificationTO.setRecipientAttrName("email");
-notificationTO.setRecipientAttrType(IntMappingType.UserPlainSchema);
 
 notificationTO.setSender("sync...@syncope.apache.org");
 notificationTO.setSubject("Test notification");

http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
index 5493282..665d38b 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
@@ -46,7 +46,6 @@ import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.beans.ExecuteQuery;
@@ -322,7 +321,6 @@ public class NotificationTaskITCase extends 
AbstractTaskITCase {
 inGroups("f779c0d4-633b-4be5-8f57-32eb478a3ca5").query());
 notification.setSelfAsRecipient(false);
 notification.setRecipientAttrName("email");
-notification.setRecipientAttrType(IntMappingType.UserPlainSchema);
 notification.getStaticRecipients().add(MAIL_ADDRESS);
 
notification.setRecipientsProviderClassName(TestNotificationRecipientsProvider.class.getName());
 
@@ -395,7 +393,6 @@ public class NotificationTaskITCase extends 
AbstractTaskITCase {
 inGroups("f779c0d4-633b-4be5-8f57-32eb478a3ca5").query());
 notification.setSelfAsRecipient(true);
 notification.setRecipientAttrName("email");
-notification.setRecipientAttrType(IntMappingType.UserPlainSchema);
 if (staticRecipients != null) {
 CollectionUtils.addAll(notification.getStaticRecipients(), 
staticRecipients);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
index 3f9ac6d..36fe888 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
@@ -88,7 +88,7 @@ public class PlainSchemaITCase extends AbstractITCase {
 boolean entityViolationTypeCheck = false;
 for (String element : e.getElements()) {
 if (!entityViolationTypeCheck) {
-entityViolationTypeCheck = 
element.contains(EntityViolationType.InvalidName.name());
+entityViolationTypeCheck = 
element.contains(EntityViolationType.InvalidKey.name());
 }
 }
 assertTrue(entityViolationTypeCheck);
@@ -334,7 +334,7 @@ public class PlainSchemaITCase extends AbstractITCase {
 fail();
 } catch (SyncopeClientException e) {
 assertEquals(ClientExceptionType.InvalidPlainSchema, e.getTyp

[02/15] syncope git commit: [SYNCOPE-860] provides role and group members inspecting feature

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/f5f6270e/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
index 681744e..7dc90bf 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
@@ -73,6 +73,7 @@ public final class ActionLinksPanel 
extends Panel {
 super.add(new Fragment("panelEnable", "emptyFragment", this));
 super.add(new Fragment("panelNotFound", "emptyFragment", this));
 super.add(new Fragment("panelView", "emptyFragment", this));
+super.add(new Fragment("panelMembers", "emptyFragment", this));
 super.add(new Fragment("panelSearch", "emptyFragment", this));
 super.add(new Fragment("panelDelete", "emptyFragment", this));
 super.add(new Fragment("panelExecute", "emptyFragment", this));
@@ -127,7 +128,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -146,7 +148,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -165,7 +168,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -184,7 +188,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -203,7 +208,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -222,7 +228,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -241,7 +248,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !

[09/15] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
index a2c9271..4c44b7f 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.policy.PullPolicySpec;
-import org.apache.syncope.core.provisioning.java.MappingManagerImpl;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
@@ -47,8 +46,8 @@ import 
org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
+import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
@@ -63,6 +62,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.apache.syncope.core.provisioning.api.pushpull.PullCorrelationRule;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 
 @Transactional(readOnly = true)
 @Component
@@ -103,6 +103,9 @@ public class PullUtils {
 @Autowired
 private AnyUtilsFactory anyUtilsFactory;
 
+@Autowired
+private IntAttrNameParser intAttrNameParser;
+
 public String findMatchingAnyKey(
 final AnyType anyType,
 final String name,
@@ -127,7 +130,7 @@ public class PullUtils {
 public boolean handle(final ConnectorObject obj) {
 return found.add(obj);
 }
-}, 
MappingManagerImpl.buildOperationOptions(MappingManagerImpl.getPullMappingItems(provision).iterator()));
+}, 
MappingUtils.buildOperationOptions(MappingUtils.getPullMappingItems(provision).iterator()));
 
 if (found.isEmpty()) {
 LOG.debug("No {} found on {} with __NAME__ {}", 
provision.getObjectClass(), resource, name);
@@ -170,10 +173,10 @@ public class PullUtils {
 
 List result = new ArrayList<>();
 
-MappingItem connObjectKeyItem = 
MappingManagerImpl.getConnObjectKeyItem(provision);
+MappingItem connObjectKeyItem = 
MappingUtils.getConnObjectKeyItem(provision);
 
 String transfUid = uid;
-for (MappingItemTransformer transformer : 
MappingManagerImpl.getMappingItemTransformers(connObjectKeyItem)) {
+for (MappingItemTransformer transformer : 
MappingUtils.getMappingItemTransformers(connObjectKeyItem)) {
 List output = transformer.beforePull(
 connObjectKeyItem,
 null,
@@ -183,9 +186,8 @@ public class PullUtils {
 }
 }
 
-IntAttrName intAttrName = IntAttrNameParser.parse(
+IntAttrName intAttrName = intAttrNameParser.parse(
 connObjectKeyItem.getIntAttrName(),
-anyUtilsFactory,
 provision.getAnyType().getKind());
 
 if (intAttrName.getField() != null) {
@@ -214,6 +216,8 @@ public class PullUtils {
 result.add(anyObject.getKey());
 }
 break;
+
+default:
 }
 } else if (intAttrName.getSchemaType() != null) {
 switch (intAttrName.getSchemaType()) {
@@ -246,6 +250,8 @@ public class PullUtils {
 result.add(any.getKey());
 }
 break;
+
+default:
 }
 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
---

[11/15] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
--
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
index 302a798..46e6700 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
@@ -15,55 +15,51 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# notifications=Уведомления
+# 
notifications=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 
notifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f
-# notification.templates=Шаблоны
+# 
notification.templates=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd\u00d1\u008b
 notification.templates=\u0428\u0430\u0431\u043b\u043e\u043d\u044b
 
-# sender=Отправитель
+# 
sender=\u00d0\u009e\u00d1\u0082\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00b8\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008c
 sender=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c
-# template=Шаблон
+# 
template=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd
 template=\u0428\u0430\u0431\u043b\u043e\u043d
-# traceLevel=Логирование
+# 
traceLevel=\u00d0\u009b\u00d0\u00be\u00d0\u00b3\u00d0\u00b8\u00d1\u0080\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 traceLevel=\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
-# notification=Уведомление
+# 
notification=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 notification=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# about=Уведомление о
+# 
about=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 \u00d0\u00be
 about=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e
-# events=События
+# 
events=\u00d0\u00a1\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d1\u008f
 events=\u0421\u043e\u0431\u044b\u0442\u0438\u044f
-# selfAsRecipient=Включить в получатели 
пользователей, о которых рассылается 
уведомление
+# 
selfAsRecipient=\u00d0\u0092\u00d0\u00ba\u00d0\u00bb\u00d1\u008e\u00d1\u0087\u00d0\u00b8\u00d1\u0082\u00d1\u008c
 \u00d0\u00b2 
\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u0083\u00d1\u0087\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b8
 
\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9,
 \u00d0\u00be 
\u00d0\u00ba\u00d0\u00be\u00d1\u0082\u00d0\u00be\u00d1\u0080\u00d1\u008b\u00d1\u0085
 
\u00d1\u0080\u00d0\u00b0\u00d1\u0081\u00d1\u0081\u00d1\u008b\u00d0\u00bb\u00d0\u00b0\u00d0\u00b5\u00d1\u0082\u00d1\u0081\u00d1\u008f
 
\u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 selfAsRecipient=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 
\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, 
\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 
\u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f 
\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# recipientAttrType=Тип атрибута с адресом 
электронной почты получателей
-recipientAttrType=\u0422\u0438\u043f 
\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 
\u0430\u0434\u0440\u0435\u0441\u043e\u043c 
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 
\u043f\u043e\u0447\u0442\u044b 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# recipientAttrName=Наименование атрибута с 
адресом электронной почты получателей
-recipientAttrName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435
 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 
\u0430\u0434\u0440\u0435\u0441\u043e\u043c 
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 
\u043f\u043e\u0447\u0442\u044b 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# checkRecipients=Поиск полу

[14/15] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/acce340d/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index 60be1fe..5280c3c 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -27,6 +27,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.persistence.NoResultException;
 import javax.persistence.Query;
 import javax.persistence.TypedQuery;
 import org.apache.commons.collections4.CollectionUtils;
@@ -40,6 +41,7 @@ import 
org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
@@ -124,6 +126,38 @@ public class JPAAnyObjectDAO extends 
AbstractAnyDAO implements AnyObj
 }
 
 @Override
+public AnyObject findByName(final String name) {
+TypedQuery query = entityManager().createQuery(
+"SELECT e FROM " + JPAAnyObject.class.getSimpleName() + " e 
WHERE e.name = :name", AnyObject.class);
+query.setParameter("name", name);
+
+AnyObject result = null;
+try {
+result = query.getSingleResult();
+} catch (NoResultException e) {
+LOG.debug("No any object found with name {}", name, e);
+}
+
+return result;
+}
+
+@Override
+public AnyObject authFindByName(final String name) {
+if (name == null) {
+throw new NotFoundException("Null name");
+}
+
+AnyObject anyObject = findByName(name);
+if (anyObject == null) {
+throw new NotFoundException("Any Object " + name);
+}
+
+securityChecks(anyObject);
+
+return anyObject;
+}
+
+@Override
 public List findARelationships(final AnyObject anyObject) {
 TypedQuery query = entityManager().createQuery(
 "SELECT e FROM " + JPAARelationship.class.getSimpleName()

http://git-wip-us.apache.org/repos/asf/syncope/blob/acce340d/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
index 07e18e2..d1df518 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.persistence.jpa.dao;
 
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -40,9 +39,6 @@ public class JPAConfDAO extends AbstractDAO implements 
ConfDAO {
 @Autowired
 private PlainSchemaDAO schemaDAO;
 
-@Autowired
-private PlainAttrDAO attrDAO;
-
 @Override
 public Conf get() {
 Conf instance = entityManager().find(JPAConf.class, KEY);
@@ -96,8 +92,8 @@ public class JPAConfDAO extends AbstractDAO implements 
ConfDAO {
 if (old != null && (!attr.getSchema().isUniqueConstraint()
 || 
(!attr.getUniqueValue().getStringValue().equals(old.getUniqueValue().getStringValue()
 {
 
-instance.getPlainAttrs().remove(old);
-attrDAO.delete(old.getKey(), CPlainAttr.class);
+old.setOwner(null);
+instance.remove(old);
 }
 
 instance.add(attr);
@@ -111,8 +107,8 @@ public class JPAConfDAO extends AbstractDAO 
implements ConfDAO {
 Conf instance = get();
 CPlainAttr attr = instance.getPlainAttr(key);
 if (attr != null) {
-instance.getPlainAttrs().remove(attr);
-attrDAO.delete(attr.getKey(), CPlainAttr.class);
+

[13/15] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/acce340d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
index b65cc79..67a821c 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
@@ -29,6 +29,7 @@ import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
@@ -48,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+@Transactional(readOnly = true)
 @Component
 public class VirAttrHandlerImpl implements VirAttrHandler {
 
@@ -122,7 +124,8 @@ public class VirAttrHandlerImpl implements VirAttrHandler {
 if (attr != null) {
 VirAttrCacheValue virAttrCacheValue = new 
VirAttrCacheValue();
 virAttrCacheValue.setValues(attr.getValue());
-virAttrCache.put(any.getType().getKey(), 
any.getKey(), schema.getKey(),
+virAttrCache.put(
+any.getType().getKey(), any.getKey(), 
schema.getKey(),
 virAttrCacheValue);
 LOG.debug("Values for {} set in cache: {}", 
schema, virAttrCacheValue);
 
@@ -139,10 +142,23 @@ public class VirAttrHandlerImpl implements VirAttrHandler 
{
 return result;
 }
 
-@Transactional(readOnly = true)
 @Override
 public List getValues(final Any any, final VirSchema schema) {
-if (!anyUtilsFactory.getInstance(any).getAllowedSchemas(any, 
VirSchema.class).contains(schema)) {
+if (!anyUtilsFactory.getInstance(any).
+getAllowedSchemas(any, 
VirSchema.class).forSelfContains(schema)) {
+
+LOG.debug("{} not allowed for {}", schema, any);
+return Collections.emptyList();
+}
+
+return ListUtils.emptyIfNull(getValues(any, 
Collections.singleton(schema)).get(schema));
+}
+
+@Override
+public List getValues(final Any any, final Membership 
membership, final VirSchema schema) {
+if (!anyUtilsFactory.getInstance(any).
+getAllowedSchemas(any, 
VirSchema.class).getForMembership(membership.getRightEnd()).contains(schema)) {
+
 LOG.debug("{} not allowed for {}", schema, any);
 return Collections.emptyList();
 }
@@ -150,9 +166,19 @@ public class VirAttrHandlerImpl implements VirAttrHandler {
 return ListUtils.emptyIfNull(getValues(any, 
Collections.singleton(schema)).get(schema));
 }
 
-@Transactional(readOnly = true)
 @Override
 public Map> getValues(final Any any) {
-return getValues(any, 
anyUtilsFactory.getInstance(any).getAllowedSchemas(any, VirSchema.class));
+return getValues(
+any,
+anyUtilsFactory.getInstance(any).getAllowedSchemas(any, 
VirSchema.class).getForSelf());
 }
+
+@Override
+public Map> getValues(final Any any, final 
Membership membership) {
+return getValues(
+any,
+anyUtilsFactory.getInstance(any).getAllowedSchemas(any, 
VirSchema.class).
+getForMembership(membership.getRightEnd()));
+}
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/acce340d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
--
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 a144d67..0ccbe14 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.ja

[12/15] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Features complete


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

Branch: refs/heads/SYNCOPE-862
Commit: 8e162494e707c3279f4bc43f951a7c87d869daef
Parents: a4afd4a
Author: Francesco Chicchiriccò 
Authored: Tue Jun 14 17:57:42 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 17:59:30 2016 +0200

--
 .../client/console/commons/Constants.java   |  34 +-
 .../NotificationWizardBuilder.java  | 103 +--
 .../client/console/panels/BeanPanel.java|  60 +-
 .../console/panels/ConnObjectListViewPanel.java |   2 +-
 .../client/console/rest/SchemaRestClient.java   |   1 +
 .../client/console/wizards/any/Groups.java  |  11 +-
 .../console/wizards/any/Relationships.java  |  10 +-
 .../wizards/resources/ResourceMappingPanel.java | 317 --
 .../SyncopeConsoleApplication.properties|   1 +
 .../SyncopeConsoleApplication_it.properties |   1 +
 .../SyncopeConsoleApplication_pt_BR.properties  |   1 +
 .../SyncopeConsoleApplication_ru.properties |   1 +
 .../NotificationWizardBuilder$Details.html  |   3 -
 ...NotificationWizardBuilder$Details.properties |   3 +-
 ...ificationWizardBuilder$Details_it.properties |   3 +-
 ...cationWizardBuilder$Details_pt_BR.properties |   3 +-
 ...ificationWizardBuilder$Details_ru.properties |  14 +-
 .../NotificationWizardBuilder$Events.properties |   2 -
 ...tificationWizardBuilder$Events_it.properties |   2 -
 ...icationWizardBuilder$Events_pt_BR.properties |   2 -
 ...tificationWizardBuilder$Events_ru.properties |  52 +-
 .../console/pages/Notifications.properties  |   2 -
 .../console/pages/Notifications_it.properties   |   2 -
 .../pages/Notifications_pt_BR.properties|   2 -
 .../console/pages/Notifications_ru.properties   |  50 +-
 .../wizards/resources/ResourceMappingPanel.html |  19 +-
 .../resources/ResourceProvisionPanel.properties |   5 +-
 .../ResourceProvisionPanel_it.properties|   5 +-
 .../ResourceProvisionPanel_pt_BR.properties |   5 +-
 .../ResourceProvisionPanel_ru.properties|   6 +-
 .../syncope/common/lib/to/AnyObjectTO.java  |   2 +-
 .../common/lib/to/GroupableRelatableTO.java |  36 ++
 .../syncope/common/lib/to/GroupableTO.java  |  31 -
 .../syncope/common/lib/to/RelatableTO.java  |  30 -
 .../apache/syncope/common/lib/to/UserTO.java|   2 +-
 .../syncope/core/logic/ResourceLogic.java   |   6 +-
 .../logic/report/ReconciliationReportlet.java   |   6 +-
 .../core/persistence/api/dao/SchemaDAO.java |   2 +-
 .../persistence/jpa/entity/JPAAnyUtils.java |  11 +-
 .../jpa/entity/resource/JPAMappingItem.java |   4 +-
 .../entity/ExternalResourceValidator.java   | 102 +--
 .../persistence/jpa/inner/ResourceTest.java |  65 +-
 .../persistence/jpa/outer/ResourceTest.java |   1 +
 .../test/resources/domains/MasterContent.xml|  13 +-
 .../src/test/resources/domains/TwoContent.xml   |   4 +-
 .../core/provisioning/api/IntAttrName.java  | 103 +++
 .../provisioning/api/IntAttrNameParser.java | 140 -
 .../core/provisioning/api/MappingManager.java   |   7 +-
 .../api/data/MappingItemTransformer.java|   4 +-
 .../provisioning/java/ConnectorFacadeProxy.java |   5 +-
 .../provisioning/java/IntAttrNameParser.java| 120 
 .../provisioning/java/MappingManagerImpl.java   | 623 +++
 .../provisioning/java/VirAttrHandlerImpl.java   |   5 +-
 .../java/data/AbstractAnyDataBinder.java|  37 +-
 .../data/DefaultMappingItemTransformer.java |   2 +-
 .../java/data/JEXLMappingItemTransformer.java   |  46 +-
 .../java/data/NotificationDataBinderImpl.java   |   7 +-
 .../java/data/ResourceDataBinderImpl.java   |  60 +-
 .../java/data/UserDataBinderImpl.java   |   5 +-
 .../notification/NotificationManagerImpl.java   |  30 +-
 .../AbstractPropagationTaskExecutor.java|   6 +-
 .../propagation/PropagationManagerImpl.java |   4 +-
 .../pushpull/AbstractPushResultHandler.java |   4 +-
 .../pushpull/PlainAttrsPullCorrelationRule.java |   6 +-
 .../java/pushpull/PullJobDelegate.java  |  10 +-
 .../provisioning/java/pushpull/PullUtils.java   |  22 +-
 .../java/utils/ConnObjectUtils.java |   3 +-
 .../provisioning/java/utils/MappingUtils.java   | 239 +++
 .../src/main/resources/provisioningContext.xml  |   1 +
 .../java/IntAttrNameParserTest.java | 161 +
 .../core/provisioning/java/MappingTest.java |   5 +-
 .../reference/PrefixMappingItemTransformer.java |   4 +-
 .../fit/console/NotificationsITCase.java|  12 +-
 .../syncope/fit/console/TopologyITCase.java |  13 +-
 .../apache/syncope/fit/core/GroupITCase.java|  31 +-
 .

[03/15] syncope git commit: [SYNCOPE-860] provides role and group members inspecting feature

2016-06-14 Thread ilgrosso
[SYNCOPE-860] provides role and group members inspecting feature


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

Branch: refs/heads/SYNCOPE-862
Commit: f5f6270ef2f437a036f36e5cd6a9e31d0515e7ab
Parents: befa49c
Author: fmartelli 
Authored: Tue Jun 14 16:55:27 2016 +0200
Committer: fmartelli 
Committed: Tue Jun 14 16:55:27 2016 +0200

--
 .../console/panels/AnyDirectoryPanel.java   |   6 +-
 .../console/panels/AnyObjectDirectoryPanel.java | 109 +++-
 .../syncope/client/console/panels/AnyPanel.java |  23 ++-
 .../client/console/panels/DirectoryPanel.java   |  11 +-
 .../console/panels/GroupDirectoryPanel.java | 130 +-
 .../client/console/panels/ListViewPanel.java|   8 +-
 .../console/panels/MembersTogglePanel.java  | 118 +
 .../client/console/panels/ParametersPanel.java  |   6 +-
 .../console/panels/RoleDirectoryPanel.java  |  65 ++-
 .../console/panels/SecurityQuestionsPanel.java  |   6 +-
 .../console/panels/UserDirectoryPanel.java  | 139 ---
 .../AnyObjectSelectionDirectoryPanel.java   |   8 +-
 .../search/AnySelectionDirectoryPanel.java  |   7 +-
 .../search/GroupSelectionDirectoryPanel.java|   8 +-
 .../search/UserSelectionDirectoryPanel.java |   8 +-
 .../wicket/markup/html/form/ActionLink.java |   5 +
 .../markup/html/form/ActionLinksPanel.java  | 171 +--
 .../client/console/widgets/JobWidget.java   |  12 +-
 .../ReconciliationDetailsModalPanel.java|   4 +-
 .../console/widgets/ReconciliationWidget.java   |  10 +-
 .../client/console/wizards/WizardMgtPanel.java  |  19 ++-
 .../console/wizards/any/Relationships.java  |   2 +-
 .../panels/GroupDirectoryPanel.properties   |   1 +
 .../panels/GroupDirectoryPanel_it.properties|   1 +
 .../panels/GroupDirectoryPanel_pt_BR.properties |   1 +
 .../panels/GroupDirectoryPanel_ru.properties|   1 +
 .../console/panels/MembersTogglePanel.html  |  32 
 .../panels/RoleDirectoryPanel.properties|   1 +
 .../panels/RoleDirectoryPanel_it.properties |   1 +
 .../panels/RoleDirectoryPanel_pt_BR.properties  |   1 +
 .../panels/RoleDirectoryPanel_ru.properties |   5 +-
 .../markup/html/form/ActionLinksPanel.html  |   5 +
 .../panels/CamelRoutesDirectoryPanel.java   |   4 +-
 .../syncope/fit/console/GroupsITCase.java   |  28 +++
 .../apache/syncope/fit/console/RolesITCase.java |  17 ++
 35 files changed, 754 insertions(+), 219 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/f5f6270e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
index f2e8aec..256df52 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
@@ -83,7 +83,11 @@ public abstract class AnyDirectoryPanel utilityModal = new 
BaseModal<>("outer");
 
 protected AnyDirectoryPanel(final String id, final Builder builder) {
-super(id, builder);
+this(id, builder, true);
+}
+
+protected AnyDirectoryPanel(final String id, final Builder builder, 
final boolean wizardInModal) {
+super(id, builder, wizardInModal);
 this.realm = builder.realm;
 this.type = builder.type;
 this.fiql = builder.fiql;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f5f6270e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
index ecdb0ff..5473ee0 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
@@ -60,8 +60,8 @@ public class AnyObjectDirectoryPanel extends 
AnyDirectoryPanel(new 
ResourceModel("actions")) {
 
 private static final long serialVersionUID = -3503023501954863131L;
@@ -118,24 +116,6 @@ public class AnyObjectDirectoryPanel extends 
AnyDirectoryPanel() {
 
- 

[08/15] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
Unique schema key across the three tables


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

Branch: refs/heads/SYNCOPE-862
Commit: a4afd4a22daaff2c353de44d52dfc41412cdea4a
Parents: 579f4b0
Author: Francesco Chicchiriccò 
Authored: Thu Jun 9 18:20:30 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 17:59:30 2016 +0200

--
 .../notification/NotificationResultManager.java |   1 -
 .../resource/ResourceResultManager.java |   1 -
 .../syncope/common/lib/EntityTOUtils.java   |  18 -
 .../lib/policy/DefaultAccountRuleConf.java  |   7 +-
 .../lib/policy/DefaultPasswordRuleConf.java |   7 +-
 .../common/lib/report/GroupReportletConf.java   |   9 +-
 .../syncope/common/lib/report/Schema.java   |   7 +-
 .../common/lib/report/UserReportletConf.java|   9 +-
 .../common/lib/search/SearchableFields.java |  17 +
 .../syncope/common/lib/to/MappingItemTO.java|  14 -
 .../apache/syncope/common/lib/to/MappingTO.java |  12 -
 .../syncope/common/lib/to/NotificationTO.java   |  11 -
 .../common/lib/types/EntityViolationType.java   |   2 +-
 .../common/lib/types/IntMappingType.java| 203 
 .../api/dao/ExternalResourceDAO.java|   3 +-
 .../core/persistence/api/entity/AnyUtils.java   |   9 +-
 .../api/entity/LinkingMappingItem.java  |  21 -
 .../persistence/api/entity/Notification.java|   5 -
 .../api/entity/resource/MappingItem.java|   5 -
 .../api/search/SearchCondVisitor.java   |   4 +-
 .../persistence/jpa/dao/JPADerSchemaDAO.java|   8 +-
 .../jpa/dao/JPAExternalResourceDAO.java |  10 +-
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  |   2 +-
 .../persistence/jpa/dao/JPAVirSchemaDAO.java|  11 +-
 .../persistence/jpa/entity/AbstractSchema.java  |  40 ++
 .../persistence/jpa/entity/JPAAnyUtils.java | 131 +++--
 .../persistence/jpa/entity/JPADerSchema.java|   8 +-
 .../persistence/jpa/entity/JPANotification.java |  15 -
 .../persistence/jpa/entity/JPAPlainSchema.java  |   6 +-
 .../persistence/jpa/entity/JPAVirSchema.java|   8 +-
 .../entity/anyobject/JPAAPlainAttrValue.java|   3 -
 .../jpa/entity/conf/JPACPlainAttrValue.java |   3 -
 .../jpa/entity/group/JPAGPlainAttrValue.java|   3 -
 .../jpa/entity/resource/JPAMapping.java |  23 +-
 .../jpa/entity/resource/JPAMappingItem.java |  50 +-
 .../jpa/entity/user/JPAUPlainAttrValue.java |   3 -
 .../validation/entity/AbstractValidator.java|   2 +-
 .../jpa/validation/entity/DomainValidator.java  |  12 +-
 .../entity/ExternalResourceValidator.java   |  64 +--
 .../validation/entity/PlainSchemaValidator.java |  36 +-
 .../entity/RelationshipTypeValidator.java   |   4 +-
 .../jpa/validation/entity/RoleValidator.java|   6 +-
 .../validation/entity/SchemaKeyValidator.java   |  62 +--
 .../main/resources/domains/MasterContent.xml|  17 +-
 .../core/persistence/jpa/inner/ConfTest.java|   2 +-
 .../persistence/jpa/inner/DerSchemaTest.java|   2 +-
 .../persistence/jpa/inner/NotificationTest.java |   4 -
 .../persistence/jpa/inner/PlainSchemaTest.java  |   7 +-
 .../persistence/jpa/inner/ResourceTest.java |  30 +-
 .../persistence/jpa/inner/VirSchemaTest.java|   2 +-
 .../persistence/jpa/outer/PlainSchemaTest.java  |  24 +
 .../persistence/jpa/outer/ResourceTest.java |   5 -
 .../persistence/jpa/outer/VirSchemaTest.java|   2 -
 .../test/resources/domains/MasterContent.xml| 187 ---
 .../src/test/resources/domains/TwoContent.xml   |  11 +
 .../provisioning/api/IntAttrNameParser.java | 140 ++
 .../core/provisioning/api/MappingManager.java   |   8 +-
 .../provisioning/java/MappingManagerImpl.java   | 501 +--
 .../java/data/AbstractAnyDataBinder.java|  16 +-
 .../java/data/NotificationDataBinderImpl.java   |   9 +
 .../java/data/ResourceDataBinderImpl.java   |  76 +--
 .../notification/NotificationManagerImpl.java   |  76 +--
 .../provisioning/java/pushpull/PullUtils.java   | 126 ++---
 .../java/ResourceDataBinderTest.java|   2 -
 .../syncope/fit/core/ConfigurationITCase.java   |   2 +-
 .../syncope/fit/core/ConnectorITCase.java   |   2 -
 .../syncope/fit/core/DerSchemaITCase.java   |   2 +-
 .../apache/syncope/fit/core/GroupITCase.java|   3 -
 .../syncope/fit/core/MigrationITCase.java   |  17 -
 .../syncope/fit/core/MultitenancyITCase.java|   7 +-
 .../syncope/fit/core/NotificationITCase.java|   2 -
 .../fit/core/NotificationTaskITCase.java|   3 -
 .../syncope/fit/core/PlainSchemaITCase.java |   4 +-
 .../apache/syncope/fit/core/PushTaskITCase.java |   3 -
 .../apache/syncope/fit/core/ResourceITCase.java |  36 +-
 ...

[10/15] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/8e162494/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
index e2f793a..7d38624 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
@@ -21,24 +21,21 @@ package org.apache.syncope.core.provisioning.java;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.jexl3.JexlContext;
-import org.apache.commons.jexl3.MapContext;
-import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
 import 
org.apache.syncope.core.provisioning.api.utils.policy.InvalidPasswordRuleConf;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
@@ -48,53 +45,46 @@ import 
org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
 import org.apache.syncope.core.spring.security.Encryptor;
-import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
 import org.apache.syncope.core.spring.security.PasswordGenerator;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
+import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Schema;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import 
org.apache.syncope.core.persistence.api.entity.anyobject.APlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
-import 
org.apache.syncope.core.provisioning.java.data.JEXLMappingItemTransformer;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.identityconnectors.framework.common.FrameworkUtil;
 import org.

[06/15] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
--
diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml 
b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
index a24431e..3d8d0a5 100644
--- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
@@ -22,6 +22,7 @@ under the License.
 
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
@@ -73,6 +80,7 @@ under the License.
attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" 
stringValue="active"/>
 
   
+  
   
   
 
+  
   
   
   
   
+  
   
   
 
+  
   

http://git-wip-us.apache.org/repos/asf/syncope/blob/a4afd4a2/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
--
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
new file mode 100644
index 000..4beb5ce
--- /dev/null
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
@@ -0,0 +1,140 @@
+/*
+ * 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.provisioning.api;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.core.persistence.api.entity.AnyUtils;
+import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+
+public final class IntAttrNameParser {
+
+private static final Pattern ENCLOSING_GROUP_PATTERN = 
Pattern.compile("^groups\\[[\\w]+\\]\\.[\\w]+");
+
+private static final Pattern RELATED_ANY_OBJECT_PATTERN = 
Pattern.compile("^anyObjects\\[[\\w]+\\]\\.[\\w]+");
+
+private static final Pattern MEMBERSHIP_PATTERN = 
Pattern.compile("^\\[[\\w]+\\]\\.[\\w]+");
+
+public static class IntAttrName {
+
+private AnyTypeKind anyTypeKind;
+
+private String field;
+
+private SchemaType schemaType;
+
+private String schemaName;
+
+private String enclosingGroup;
+
+private String relatedAnyObject;
+
+private String membershipOfGroup;
+
+public AnyTypeKind getAnyTypeKind() {
+return anyTypeKind;
+}
+
+public String getField() {
+return field;
+}
+
+public SchemaType getSchemaType() {
+return schemaType;
+}
+
+public String getSchemaName() {
+return schemaName;
+}
+
+public String getEnclosingGroup() {
+return enclosingGroup;
+}
+
+public String getRelatedAnyObject() {
+return relatedAnyObject;
+}
+
+public String getMembershipOfGroup() {
+return membershipOfGroup;
+}
+
+@Override
+public String toString() {
+return ToStringBuilder.reflectionToString(field, 
ToStringStyle.MULTI_LINE_STYLE);
+}
+
+}
+
+private static void setFieldOrSchemaName(
+final String fieldOrSchemaName, final AnyUtils anyUtils, final 
IntAttrName result) {
+
+if (anyUtils.isFieldName(fieldOrSchemaName)) {
+result.field = fieldOrSchemaName;
+} else {
+result.schemaName = fieldOrSchemaName;
+}
+}
+
+public static IntAttrName parse(
+final String intAttrName,
+final AnyUtilsFactory anyUtilsFactory,
+final AnyTypeKind provisionAnyTypeKind) {
+
+IntAttrName result = new IntAttrName();
+
+if (intAttrName.indexOf('.') == -1) {
+result.anyTypeKind = provisionAnyTypeKind;
+  

[01/15] syncope git commit: Upgrading Activiti [Forced Update!]

2016-06-14 Thread ilgrosso
Repository: syncope
Updated Branches:
  refs/heads/SYNCOPE-862 394f8c98c -> 8e162494e (forced update)


Upgrading Activiti


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

Branch: refs/heads/SYNCOPE-862
Commit: befa49c32d73a10f6865d7cc13737c9d7a539d51
Parents: 339f9d5
Author: Francesco Chicchiriccò 
Authored: Mon Jun 13 17:39:49 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 17:39:49 2016 +0200

--
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/befa49c3/pom.xml
--
diff --git a/pom.xml b/pom.xml
index aa76443..15be564 100644
--- a/pom.xml
+++ b/pom.xml
@@ -353,7 +353,7 @@ under the License.
 
 2.4.7
 
-5.20.0
+5.21.0
 
 1.7.21
 2.6.1



[05/17] syncope git commit: Fixing OpenJPA warnings about 'Supplied parameters do not match expected parameters'

2016-06-14 Thread ilgrosso
Fixing OpenJPA warnings about 'Supplied parameters do not match expected 
parameters'


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

Branch: refs/heads/SYNCOPE-862
Commit: cb2ccfb39106b85848227ad3bc6e43e9a659fadd
Parents: ee078ea
Author: Francesco Chicchiriccò 
Authored: Wed Jun 1 18:52:42 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 11:54:25 2016 +0200

--
 .../persistence/jpa/dao/JPAAnyObjectDAO.java| 30 --
 .../core/persistence/jpa/dao/JPAUserDAO.java| 60 
 .../persistence/jpa/dao/JPAVirSchemaDAO.java| 45 +--
 .../persistence/jpa/outer/ResourceTest.java |  8 +--
 4 files changed, 115 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/cb2ccfb3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index 5280c3c..c527a15 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -56,6 +56,7 @@ import 
org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory;
 import 
org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership;
 import 
org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship;
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -211,12 +212,29 @@ public class JPAAnyObjectDAO extends 
AbstractAnyDAO implements AnyObj
 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)
 @Override
 public List findDynGroupMemberships(final AnyObject anyObject) {
-TypedQuery query = entityManager().createQuery(
-"SELECT e.group FROM " + 
JPAADynGroupMembership.class.getSimpleName()
-+ " e WHERE :anyObject MEMBER OF e.anyObjects", Group.class);
-query.setParameter("anyObject", anyObject);
-
-return query.getResultList();
+Query query = entityManager().createNativeQuery(
+"SELECT t2.id FROM " + JPAADynGroupMembership.TABLE + " t0 "
++ "INNER JOIN ADynGroupMembership_AnyObject t1 "
++ "ON t0.id = t1.aDynGroupMembership_id "
++ "LEFT OUTER JOIN " + JPAGroup.TABLE + " t2 "
++ "ON t0.GROUP_ID = t2.id "
++ "WHERE t1.anyObject_id = ?1");
+query.setParameter(1, anyObject.getKey());
+
+List result = new ArrayList<>();
+for (Object key : query.getResultList()) {
+String actualKey = key instanceof Object[]
+? (String) ((Object[]) key)[0]
+: ((String) key);
+
+Group group = groupDAO.find(actualKey);
+if (group == null) {
+LOG.error("Could not find group with id {}, even though 
returned by the native query", actualKey);
+} else if (!result.contains(group)) {
+result.add(group);
+}
+}
+return result;
 }
 
 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)

http://git-wip-us.apache.org/repos/asf/syncope/blob/cb2ccfb3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index 0624190..0cd53a0 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -66,6 +66,8 @@ import 
org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 imp

[11/17] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/eb6d8632/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
index 496e689..cf3ede1 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
@@ -25,14 +25,11 @@ import javax.persistence.FetchType;
 import javax.persistence.ManyToOne;
 import javax.persistence.MappedSuperclass;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
 import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import 
org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import 
org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
 import org.apache.syncope.core.persistence.jpa.validation.entity.AnyCheck;
 
 @AnyCheck
@@ -81,33 +78,8 @@ public abstract class AbstractAny> 
extends AbstractAnnota
 }
 
 @Override
-public P getPlainAttr(final String plainSchemaName) {
-return IterableUtils.find(getPlainAttrs(), new Predicate() {
-
-@Override
-public boolean evaluate(final P plainAttr) {
-return plainAttr != null && plainAttr.getSchema() != null
-&& 
plainSchemaName.equals(plainAttr.getSchema().getKey());
-}
-});
-}
-
-protected abstract List internalGetResources();
-
-@Override
-public boolean add(final ExternalResource resource) {
-checkType(resource, JPAExternalResource.class);
-return internalGetResources().add((JPAExternalResource) resource);
-}
-
-@Override
 public List getResourceNames() {
 return CollectionUtils.collect(
 getResources(), 
EntityUtils.keyTransformer(), new ArrayList());
 }
-
-@Override
-public List getResources() {
-return internalGetResources();
-}
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/eb6d8632/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
new file mode 100644
index 000..a2a41fa
--- /dev/null
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
@@ -0,0 +1,158 @@
+/*
+ * 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.entity;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.core.persistence.api.entity.Any;
+import org.apache.syncope.core.persistence.api.entity.GroupablePlainAttr;
+import org.apache.syncope.core.persistence.api.entity.Membership;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
+import org.apache.syncope.core.persistence.api.entity.Relationship;
+import org.apache.syncope.core.persistence.api.entity.RelationshipType;
+
+public abstract class AbstractGroupableRelatable<
+L extends Any, 
+M extends Membership, 
+P extends GroupablePlainAttr,
+R extends Any,
+REL exte

[09/17] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
Unique schema key across the three tables


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

Branch: refs/heads/SYNCOPE-862
Commit: 9c45288a8394e145f887b590773c356952315eac
Parents: cb2ccfb
Author: Francesco Chicchiriccò 
Authored: Thu Jun 9 18:20:30 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 11:54:25 2016 +0200

--
 .../notification/NotificationResultManager.java |   1 -
 .../resource/ResourceResultManager.java |   1 -
 .../syncope/common/lib/EntityTOUtils.java   |  18 -
 .../lib/policy/DefaultAccountRuleConf.java  |   7 +-
 .../lib/policy/DefaultPasswordRuleConf.java |   7 +-
 .../common/lib/report/GroupReportletConf.java   |   9 +-
 .../syncope/common/lib/report/Schema.java   |   7 +-
 .../common/lib/report/UserReportletConf.java|   9 +-
 .../common/lib/search/SearchableFields.java |  17 +
 .../syncope/common/lib/to/MappingItemTO.java|  14 -
 .../apache/syncope/common/lib/to/MappingTO.java |  12 -
 .../syncope/common/lib/to/NotificationTO.java   |  11 -
 .../common/lib/types/EntityViolationType.java   |   2 +-
 .../common/lib/types/IntMappingType.java| 203 
 .../api/dao/ExternalResourceDAO.java|   3 +-
 .../core/persistence/api/entity/AnyUtils.java   |   9 +-
 .../api/entity/LinkingMappingItem.java  |  21 -
 .../persistence/api/entity/Notification.java|   5 -
 .../api/entity/resource/MappingItem.java|   5 -
 .../api/search/SearchCondVisitor.java   |   4 +-
 .../persistence/jpa/dao/JPADerSchemaDAO.java|   8 +-
 .../jpa/dao/JPAExternalResourceDAO.java |  10 +-
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  |   2 +-
 .../persistence/jpa/dao/JPAVirSchemaDAO.java|  11 +-
 .../persistence/jpa/entity/AbstractSchema.java  |  40 ++
 .../persistence/jpa/entity/JPAAnyUtils.java | 131 +++--
 .../persistence/jpa/entity/JPADerSchema.java|   8 +-
 .../persistence/jpa/entity/JPANotification.java |  15 -
 .../persistence/jpa/entity/JPAPlainSchema.java  |   6 +-
 .../persistence/jpa/entity/JPAVirSchema.java|   8 +-
 .../entity/anyobject/JPAAPlainAttrValue.java|   3 -
 .../jpa/entity/conf/JPACPlainAttrValue.java |   3 -
 .../jpa/entity/group/JPAGPlainAttrValue.java|   3 -
 .../jpa/entity/resource/JPAMapping.java |  23 +-
 .../jpa/entity/resource/JPAMappingItem.java |  50 +-
 .../jpa/entity/user/JPAUPlainAttrValue.java |   3 -
 .../validation/entity/AbstractValidator.java|   2 +-
 .../jpa/validation/entity/DomainValidator.java  |  12 +-
 .../entity/ExternalResourceValidator.java   |  64 +--
 .../validation/entity/PlainSchemaValidator.java |  36 +-
 .../entity/RelationshipTypeValidator.java   |   4 +-
 .../jpa/validation/entity/RoleValidator.java|   6 +-
 .../validation/entity/SchemaKeyValidator.java   |  62 +--
 .../main/resources/domains/MasterContent.xml|  17 +-
 .../core/persistence/jpa/inner/ConfTest.java|   2 +-
 .../persistence/jpa/inner/DerSchemaTest.java|   2 +-
 .../persistence/jpa/inner/NotificationTest.java |   4 -
 .../persistence/jpa/inner/PlainSchemaTest.java  |   7 +-
 .../persistence/jpa/inner/ResourceTest.java |  30 +-
 .../persistence/jpa/inner/VirSchemaTest.java|   2 +-
 .../persistence/jpa/outer/PlainSchemaTest.java  |  24 +
 .../persistence/jpa/outer/ResourceTest.java |   5 -
 .../persistence/jpa/outer/VirSchemaTest.java|   2 -
 .../test/resources/domains/MasterContent.xml| 187 ---
 .../src/test/resources/domains/TwoContent.xml   |  11 +
 .../provisioning/api/IntAttrNameParser.java | 140 ++
 .../core/provisioning/api/MappingManager.java   |   8 +-
 .../provisioning/java/MappingManagerImpl.java   | 501 +--
 .../java/data/AbstractAnyDataBinder.java|  16 +-
 .../java/data/NotificationDataBinderImpl.java   |   9 +
 .../java/data/ResourceDataBinderImpl.java   |  76 +--
 .../notification/NotificationManagerImpl.java   |  76 +--
 .../provisioning/java/pushpull/PullUtils.java   | 126 ++---
 .../java/ResourceDataBinderTest.java|   2 -
 .../syncope/fit/core/ConfigurationITCase.java   |   2 +-
 .../syncope/fit/core/ConnectorITCase.java   |   2 -
 .../syncope/fit/core/DerSchemaITCase.java   |   2 +-
 .../apache/syncope/fit/core/GroupITCase.java|   3 -
 .../syncope/fit/core/MigrationITCase.java   |  17 -
 .../syncope/fit/core/MultitenancyITCase.java|   7 +-
 .../syncope/fit/core/NotificationITCase.java|   2 -
 .../fit/core/NotificationTaskITCase.java|   3 -
 .../syncope/fit/core/PlainSchemaITCase.java |   4 +-
 .../apache/syncope/fit/core/PushTaskITCase.java |   3 -
 .../apache/syncope/fit/core/ResourceITCase.java |  36 +-
 ...

[03/17] syncope git commit: [SYNCOPE-829] Moving result size protection onto external layers

2016-06-14 Thread ilgrosso
[SYNCOPE-829] Moving result size protection onto external layers


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

Branch: refs/heads/SYNCOPE-862
Commit: 9d15e6f19bd0db7375a024a4d313fe3f84dac70a
Parents: 6401a90
Author: Francesco Chicchiriccò 
Authored: Mon Jun 13 11:33:25 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 11:33:25 2016 +0200

--
 .../common/rest/api/beans/ConnObjectTOListQuery.java  | 10 +-
 .../java/org/apache/syncope/core/logic/ResourceLogic.java |  8 +++-
 2 files changed, 12 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/9d15e6f1/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
--
diff --git 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
index 53df9fb..16d0e66 100644
--- 
a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
+++ 
b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ConnObjectTOListQuery.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.common.rest.api.beans;
 
 import java.io.Serializable;
+import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.QueryParam;
@@ -32,6 +33,8 @@ public class ConnObjectTOListQuery implements Serializable {
 
 private static final long serialVersionUID = -371488230250055359L;
 
+private static final int MAX_SIZE = 100;
+
 public static class Builder {
 
 private final ConnObjectTOListQuery instance = new 
ConnObjectTOListQuery();
@@ -64,10 +67,15 @@ public class ConnObjectTOListQuery implements Serializable {
 private String orderBy;
 
 public Integer getSize() {
-return size;
+return size == null
+? 25
+: size > MAX_SIZE
+? MAX_SIZE
+: size;
 }
 
 @Min(1)
+@Max(MAX_SIZE)
 @QueryParam(JAXRSService.PARAM_SIZE)
 @DefaultValue("25")
 public void setSize(final Integer size) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/9d15e6f1/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
--
diff --git 
a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java 
b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
index 34d9544..915d8ff 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
@@ -77,8 +77,6 @@ import 
org.springframework.transaction.annotation.Transactional;
 @Component
 public class ResourceLogic extends AbstractTransactionalLogic {
 
-private static final transient int MAX_CONNOBJ_SEARCH_SIZE = 1000;
-
 @Autowired
 private ExternalResourceDAO resourceDAO;
 
@@ -320,7 +318,7 @@ public class ResourceLogic extends 
AbstractTransactionalLogic {
 @PreAuthorize("hasRole('" + StandardEntitlement.RESOURCE_LIST_CONNOBJECT + 
"')")
 @Transactional(readOnly = true)
 public Pair> listConnObjects(final String 
key, final String anyTypeKey,
-final Integer size, final String pagedResultsCookie, final 
List orderBy) {
+final int size, final String pagedResultsCookie, final 
List orderBy) {
 
 Triple init = 
connObjectInit(key, anyTypeKey);
 
@@ -349,9 +347,9 @@ public class ResourceLogic extends 
AbstractTransactionalLogic {
 @Override
 public boolean handle(final ConnectorObject connectorObject) {
 
connObjects.add(connObjectUtils.getConnObjectTO(connectorObject));
-// provide safety approach in case of pagination not supported 
or not required (SYNCOPE-829 reworking)
+// safety protection against uncontrolled result size
 count++;
-return count < MAX_CONNOBJ_SEARCH_SIZE;
+return count < size;
 }
 }, size, pagedResultsCookie, orderBy, mapItems);
 



[14/17] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/394f8c98/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
index a2c9271..4c44b7f 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullUtils.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.policy.PullPolicySpec;
-import org.apache.syncope.core.provisioning.java.MappingManagerImpl;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
@@ -47,8 +46,8 @@ import 
org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
+import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
@@ -63,6 +62,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.apache.syncope.core.provisioning.api.pushpull.PullCorrelationRule;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 
 @Transactional(readOnly = true)
 @Component
@@ -103,6 +103,9 @@ public class PullUtils {
 @Autowired
 private AnyUtilsFactory anyUtilsFactory;
 
+@Autowired
+private IntAttrNameParser intAttrNameParser;
+
 public String findMatchingAnyKey(
 final AnyType anyType,
 final String name,
@@ -127,7 +130,7 @@ public class PullUtils {
 public boolean handle(final ConnectorObject obj) {
 return found.add(obj);
 }
-}, 
MappingManagerImpl.buildOperationOptions(MappingManagerImpl.getPullMappingItems(provision).iterator()));
+}, 
MappingUtils.buildOperationOptions(MappingUtils.getPullMappingItems(provision).iterator()));
 
 if (found.isEmpty()) {
 LOG.debug("No {} found on {} with __NAME__ {}", 
provision.getObjectClass(), resource, name);
@@ -170,10 +173,10 @@ public class PullUtils {
 
 List result = new ArrayList<>();
 
-MappingItem connObjectKeyItem = 
MappingManagerImpl.getConnObjectKeyItem(provision);
+MappingItem connObjectKeyItem = 
MappingUtils.getConnObjectKeyItem(provision);
 
 String transfUid = uid;
-for (MappingItemTransformer transformer : 
MappingManagerImpl.getMappingItemTransformers(connObjectKeyItem)) {
+for (MappingItemTransformer transformer : 
MappingUtils.getMappingItemTransformers(connObjectKeyItem)) {
 List output = transformer.beforePull(
 connObjectKeyItem,
 null,
@@ -183,9 +186,8 @@ public class PullUtils {
 }
 }
 
-IntAttrName intAttrName = IntAttrNameParser.parse(
+IntAttrName intAttrName = intAttrNameParser.parse(
 connObjectKeyItem.getIntAttrName(),
-anyUtilsFactory,
 provision.getAnyType().getKind());
 
 if (intAttrName.getField() != null) {
@@ -214,6 +216,8 @@ public class PullUtils {
 result.add(anyObject.getKey());
 }
 break;
+
+default:
 }
 } else if (intAttrName.getSchemaType() != null) {
 switch (intAttrName.getSchemaType()) {
@@ -246,6 +250,8 @@ public class PullUtils {
 result.add(any.getKey());
 }
 break;
+
+default:
 }
 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/394f8c98/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
---

[04/17] syncope git commit: More fixes to enduser

2016-06-14 Thread ilgrosso
More fixes to enduser


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

Branch: refs/heads/SYNCOPE-862
Commit: 339f9d5d3f996d38c08df57c5ec28135f75dda9f
Parents: 9d15e6f
Author: Francesco Chicchiriccò 
Authored: Mon Jun 13 11:49:35 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 11:49:35 2016 +0200

--
 .../main/resources/META-INF/resources/app/index.html   |  1 -
 .../main/resources/META-INF/resources/app/js/app.js| 11 +--
 .../resources/app/js/controllers/UserController.js | 13 +
 .../META-INF/resources/app/js/directives/captcha.js| 12 +++-
 4 files changed, 17 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/339f9d5d/client/enduser/src/main/resources/META-INF/resources/app/index.html
--
diff --git 
a/client/enduser/src/main/resources/META-INF/resources/app/index.html 
b/client/enduser/src/main/resources/META-INF/resources/app/index.html
index d191570..ebba78a 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/index.html
+++ b/client/enduser/src/main/resources/META-INF/resources/app/index.html
@@ -89,7 +89,6 @@ under the License.
 
 
 
-
 
 
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/339f9d5d/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
--
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/app.js 
b/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
index 780d738..3f356c9 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
@@ -211,11 +211,10 @@ app.config(['$stateProvider', '$urlRouterProvider', 
'$httpProvider',
 $httpProvider.defaults.headers.common["If-Modified-Since"] = "0";
 
 $httpProvider.interceptors.push(function ($q, $rootScope, $location) {
-  var numLoadings = 0;
   return {
 'request': function (config, a, b) {
   //if the url is an html, we're changing page
-  if (config.url.indexOf('.html', config.url.length - 5) == -1) {
+  if (config.url.indexOf('.html', config.url.length - 5) === -1) {
 $rootScope.$broadcast("xhrStarted");
 var separator = config.url.indexOf('?') === -1 ? '?' : '&';
 config.url = config.url + separator + 'noCache=' + new 
Date().getTime();
@@ -231,15 +230,15 @@ app.config(['$stateProvider', '$urlRouterProvider', 
'$httpProvider',
 },
 'responseError': function (response) {
   $rootScope.spinner.off();
-  if (response.config.url.indexOf("acceptError=true") == -1) {
+  if (response.config.url.indexOf("acceptError=true") === -1) {
 var status = response.status;
-if (status == 401) {
+if (status === 401) {
   console.error("ERROR ", status);
 }
-if (status == 403) {
+if (status === 403) {
   console.error("UNAUTHORIZED ", status);
 }
-if (status == 400 || status == 404 || status == 412 || status == 
500) {
+if (status === 400 || status === 404 || status === 412 || status 
=== 500) {
   console.error("GENERIC ERROR ", status);
 }
   }

http://git-wip-us.apache.org/repos/asf/syncope/blob/339f9d5d/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
--
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 ad6ea3c..3aa009a 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
@@ -20,11 +20,10 @@
 'use strict';
 
 angular.module("self").controller("UserController", ['$scope', '$rootScope', 
'$location', '$compile', 'AuthService',
-  'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 
'SecurityQuestionService', 'CaptchaService',
-  'GroupService', 'AnyService', 'UserUtil', 'GenericUtil', 
"ValidationExecutor",
+  'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 
'SecurityQuestionService', 'GroupService',
+  'AnyService', 'UserUtil', 'GenericUtil', "ValidationExecutor

[10/17] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/eb6d8632/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
--
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 a144d67..0ccbe14 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
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Transformer;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
@@ -41,6 +40,7 @@ import org.apache.syncope.common.lib.to.RelationshipTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
+import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidPlainAttrValueException;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
@@ -59,6 +59,7 @@ import 
org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.common.lib.types.PropagationByResource;
+import org.apache.syncope.core.persistence.api.dao.AllowedSchemas;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
 import org.apache.syncope.core.provisioning.java.MappingManagerImpl;
 import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
@@ -73,6 +74,7 @@ import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.GroupablePlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Relationship;
@@ -88,6 +90,7 @@ import 
org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
 
 abstract class AbstractAnyDataBinder {
 
@@ -150,7 +153,7 @@ abstract class AbstractAnyDataBinder {
 protected DerAttrHandler derAttrHandler;
 
 @Autowired
-protected VirAttrHandler virAttrHander;
+protected VirAttrHandler virAttrHandler;
 
 @Autowired
 protected ConnObjectUtils connObjectUtils;
@@ -186,20 +189,12 @@ abstract class AbstractAnyDataBinder {
 return schema;
 }
 
-private DerSchema getDerSchema(final String derSchemaName) {
-DerSchema schema = null;
-if (StringUtils.isNotBlank(derSchemaName)) {
-schema = derSchemaDAO.find(derSchemaName);
-if (schema == null) {
-LOG.debug("Ignoring invalid derived schema {}", derSchemaName);
-}
-}
-
-return schema;
-}
-
-private void fillAttr(final List values, final AnyUtils anyUtils,
-final PlainSchema schema, final PlainAttr attr, final 
SyncopeClientException invalidValues) {
+private void fillAttr(
+final List values,
+final AnyUtils anyUtils,
+final PlainSchema schema,
+final PlainAttr attr,
+final SyncopeClientException invalidValues) {
 
 // if schema is multivalue, all values are considered for addition;
 // otherwise only the fist one - if provided - is considered
@@ -210,7 +205,7 @@ abstract class AbstractAnyDataBinder {
 : Collections.singletonList(values.iterator().next()));
 
 for (String value : valuesProvided) {
-if (value == null || value.isEmpty()) {
+if (StringUtils.isBlank(value)) {
 LOG.debug("Null value for {}, ignoring", schema.getKey());
 } else {
 try {
@@ -265,18 +260,37 @@ abstract class AbstractAnyDataBinder {
 return reqValMissing;
 }
 
+private void checkMandatory(
+final PlainSc

[07/17] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
--
diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml 
b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
index a24431e..3d8d0a5 100644
--- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
@@ -22,6 +22,7 @@ under the License.
 
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
 
+  
   
   
@@ -73,6 +80,7 @@ under the License.
attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" 
stringValue="active"/>
 
   
+  
   
   
 
+  
   
   
   
   
+  
   
   
 
+  
   

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
--
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
new file mode 100644
index 000..4beb5ce
--- /dev/null
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/IntAttrNameParser.java
@@ -0,0 +1,140 @@
+/*
+ * 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.provisioning.api;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.core.persistence.api.entity.AnyUtils;
+import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+
+public final class IntAttrNameParser {
+
+private static final Pattern ENCLOSING_GROUP_PATTERN = 
Pattern.compile("^groups\\[[\\w]+\\]\\.[\\w]+");
+
+private static final Pattern RELATED_ANY_OBJECT_PATTERN = 
Pattern.compile("^anyObjects\\[[\\w]+\\]\\.[\\w]+");
+
+private static final Pattern MEMBERSHIP_PATTERN = 
Pattern.compile("^\\[[\\w]+\\]\\.[\\w]+");
+
+public static class IntAttrName {
+
+private AnyTypeKind anyTypeKind;
+
+private String field;
+
+private SchemaType schemaType;
+
+private String schemaName;
+
+private String enclosingGroup;
+
+private String relatedAnyObject;
+
+private String membershipOfGroup;
+
+public AnyTypeKind getAnyTypeKind() {
+return anyTypeKind;
+}
+
+public String getField() {
+return field;
+}
+
+public SchemaType getSchemaType() {
+return schemaType;
+}
+
+public String getSchemaName() {
+return schemaName;
+}
+
+public String getEnclosingGroup() {
+return enclosingGroup;
+}
+
+public String getRelatedAnyObject() {
+return relatedAnyObject;
+}
+
+public String getMembershipOfGroup() {
+return membershipOfGroup;
+}
+
+@Override
+public String toString() {
+return ToStringBuilder.reflectionToString(field, 
ToStringStyle.MULTI_LINE_STYLE);
+}
+
+}
+
+private static void setFieldOrSchemaName(
+final String fieldOrSchemaName, final AnyUtils anyUtils, final 
IntAttrName result) {
+
+if (anyUtils.isFieldName(fieldOrSchemaName)) {
+result.field = fieldOrSchemaName;
+} else {
+result.schemaName = fieldOrSchemaName;
+}
+}
+
+public static IntAttrName parse(
+final String intAttrName,
+final AnyUtilsFactory anyUtilsFactory,
+final AnyTypeKind provisionAnyTypeKind) {
+
+IntAttrName result = new IntAttrName();
+
+if (intAttrName.indexOf('.') == -1) {
+result.anyTypeKind = provisionAnyTypeKind;
+  

[06/17] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
index 70d55ba..012acb9 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
@@ -30,7 +30,6 @@ import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.NotificationTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.service.NotificationService;
 import org.apache.syncope.fit.AbstractITCase;
@@ -51,7 +50,6 @@ public class NotificationITCase extends AbstractITCase {
 
is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query());
 
 notificationTO.setRecipientAttrName("email");
-notificationTO.setRecipientAttrType(IntMappingType.UserPlainSchema);
 
 notificationTO.setSender("sync...@syncope.apache.org");
 notificationTO.setSubject("Test notification");

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
index 5493282..665d38b 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
@@ -46,7 +46,6 @@ import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.beans.ExecuteQuery;
@@ -322,7 +321,6 @@ public class NotificationTaskITCase extends 
AbstractTaskITCase {
 inGroups("f779c0d4-633b-4be5-8f57-32eb478a3ca5").query());
 notification.setSelfAsRecipient(false);
 notification.setRecipientAttrName("email");
-notification.setRecipientAttrType(IntMappingType.UserPlainSchema);
 notification.getStaticRecipients().add(MAIL_ADDRESS);
 
notification.setRecipientsProviderClassName(TestNotificationRecipientsProvider.class.getName());
 
@@ -395,7 +393,6 @@ public class NotificationTaskITCase extends 
AbstractTaskITCase {
 inGroups("f779c0d4-633b-4be5-8f57-32eb478a3ca5").query());
 notification.setSelfAsRecipient(true);
 notification.setRecipientAttrName("email");
-notification.setRecipientAttrType(IntMappingType.UserPlainSchema);
 if (staticRecipients != null) {
 CollectionUtils.addAll(notification.getStaticRecipients(), 
staticRecipients);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
--
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
index 3f9ac6d..36fe888 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
@@ -88,7 +88,7 @@ public class PlainSchemaITCase extends AbstractITCase {
 boolean entityViolationTypeCheck = false;
 for (String element : e.getElements()) {
 if (!entityViolationTypeCheck) {
-entityViolationTypeCheck = 
element.contains(EntityViolationType.InvalidName.name());
+entityViolationTypeCheck = 
element.contains(EntityViolationType.InvalidKey.name());
 }
 }
 assertTrue(entityViolationTypeCheck);
@@ -334,7 +334,7 @@ public class PlainSchemaITCase extends AbstractITCase {
 fail();
 } catch (SyncopeClientException e) {
 assertEquals(ClientExceptionType.InvalidPlainSchema, e.getTyp

[15/17] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/394f8c98/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
--
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
index e2f793a..7d38624 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java
@@ -21,24 +21,21 @@ package org.apache.syncope.core.provisioning.java;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import org.apache.commons.collections4.ListUtils;
-import org.apache.commons.jexl3.JexlContext;
-import org.apache.commons.jexl3.MapContext;
-import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
 import 
org.apache.syncope.core.provisioning.api.utils.policy.InvalidPasswordRuleConf;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
@@ -48,53 +45,46 @@ import 
org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
 import org.apache.syncope.core.spring.security.Encryptor;
-import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
 import org.apache.syncope.core.spring.security.PasswordGenerator;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
+import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Schema;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import 
org.apache.syncope.core.persistence.api.entity.anyobject.APlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.data.MappingItemTransformer;
-import 
org.apache.syncope.core.provisioning.java.data.JEXLMappingItemTransformer;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.identityconnectors.framework.common.FrameworkUtil;
 import org.

[02/17] syncope git commit: Upgrading Jackson and Maven Javadoc plugin

2016-06-14 Thread ilgrosso
Upgrading Jackson and Maven Javadoc plugin


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

Branch: refs/heads/SYNCOPE-862
Commit: 6401a90392ef63cf1f8c89e79d16fc858a27d26f
Parents: 2ff73da
Author: Francesco Chicchiriccò 
Authored: Mon Jun 13 10:12:36 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 10:12:36 2016 +0200

--
 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/6401a903/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 8c6396b..aa76443 100644
--- a/pom.xml
+++ b/pom.xml
@@ -336,7 +336,7 @@ under the License.
 
 2.17.1  
 
-2.7.4
+2.7.5
 
 4.2.6.RELEASE
 4.1.0.RELEASE
@@ -1340,7 +1340,7 @@ under the License.
 
   org.apache.maven.plugins
   maven-javadoc-plugin
-  2.10.3  
+  2.10.4  
 
 
 
@@ -1900,7 +1900,7 @@ under the License.
 
   org.apache.maven.plugins
   maven-javadoc-plugin
-  2.10.3
+  2.10.4
   
 apidocs/2.0
 false



[17/17] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Features complete


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

Branch: refs/heads/SYNCOPE-862
Commit: 394f8c98cf00f48f655000d77b578151e6dde3b1
Parents: 9c45288
Author: Francesco Chicchiriccò 
Authored: Tue Jun 14 17:57:42 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Tue Jun 14 17:57:42 2016 +0200

--
 .../client/console/commons/Constants.java   |  34 +-
 .../NotificationWizardBuilder.java  | 103 +--
 .../client/console/panels/BeanPanel.java|  60 +-
 .../console/panels/ConnObjectListViewPanel.java |   2 +-
 .../client/console/rest/SchemaRestClient.java   |   1 +
 .../client/console/wizards/any/Groups.java  |  11 +-
 .../console/wizards/any/Relationships.java  |  10 +-
 .../wizards/resources/ResourceMappingPanel.java | 317 --
 .../SyncopeConsoleApplication.properties|   1 +
 .../SyncopeConsoleApplication_it.properties |   1 +
 .../SyncopeConsoleApplication_pt_BR.properties  |   1 +
 .../SyncopeConsoleApplication_ru.properties |   1 +
 .../NotificationWizardBuilder$Details.html  |   3 -
 ...NotificationWizardBuilder$Details.properties |   3 +-
 ...ificationWizardBuilder$Details_it.properties |   3 +-
 ...cationWizardBuilder$Details_pt_BR.properties |   3 +-
 ...ificationWizardBuilder$Details_ru.properties |  14 +-
 .../NotificationWizardBuilder$Events.properties |   2 -
 ...tificationWizardBuilder$Events_it.properties |   2 -
 ...icationWizardBuilder$Events_pt_BR.properties |   2 -
 ...tificationWizardBuilder$Events_ru.properties |  52 +-
 .../console/pages/Notifications.properties  |   2 -
 .../console/pages/Notifications_it.properties   |   2 -
 .../pages/Notifications_pt_BR.properties|   2 -
 .../console/pages/Notifications_ru.properties   |  50 +-
 .../wizards/resources/ResourceMappingPanel.html |  19 +-
 .../resources/ResourceProvisionPanel.properties |   5 +-
 .../ResourceProvisionPanel_it.properties|   5 +-
 .../ResourceProvisionPanel_pt_BR.properties |   5 +-
 .../ResourceProvisionPanel_ru.properties|   6 +-
 .../syncope/common/lib/to/AnyObjectTO.java  |   2 +-
 .../common/lib/to/GroupableRelatableTO.java |  36 ++
 .../syncope/common/lib/to/GroupableTO.java  |  31 -
 .../syncope/common/lib/to/RelatableTO.java  |  30 -
 .../apache/syncope/common/lib/to/UserTO.java|   2 +-
 .../syncope/core/logic/ResourceLogic.java   |   6 +-
 .../logic/report/ReconciliationReportlet.java   |   6 +-
 .../core/persistence/api/dao/SchemaDAO.java |   2 +-
 .../persistence/jpa/entity/JPAAnyUtils.java |  11 +-
 .../jpa/entity/resource/JPAMappingItem.java |   4 +-
 .../entity/ExternalResourceValidator.java   | 102 +--
 .../persistence/jpa/inner/ResourceTest.java |  65 +-
 .../persistence/jpa/outer/ResourceTest.java |   1 +
 .../test/resources/domains/MasterContent.xml|  13 +-
 .../src/test/resources/domains/TwoContent.xml   |   4 +-
 .../core/provisioning/api/IntAttrName.java  | 103 +++
 .../provisioning/api/IntAttrNameParser.java | 140 -
 .../core/provisioning/api/MappingManager.java   |   7 +-
 .../api/data/MappingItemTransformer.java|   4 +-
 .../provisioning/java/ConnectorFacadeProxy.java |   5 +-
 .../provisioning/java/IntAttrNameParser.java| 120 
 .../provisioning/java/MappingManagerImpl.java   | 623 +++
 .../provisioning/java/VirAttrHandlerImpl.java   |   5 +-
 .../java/data/AbstractAnyDataBinder.java|  37 +-
 .../data/DefaultMappingItemTransformer.java |   2 +-
 .../java/data/JEXLMappingItemTransformer.java   |  46 +-
 .../java/data/NotificationDataBinderImpl.java   |   7 +-
 .../java/data/ResourceDataBinderImpl.java   |  60 +-
 .../java/data/UserDataBinderImpl.java   |   5 +-
 .../notification/NotificationManagerImpl.java   |  30 +-
 .../AbstractPropagationTaskExecutor.java|   6 +-
 .../propagation/PropagationManagerImpl.java |   4 +-
 .../pushpull/AbstractPushResultHandler.java |   4 +-
 .../pushpull/PlainAttrsPullCorrelationRule.java |   6 +-
 .../java/pushpull/PullJobDelegate.java  |  10 +-
 .../provisioning/java/pushpull/PullUtils.java   |  22 +-
 .../java/utils/ConnObjectUtils.java |   3 +-
 .../provisioning/java/utils/MappingUtils.java   | 239 +++
 .../src/main/resources/provisioningContext.xml  |   1 +
 .../java/IntAttrNameParserTest.java | 161 +
 .../core/provisioning/java/MappingTest.java |   5 +-
 .../reference/PrefixMappingItemTransformer.java |   4 +-
 .../fit/console/NotificationsITCase.java|  12 +-
 .../syncope/fit/console/TopologyITCase.java |  13 +-
 .../apache/syncope/fit/core/GroupITCase.java|  31 +-
 .

[01/17] syncope git commit: [SYNCOPE-829] provides next button to browse resource connector objects. Furthermore a safety check has been provided into the method to retrieve the list of connector obje

2016-06-14 Thread ilgrosso
Repository: syncope
Updated Branches:
  refs/heads/SYNCOPE-862 c1dec4fda -> 394f8c98c (forced update)


[SYNCOPE-829] provides next button to browse resource connector objects. 
Furthermore a safety check has been provided into the method to retrieve the 
list of connector objects: the maximum number of returned items is set to 1k. 
Before to close the related issue I will wait to discuss this last feature in 
order to collect feedbacks and evaluate the goodness of this implementation


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

Branch: refs/heads/SYNCOPE-862
Commit: 2ff73daa024ea1ccaf20c9c6717058d85659c43f
Parents: cc33c8d
Author: fmartelli 
Authored: Fri Jun 10 16:52:06 2016 +0200
Committer: fmartelli 
Committed: Fri Jun 10 16:52:06 2016 +0200

--
 .../panels/ConnObjectDirectoryPanel.java| 194 ---
 .../console/panels/ConnObjectListViewPanel.java | 145 ++
 .../client/console/panels/ConnObjects.java  |  14 +-
 .../client/console/panels/ListViewPanel.java|  32 ++-
 .../client/console/rest/ResourceRestClient.java |  31 ++-
 .../console/wizards/any/Relationships.java  |   4 +-
 .../resources/ResourceProvisionPanel.java   |   3 +-
 .../console/panels/ConnObjectListViewPanel.html |  26 +++
 .../syncope/core/logic/ResourceLogic.java   |   9 +-
 9 files changed, 235 insertions(+), 223 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/2ff73daa/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
deleted file mode 100644
index 99dde2e..000
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
+++ /dev/null
@@ -1,194 +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.client.console.panels;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.syncope.client.console.commons.ConnIdSpecialAttributeName;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.DirectoryDataProvider;
-import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import 
org.apache.syncope.client.console.panels.ConnObjectDirectoryPanel.ConnObjectDataProvider;
-import org.apache.syncope.client.console.rest.ResourceRestClient;
-import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
-import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AttrColumn;
-import 
org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import 
org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
-import org.apache.syncope.common.lib.to.ConnObjectTO;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
-
-public abstract class ConnObjectDirectoryPanel
-extends DirectoryPanel
-implements ModalPanel {
-

[16/17] syncope git commit: [SYNCOPE-862] Features complete

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/394f8c98/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
--
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
index 302a798..46e6700 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications_ru.properties
@@ -15,55 +15,51 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# notifications=Уведомления
+# 
notifications=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 
notifications=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f
-# notification.templates=Шаблоны
+# 
notification.templates=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd\u00d1\u008b
 notification.templates=\u0428\u0430\u0431\u043b\u043e\u043d\u044b
 
-# sender=Отправитель
+# 
sender=\u00d0\u009e\u00d1\u0082\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00b8\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008c
 sender=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c
-# template=Шаблон
+# 
template=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd
 template=\u0428\u0430\u0431\u043b\u043e\u043d
-# traceLevel=Логирование
+# 
traceLevel=\u00d0\u009b\u00d0\u00be\u00d0\u00b3\u00d0\u00b8\u00d1\u0080\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 traceLevel=\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
-# notification=Уведомление
+# 
notification=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 notification=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# about=Уведомление о
+# 
about=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 \u00d0\u00be
 about=\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e
-# events=События
+# 
events=\u00d0\u00a1\u00d0\u00be\u00d0\u00b1\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d1\u008f
 events=\u0421\u043e\u0431\u044b\u0442\u0438\u044f
-# selfAsRecipient=Включить в получатели 
пользователей, о которых рассылается 
уведомление
+# 
selfAsRecipient=\u00d0\u0092\u00d0\u00ba\u00d0\u00bb\u00d1\u008e\u00d1\u0087\u00d0\u00b8\u00d1\u0082\u00d1\u008c
 \u00d0\u00b2 
\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u0083\u00d1\u0087\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b8
 
\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d0\u00b9,
 \u00d0\u00be 
\u00d0\u00ba\u00d0\u00be\u00d1\u0082\u00d0\u00be\u00d1\u0080\u00d1\u008b\u00d1\u0085
 
\u00d1\u0080\u00d0\u00b0\u00d1\u0081\u00d1\u0081\u00d1\u008b\u00d0\u00bb\u00d0\u00b0\u00d0\u00b5\u00d1\u0082\u00d1\u0081\u00d1\u008f
 
\u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 selfAsRecipient=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 
\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, 
\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 
\u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f 
\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435
-# recipientAttrType=Тип атрибута с адресом 
электронной почты получателей
-recipientAttrType=\u0422\u0438\u043f 
\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 
\u0430\u0434\u0440\u0435\u0441\u043e\u043c 
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 
\u043f\u043e\u0447\u0442\u044b 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# recipientAttrName=Наименование атрибута с 
адресом электронной почты получателей
-recipientAttrName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435
 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441 
\u0430\u0434\u0440\u0435\u0441\u043e\u043c 
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 
\u043f\u043e\u0447\u0442\u044b 
\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439
-# checkRecipients=Поиск полу

[08/17] syncope git commit: Unique schema key across the three tables

2016-06-14 Thread ilgrosso
http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
index 4bbb240..2817795 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaValidator.java
@@ -20,7 +20,6 @@ package 
org.apache.syncope.core.persistence.jpa.validation.entity;
 
 import javax.validation.ConstraintValidatorContext;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -29,37 +28,30 @@ public class PlainSchemaValidator extends 
AbstractValidatorhttp://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
index 8051bda..9953859 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeValidator.java
@@ -31,8 +31,8 @@ public class RelationshipTypeValidator extends 
AbstractValidatorhttp://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
index 29558a0..c1de34d 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleValidator.java
@@ -28,10 +28,10 @@ public class RoleValidator extends 
AbstractValidator {
 public boolean isValid(final Role role, final ConstraintValidatorContext 
context) {
 context.disableDefaultConstraintViolation();
 
-if (role.getKey() == null || 
!NAME_PATTERN.matcher(role.getKey()).matches()) {
+if (role.getKey() == null || 
!KEY_PATTERN.matcher(role.getKey()).matches()) {
 context.buildConstraintViolationWithTemplate(
-getTemplate(EntityViolationType.InvalidName, "Invalid Role 
name")).
-addPropertyNode("name").addConstraintViolation();
+getTemplate(EntityViolationType.InvalidKey, "Invalid role 
key")).
+addPropertyNode("key").addConstraintViolation();
 return false;
 }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c45288a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
--
diff --git 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
index b4d00d5..8c71620 100644
--- 
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
+++ 
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyValidator.java
@@ -18,77 +18,37 @@
  */
 package org.apache.syncope.core.persistence.jpa.validation.entity;
 
-import java.lang.reflect.Field;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 import javax.validation.ConstraintValidatorContext;
-import org.apache.commons.lang3.ClassUtils;
 import org.apache.syncope.common.lib.types.EntityViolationType;

[12/17] syncope git commit: [SYNCOPE-862] Preliminary work

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Preliminary work


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

Branch: refs/heads/SYNCOPE-862
Commit: eb6d8632dfe0b5b1fe59757317eb4baffb71eaf0
Parents: 339f9d5
Author: Francesco Chicchiriccò 
Authored: Tue May 31 17:59:00 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 11:54:25 2016 +0200

--
 .../AnyObjectDisplayAttributesModalPanel.java   |   2 +-
 .../html/repeater/data/table/AttrColumn.java|  19 +-
 .../data/table/ConnObjectAttrColumn.java|  63 +
 .../console/wizards/any/ConnObjectPanel.java|   4 +-
 .../client/console/wizards/any/Groups.java  |   1 -
 .../wizards/resources/ResourceMappingPanel.java |   1 +
 .../syncope/common/lib/AnyOperations.java   |  90 +--
 .../common/lib/patch/AnyObjectPatch.java|  10 +
 .../syncope/common/lib/patch/AnyPatch.java  |  10 +-
 .../common/lib/patch/AttributablePatch.java |  38 +++
 .../common/lib/patch/MembershipPatch.java   |  33 ++-
 .../syncope/common/lib/to/AnyObjectTO.java  |  10 +
 .../org/apache/syncope/common/lib/to/AnyTO.java |  34 ++-
 .../syncope/common/lib/to/AttributableTO.java   |  53 
 .../syncope/common/lib/to/ConnObjectTO.java |   9 +-
 .../syncope/common/lib/to/MembershipTO.java |  75 +-
 .../syncope/common/lib/to/RelationshipTO.java   |  26 --
 .../common/lib/types/EntityViolationType.java   |   4 +-
 .../common/lib/types/IntMappingType.java|   8 +-
 .../persistence/api/dao/AllowedSchemas.java | 114 +
 .../core/persistence/api/dao/AnyDAO.java|   3 +-
 .../core/persistence/api/dao/AnyObjectDAO.java  |   4 +
 .../core/persistence/api/entity/Any.java|   2 +
 .../core/persistence/api/entity/AnyUtils.java   |   3 +-
 .../api/entity/GroupablePlainAttr.java  |  26 ++
 .../api/entity/GroupableRelatable.java  | 100 
 .../api/entity/anyobject/APlainAttr.java|   4 +-
 .../api/entity/anyobject/AnyObject.java |  24 +-
 .../persistence/api/entity/user/UPlainAttr.java |   4 +-
 .../core/persistence/api/entity/user/User.java  |  32 +--
 .../persistence/jpa/dao/AbstractAnyDAO.java |  56 +++--
 .../persistence/jpa/dao/JPAAnyObjectDAO.java|  34 +++
 .../core/persistence/jpa/dao/JPAConfDAO.java|  12 +-
 .../core/persistence/jpa/dao/JPAGroupDAO.java   |  32 ++-
 .../persistence/jpa/dao/JPAPlainAttrDAO.java|   2 +-
 .../persistence/jpa/entity/AbstractAny.java |  28 ---
 .../jpa/entity/AbstractGroupableRelatable.java  | 158 
 .../persistence/jpa/entity/JPAAnyUtils.java |  13 +-
 .../jpa/entity/anyobject/JPAAPlainAttr.java |  22 +-
 .../jpa/entity/anyobject/JPAAnyObject.java  |  95 +++
 .../persistence/jpa/entity/conf/JPAConf.java|   8 +-
 .../jpa/entity/group/JPAGPlainAttr.java |   4 +-
 .../persistence/jpa/entity/group/JPAGroup.java  |  45 +++-
 .../jpa/entity/resource/JPAMappingItem.java |   4 +
 .../jpa/entity/user/JPAUPlainAttr.java  |  22 +-
 .../persistence/jpa/entity/user/JPAUser.java|  73 ++
 .../jpa/validation/entity/AnyValidator.java |  55 ++--
 .../entity/EntityValidationListener.java|   5 +-
 .../entity/PlainAttrValueValidator.java |   2 +-
 .../persistence/jpa/inner/AnyObjectTest.java|   1 +
 .../persistence/jpa/inner/PlainAttrTest.java|   2 +-
 .../core/persistence/jpa/outer/ConfTest.java|  72 ++
 .../core/persistence/jpa/outer/GroupTest.java   |   1 +
 .../core/persistence/jpa/outer/UserTest.java|  91 ++-
 .../test/resources/domains/MasterContent.xml|  11 +-
 .../core/provisioning/api/DerAttrHandler.java   |  23 +-
 .../core/provisioning/api/VirAttrHandler.java   |  28 ++-
 .../provisioning/java/DerAttrHandlerImpl.java   |  32 ++-
 .../provisioning/java/MappingManagerImpl.java   |  20 ++
 .../provisioning/java/VirAttrHandlerImpl.java   |  36 ++-
 .../java/data/AbstractAnyDataBinder.java| 248 ---
 .../java/data/AnyObjectDataBinderImpl.java  | 115 +++--
 .../java/data/GroupDataBinderImpl.java  |   6 +-
 .../java/data/UserDataBinderImpl.java   |  90 +--
 .../java/job/SetUMembershipsJob.java|   3 +-
 .../provisioning/java/pushpull/PullUtils.java   |   8 +
 .../java/utils/ConnObjectUtils.java |   2 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   2 +-
 fit/build-tools/src/main/resources/testdb.sql   |   1 +
 .../syncope/fit/console/AnyObjectsITCase.java   |   6 +-
 .../syncope/fit/console/BulkActionITCase.java   |   2 +-
 .../fit/console/DisplayAttributesITCase.java|   4 +-
 .../syncope/fit/core/AnyObjectITCase.java   |   1 +
 .../syncope/fit/core/AuthenticationITCase.java  |   1 

[13/17] syncope git commit: [SYNCOPE-862] Now managing any object's name via admin console

2016-06-14 Thread ilgrosso
[SYNCOPE-862] Now managing any object's name via admin console


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

Branch: refs/heads/SYNCOPE-862
Commit: ee078eaf2bdffce5f08c37f9c7e7059ad01023a0
Parents: eb6d863
Author: Francesco Chicchiriccò 
Authored: Wed Jun 1 12:57:33 2016 +0200
Committer: Francesco Chicchiriccò 
Committed: Mon Jun 13 11:54:25 2016 +0200

--
 .../console/wizards/any/AnyObjectDetails.java   | 53 
 .../wizards/any/AnyObjectWizardBuilder.java | 22 +++-
 .../console/wizards/any/AnyWizardBuilder.java   |  3 --
 .../console/wizards/any/GroupDetails.java   |  4 +-
 .../console/wizards/any/AnyObjectDetails.html   | 25 +
 .../syncope/fit/core/MembershipITCase.java  | 44 
 6 files changed, 144 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/ee078eaf/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
new file mode 100644
index 000..5d149e7
--- /dev/null
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
@@ -0,0 +1,53 @@
+/*
+ * 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.wizards.any;
+
+import java.util.List;
+import org.apache.syncope.client.console.commons.status.StatusBean;
+import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+public class AnyObjectDetails extends Details {
+
+private static final long serialVersionUID = 855618618337931784L;
+
+public AnyObjectDetails(
+final AnyWrapper wrapper,
+final IModel> statusModel,
+final boolean templateMode,
+final boolean includeStatusPanel,
+final PageReference pageRef) {
+
+super(wrapper, statusModel, includeStatusPanel, pageRef);
+
+AnyObjectTO anyObjectTO = wrapper.getInnerObject();
+
+AjaxTextFieldPanel name = new AjaxTextFieldPanel("name", "name",
+new PropertyModel(anyObjectTO, "name"), false);
+if (templateMode) {
+name.enableJexlHelp();
+} else {
+name.addRequiredLabel();
+}
+this.add(name);
+}
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/ee078eaf/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
index f92bb31..5952017 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
@@ -19,20 +19,27 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import java.io.Serializable;
-
+import java.util.Collections;
 import java.util.List;
+import org.apache.syncope.client.console.commons.status.StatusBean;
 import org.apache.syncope.client.console.layout.AnyObjectForm;
 import org.apache.syncope.client.console.layout.AnyObjectFormLayoutInfo;
+import org.apache.syncope.client.console.rest.AnyObjectRestClient;
+import org.

[1/2] syncope git commit: [SYNCOPE-860] provides role and group members inspecting feature

2016-06-14 Thread fmartelli
Repository: syncope
Updated Branches:
  refs/heads/master befa49c32 -> f5f6270ef


http://git-wip-us.apache.org/repos/asf/syncope/blob/f5f6270e/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
index 681744e..7dc90bf 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
@@ -73,6 +73,7 @@ public final class ActionLinksPanel 
extends Panel {
 super.add(new Fragment("panelEnable", "emptyFragment", this));
 super.add(new Fragment("panelNotFound", "emptyFragment", this));
 super.add(new Fragment("panelView", "emptyFragment", this));
+super.add(new Fragment("panelMembers", "emptyFragment", this));
 super.add(new Fragment("panelSearch", "emptyFragment", this));
 super.add(new Fragment("panelDelete", "emptyFragment", this));
 super.add(new Fragment("panelExecute", "emptyFragment", this));
@@ -127,7 +128,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -146,7 +148,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -165,7 +168,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -184,7 +188,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -203,7 +208,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -222,7 +228,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
+return disableIndicator || !link.isIndicatorEnabled()
+? StringUtils.EMPTY : 
super.getAjaxIndicatorMarkupId();
 }
 }.setVisible(link.isEnabled(model.getObject(;
 break;
@@ -241,7 +248,8 @@ public final class ActionLinksPanel 
extends Panel {
 
 @Override
 public String getAjaxIndicatorMarkupId() {
-return disableIndicator ? StringUtils.EMPTY : 
supe

[2/2] syncope git commit: [SYNCOPE-860] provides role and group members inspecting feature

2016-06-14 Thread fmartelli
[SYNCOPE-860] provides role and group members inspecting feature


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

Branch: refs/heads/master
Commit: f5f6270ef2f437a036f36e5cd6a9e31d0515e7ab
Parents: befa49c
Author: fmartelli 
Authored: Tue Jun 14 16:55:27 2016 +0200
Committer: fmartelli 
Committed: Tue Jun 14 16:55:27 2016 +0200

--
 .../console/panels/AnyDirectoryPanel.java   |   6 +-
 .../console/panels/AnyObjectDirectoryPanel.java | 109 +++-
 .../syncope/client/console/panels/AnyPanel.java |  23 ++-
 .../client/console/panels/DirectoryPanel.java   |  11 +-
 .../console/panels/GroupDirectoryPanel.java | 130 +-
 .../client/console/panels/ListViewPanel.java|   8 +-
 .../console/panels/MembersTogglePanel.java  | 118 +
 .../client/console/panels/ParametersPanel.java  |   6 +-
 .../console/panels/RoleDirectoryPanel.java  |  65 ++-
 .../console/panels/SecurityQuestionsPanel.java  |   6 +-
 .../console/panels/UserDirectoryPanel.java  | 139 ---
 .../AnyObjectSelectionDirectoryPanel.java   |   8 +-
 .../search/AnySelectionDirectoryPanel.java  |   7 +-
 .../search/GroupSelectionDirectoryPanel.java|   8 +-
 .../search/UserSelectionDirectoryPanel.java |   8 +-
 .../wicket/markup/html/form/ActionLink.java |   5 +
 .../markup/html/form/ActionLinksPanel.java  | 171 +--
 .../client/console/widgets/JobWidget.java   |  12 +-
 .../ReconciliationDetailsModalPanel.java|   4 +-
 .../console/widgets/ReconciliationWidget.java   |  10 +-
 .../client/console/wizards/WizardMgtPanel.java  |  19 ++-
 .../console/wizards/any/Relationships.java  |   2 +-
 .../panels/GroupDirectoryPanel.properties   |   1 +
 .../panels/GroupDirectoryPanel_it.properties|   1 +
 .../panels/GroupDirectoryPanel_pt_BR.properties |   1 +
 .../panels/GroupDirectoryPanel_ru.properties|   1 +
 .../console/panels/MembersTogglePanel.html  |  32 
 .../panels/RoleDirectoryPanel.properties|   1 +
 .../panels/RoleDirectoryPanel_it.properties |   1 +
 .../panels/RoleDirectoryPanel_pt_BR.properties  |   1 +
 .../panels/RoleDirectoryPanel_ru.properties |   5 +-
 .../markup/html/form/ActionLinksPanel.html  |   5 +
 .../panels/CamelRoutesDirectoryPanel.java   |   4 +-
 .../syncope/fit/console/GroupsITCase.java   |  28 +++
 .../apache/syncope/fit/console/RolesITCase.java |  17 ++
 35 files changed, 754 insertions(+), 219 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/syncope/blob/f5f6270e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
index f2e8aec..256df52 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java
@@ -83,7 +83,11 @@ public abstract class AnyDirectoryPanel utilityModal = new 
BaseModal<>("outer");
 
 protected AnyDirectoryPanel(final String id, final Builder builder) {
-super(id, builder);
+this(id, builder, true);
+}
+
+protected AnyDirectoryPanel(final String id, final Builder builder, 
final boolean wizardInModal) {
+super(id, builder, wizardInModal);
 this.realm = builder.realm;
 this.type = builder.type;
 this.fiql = builder.fiql;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f5f6270e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
--
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
index ecdb0ff..5473ee0 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
@@ -60,8 +60,8 @@ public class AnyObjectDirectoryPanel extends 
AnyDirectoryPanel(new 
ResourceModel("actions")) {
 
 private static final long serialVersionUID = -3503023501954863131L;
@@ -118,24 +116,6 @@ public class AnyObjectDirectoryPanel extends 
AnyDirectoryPanel() {
 
-