You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/04/19 15:02:03 UTC

[16/24] syncope git commit: [SYNCOPE-822] UUID keys

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
index 7d30e0b..34ab391 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
@@ -86,18 +86,6 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
     @Autowired
     protected SyncopeLogic syncopeLogic;
 
-    @PreAuthorize("hasRole('" + StandardEntitlement.USER_READ + "')")
-    @Transactional(readOnly = true)
-    public String getUsername(final Long key) {
-        return binder.getUserTO(key).getUsername();
-    }
-
-    @PreAuthorize("hasRole('" + StandardEntitlement.USER_READ + "')")
-    @Transactional(readOnly = true)
-    public Long getKey(final String username) {
-        return binder.getUserTO(username).getKey();
-    }
-
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_LIST + "')")
     @Transactional(readOnly = true)
     @Override
@@ -136,7 +124,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_READ + "')")
     @Transactional(readOnly = true)
     @Override
-    public UserTO read(final Long key) {
+    public UserTO read(final String key) {
         return binder.returnUserTO(binder.getUserTO(key));
     }
 
@@ -206,7 +194,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
             securityChecks(effectiveRealms, before.getLeft().getRealm(), null);
         }
 
-        Pair<Long, List<PropagationStatus>> created =
+        Pair<String, List<PropagationStatus>> created =
                 provisioningManager.create(before.getLeft(), storePassword, nullPriorityAsync);
 
         return after(binder.returnUserTO(binder.getUserTO(created.getKey())), created.getRight(), before.getRight());
@@ -241,15 +229,15 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
             securityChecks(effectiveRealms, before.getLeft().getRealm().getValue(), before.getLeft().getKey());
         }
 
-        Pair<Long, List<PropagationStatus>> updated = provisioningManager.update(before.getLeft(), nullPriorityAsync);
+        Pair<String, List<PropagationStatus>> updated = provisioningManager.update(before.getLeft(), nullPriorityAsync);
 
         return after(binder.returnUserTO(binder.getUserTO(updated.getKey())), updated.getRight(), before.getRight());
     }
 
-    protected Pair<Long, List<PropagationStatus>> setStatusOnWfAdapter(
+    protected Pair<String, List<PropagationStatus>> setStatusOnWfAdapter(
             final StatusPatch statusPatch, final boolean nullPriorityAsync) {
 
-        Pair<Long, List<PropagationStatus>> updated;
+        Pair<String, List<PropagationStatus>> updated;
 
         switch (statusPatch.getType()) {
             case SUSPEND:
@@ -279,7 +267,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
                 toUpdate.getRealm());
         securityChecks(effectiveRealms, toUpdate.getRealm(), toUpdate.getKey());
 
-        Pair<Long, List<PropagationStatus>> updated = setStatusOnWfAdapter(statusPatch, nullPriorityAsync);
+        Pair<String, List<PropagationStatus>> updated = setStatusOnWfAdapter(statusPatch, nullPriorityAsync);
 
         return after(
                 binder.returnUserTO(binder.getUserTO(updated.getKey())),
@@ -302,7 +290,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
             throw new NotFoundException("Null username");
         }
 
-        User user = userDAO.find(username);
+        User user = userDAO.findByUsername(username);
         if (user == null) {
             throw new NotFoundException("User " + username);
         }
@@ -334,7 +322,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
 
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_DELETE + "')")
     @Override
-    public ProvisioningResult<UserTO> delete(final Long key, final boolean nullPriorityAsync) {
+    public ProvisioningResult<UserTO> delete(final String key, final boolean nullPriorityAsync) {
         UserTO userTO = binder.getUserTO(key);
         return doDelete(userTO, false, nullPriorityAsync);
     }
@@ -379,7 +367,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
 
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     @Override
-    public UserTO unlink(final Long key, final Collection<String> resources) {
+    public UserTO unlink(final String key, final Collection<String> resources) {
         // security checks
         UserTO user = binder.getUserTO(key);
         Set<String> effectiveRealms = getEffectiveRealms(
@@ -402,7 +390,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
 
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     @Override
-    public UserTO link(final Long key, final Collection<String> resources) {
+    public UserTO link(final String key, final Collection<String> resources) {
         // security checks
         UserTO user = binder.getUserTO(key);
         Set<String> effectiveRealms = getEffectiveRealms(
@@ -426,7 +414,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     @Override
     public ProvisioningResult<UserTO> unassign(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         // security checks
         UserTO user = binder.getUserTO(key);
@@ -451,7 +439,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     @Override
     public ProvisioningResult<UserTO> assign(
-            final Long key,
+            final String key,
             final Collection<String> resources,
             final boolean changepwd,
             final String password,
@@ -485,7 +473,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     @Override
     public ProvisioningResult<UserTO> deprovision(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         // security checks
         UserTO user = binder.getUserTO(key);
@@ -505,7 +493,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     @Override
     public ProvisioningResult<UserTO> provision(
-            final Long key,
+            final String key,
             final Collection<String> resources,
             final boolean changePwd,
             final String password,
@@ -533,9 +521,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
 
         if (!"confirmPasswordReset".equals(method.getName()) && ArrayUtils.isNotEmpty(args)) {
             for (int i = 0; key == null && i < args.length; i++) {
-                if (args[i] instanceof Long) {
-                    key = (Long) args[i];
-                } else if (args[i] instanceof String) {
+                if (args[i] instanceof String) {
                     key = (String) args[i];
                 } else if (args[i] instanceof UserTO) {
                     key = ((UserTO) args[i]).getKey();
@@ -545,10 +531,9 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> {
             }
         }
 
-        if ((key != null) && !key.equals(0L)) {
+        if (key instanceof String) {
             try {
-                return binder.returnUserTO(key instanceof Long
-                        ? binder.getUserTO((Long) key) : binder.getUserTO((String) key));
+                return binder.getUserTO((String) key);
             } catch (Throwable ignore) {
                 LOG.debug("Unresolved reference", ignore);
                 throw new UnresolvedReferenceException(ignore);

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
index ebde234..41b89ca 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java
@@ -66,7 +66,7 @@ public class UserWorkflowLogic extends AbstractTransactionalLogic<WorkflowFormTO
 
     @PreAuthorize("hasRole('" + StandardEntitlement.USER_UPDATE + "')")
     public UserTO executeWorkflowTask(final UserTO userTO, final String taskId) {
-        WorkflowResult<Long> updated = uwfAdapter.execute(userTO, taskId);
+        WorkflowResult<String> updated = uwfAdapter.execute(userTO, taskId);
 
         UserPatch userPatch = new UserPatch();
         userPatch.setKey(userTO.getKey());
@@ -84,7 +84,7 @@ public class UserWorkflowLogic extends AbstractTransactionalLogic<WorkflowFormTO
     @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_FORM_READ + "') and hasRole('"
             + StandardEntitlement.USER_READ + "')")
     @Transactional(rollbackFor = { Throwable.class })
-    public WorkflowFormTO getFormForUser(final Long key) {
+    public WorkflowFormTO getFormForUser(final String key) {
         User user = userDAO.authFind(key);
         return uwfAdapter.getForm(user.getWorkflowId());
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java
index 1d890a6..726b865 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/GroupReportlet.java
@@ -175,8 +175,8 @@ public class GroupReportlet extends AbstractReportlet {
                 String value = null;
                 switch (feature) {
                     case key:
-                        type = ReportXMLConst.XSD_LONG;
-                        value = String.valueOf(group.getKey());
+                        type = ReportXMLConst.XSD_STRING;
+                        value = group.getKey();
                         break;
 
                     case name:
@@ -185,13 +185,13 @@ public class GroupReportlet extends AbstractReportlet {
                         break;
 
                     case groupOwner:
-                        type = ReportXMLConst.XSD_LONG;
-                        value = String.valueOf(group.getGroupOwner());
+                        type = ReportXMLConst.XSD_STRING;
+                        value = group.getGroupOwner().getKey();
                         break;
 
                     case userOwner:
-                        type = ReportXMLConst.XSD_LONG;
-                        value = String.valueOf(group.getUserOwner());
+                        type = ReportXMLConst.XSD_STRING;
+                        value = group.getUserOwner().getKey();
                         break;
 
                     default:
@@ -221,8 +221,8 @@ public class GroupReportlet extends AbstractReportlet {
                 for (UMembership memb : groupDAO.findUMemberships(group)) {
                     atts.clear();
 
-                    atts.addAttribute("", "", "key", ReportXMLConst.XSD_LONG,
-                            String.valueOf(memb.getLeftEnd().getKey()));
+                    atts.addAttribute("", "", "key", ReportXMLConst.XSD_STRING,
+                            memb.getLeftEnd().getKey());
                     atts.addAttribute("", "", "username", ReportXMLConst.XSD_STRING,
                             String.valueOf(memb.getLeftEnd().getUsername()));
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
index a1c86c6..2fb56da 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReconciliationReportlet.java
@@ -135,8 +135,8 @@ public class ReconciliationReportlet extends AbstractReportlet {
             String value = null;
             switch (feature) {
                 case key:
-                    type = ReportXMLConst.XSD_LONG;
-                    value = String.valueOf(any.getKey());
+                    type = ReportXMLConst.XSD_STRING;
+                    value = any.getKey();
                     break;
 
                 case username:
@@ -154,8 +154,8 @@ public class ReconciliationReportlet extends AbstractReportlet {
                     break;
 
                 case workflowId:
-                    type = ReportXMLConst.XSD_LONG;
-                    value = String.valueOf(any.getWorkflowId());
+                    type = ReportXMLConst.XSD_STRING;
+                    value = any.getWorkflowId();
                     break;
 
                 case status:
@@ -421,7 +421,7 @@ public class ReconciliationReportlet extends AbstractReportlet {
         for (AnyType anyType : anyTypeDAO.findAll()) {
             if (!anyType.equals(anyTypeDAO.findUser()) && !anyType.equals(anyTypeDAO.findGroup())) {
                 AnyTypeCond anyTypeCond = new AnyTypeCond();
-                anyTypeCond.setAnyTypeName(anyType.getKey());
+                anyTypeCond.setAnyTypeKey(anyType.getKey());
                 SearchCond cond = StringUtils.isBlank(this.conf.getAnyObjectMatchingCond())
                         ? SearchCond.getLeafCond(anyTypeCond)
                         : SearchCond.getAndCond(

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJob.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJob.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJob.java
index cd4bf0a..8b14024 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJob.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJob.java
@@ -37,7 +37,7 @@ public class ReportJob extends AbstractInterruptableJob {
     /**
      * Key, set by the caller, for identifying the report to be executed.
      */
-    private Long reportKey;
+    private String reportKey;
 
     @Autowired
     private ReportJobDelegate delegate;
@@ -47,7 +47,7 @@ public class ReportJob extends AbstractInterruptableJob {
      *
      * @param reportKey to be set
      */
-    public void setReportKey(final Long reportKey) {
+    public void setReportKey(final String reportKey) {
         this.reportKey = reportKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
index 5d5430d..2d040d9 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
@@ -75,7 +75,7 @@ public class ReportJobDelegate {
     private ImplementationLookup implementationLookup;
 
     @Transactional
-    public void execute(final Long reportKey) throws JobExecutionException {
+    public void execute(final String reportKey) throws JobExecutionException {
         Report report = reportDAO.find(reportKey);
         if (report == null) {
             throw new JobExecutionException("Report " + reportKey + " not found");

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java
index 724b8ac..38fba8a 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/UserReportlet.java
@@ -187,8 +187,8 @@ public class UserReportlet extends AbstractReportlet {
                 String value = null;
                 switch (feature) {
                     case key:
-                        type = ReportXMLConst.XSD_LONG;
-                        value = String.valueOf(user.getKey());
+                        type = ReportXMLConst.XSD_STRING;
+                        value = user.getKey();
                         break;
 
                     case username:
@@ -197,8 +197,8 @@ public class UserReportlet extends AbstractReportlet {
                         break;
 
                     case workflowId:
-                        type = ReportXMLConst.XSD_LONG;
-                        value = String.valueOf(user.getWorkflowId());
+                        type = ReportXMLConst.XSD_STRING;
+                        value = user.getWorkflowId();
                         break;
 
                     case status:
@@ -260,7 +260,7 @@ public class UserReportlet extends AbstractReportlet {
                     atts.clear();
 
                     atts.addAttribute("", "", "anyObjectKey",
-                            ReportXMLConst.XSD_LONG, String.valueOf(rel.getRightKey()));
+                            ReportXMLConst.XSD_STRING, rel.getRightKey());
                     handler.startElement("", "", "relationship", atts);
 
                     if (conf.getFeatures().contains(Feature.resources)) {
@@ -282,7 +282,7 @@ public class UserReportlet extends AbstractReportlet {
                     atts.clear();
 
                     atts.addAttribute("", "", "groupKey",
-                            ReportXMLConst.XSD_LONG, String.valueOf(memb.getRightKey()));
+                            ReportXMLConst.XSD_STRING, memb.getRightKey());
                     atts.addAttribute("", "", "groupName", ReportXMLConst.XSD_STRING, memb.getGroupName());
                     handler.startElement("", "", "membership", atts);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
index e957588..b6d78fd 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
@@ -27,11 +27,11 @@ import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.Schema;
 
-public interface AnyDAO<A extends Any<?>> extends DAO<A, Long> {
+public interface AnyDAO<A extends Any<?>> extends DAO<A> {
 
-    A authFind(Long key);
+    A authFind(String key);
 
-    A find(Long key);
+    A find(String key);
 
     A findByWorkflowId(String workflowId);
 
@@ -78,7 +78,7 @@ public interface AnyDAO<A extends Any<?>> extends DAO<A, Long> {
 
     A save(A any);
 
-    void delete(Long key);
+    void delete(String key);
 
     void delete(A any);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
index 7fabda3..bdf9642 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
@@ -48,7 +48,7 @@ public interface AnyObjectDAO extends AnyDAO<AnyObject> {
 
     Collection<Group> findAllGroups(AnyObject anyObject);
 
-    Collection<Long> findAllGroupKeys(AnyObject anyObject);
+    Collection<String> findAllGroupKeys(AnyObject anyObject);
 
     Collection<ExternalResource> findAllResources(AnyObject anyObject);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnySearchDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnySearchDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnySearchDAO.java
index 67e85f2..b93ca49 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnySearchDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnySearchDAO.java
@@ -25,7 +25,7 @@ import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.Any;
 
-public interface AnySearchDAO extends DAO<Any<?>, Long> {
+public interface AnySearchDAO extends DAO<Any<?>> {
 
     /**
      * @param adminRealms realms for which the caller owns the proper entitlement(s)

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeClassDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeClassDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeClassDAO.java
index e43740b..3b57b01 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeClassDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeClassDAO.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 
-public interface AnyTypeClassDAO extends DAO<AnyTypeClass, String> {
+public interface AnyTypeClassDAO extends DAO<AnyTypeClass> {
 
     AnyTypeClass find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeDAO.java
index 32483b5..1c07bce 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyTypeDAO.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 
-public interface AnyTypeDAO extends DAO<AnyType, String> {
+public interface AnyTypeDAO extends DAO<AnyType> {
 
     AnyType find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
index 0c2e477..681ee67 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao;
 import org.apache.syncope.core.persistence.api.entity.conf.CPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.conf.Conf;
 
-public interface ConfDAO extends DAO<Conf, Long> {
+public interface ConfDAO extends DAO<Conf> {
 
     CPlainAttr find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceDAO.java
index b669338..a7ba370 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceDAO.java
@@ -21,13 +21,13 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 
-public interface ConnInstanceDAO extends DAO<ConnInstance, Long> {
+public interface ConnInstanceDAO extends DAO<ConnInstance> {
 
-    ConnInstance find(Long key);
+    ConnInstance find(String key);
 
     List<ConnInstance> findAll();
 
     ConnInstance save(ConnInstance connector);
 
-    void delete(Long key);
+    void delete(String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
index 4452890..04ea153 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.dao;
 
 import org.apache.syncope.core.persistence.api.entity.Entity;
 
-public interface DAO<E extends Entity<KEY>, KEY> {
+public interface DAO<E extends Entity> {
 
     void refresh(E entity);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DomainDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DomainDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DomainDAO.java
index ece1b16..5bc1e6d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DomainDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DomainDAO.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.Domain;
 
-public interface DomainDAO extends DAO<Domain, String> {
+public interface DomainDAO extends DAO<Domain> {
 
     Domain find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java
index b92e9f2..94914a9 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java
@@ -25,13 +25,13 @@ import org.apache.syncope.core.persistence.api.entity.Policy;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 
-public interface ExternalResourceDAO extends DAO<ExternalResource, String> {
+public interface ExternalResourceDAO extends DAO<ExternalResource> {
 
     int count();
 
     ExternalResource find(String key);
 
-    Provision findProvision(Long key);
+    Provision findProvision(String key);
 
     List<Provision> findProvisionsByAuxClass(AnyTypeClass anyTypeClass);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
index 1de4ba2..f0a5b08 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
@@ -35,11 +35,13 @@ public interface GroupDAO extends AnyDAO<Group> {
 
     Map<String, Integer> countByRealm();
 
-    Group find(String name);
+    Group findByName(String name);
 
-    List<Group> findOwnedByUser(Long userKey);
+    Group authFindByName(String name);
 
-    List<Group> findOwnedByGroup(Long groupKey);
+    List<Group> findOwnedByUser(String userKey);
+
+    List<Group> findOwnedByGroup(String groupKey);
 
     List<AMembership> findAMemberships(Group group);
 
@@ -52,7 +54,7 @@ public interface GroupDAO extends AnyDAO<Group> {
      * @return map containing pairs with any object key and operations to be performed on those resources (DELETE,
      * typically).
      */
-    Map<Long, PropagationByResource> findAnyObjectsWithTransitiveResources(Long groupKey);
+    Map<String, PropagationByResource> findAnyObjectsWithTransitiveResources(String groupKey);
 
     /**
      * Finds users having resources assigned exclusively because of memberships of the given group.
@@ -61,7 +63,7 @@ public interface GroupDAO extends AnyDAO<Group> {
      * @return map containing pairs with user key and operations to be performed on those resources (DELETE,
      * typically).
      */
-    Map<Long, PropagationByResource> findUsersWithTransitiveResources(Long groupKey);
+    Map<String, PropagationByResource> findUsersWithTransitiveResources(String groupKey);
 
     List<TypeExtension> findTypeExtensions(AnyTypeClass anyTypeClass);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/LoggerDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/LoggerDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/LoggerDAO.java
index 0ce4b6a..55a5db7 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/LoggerDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/LoggerDAO.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.syncope.common.lib.types.LoggerType;
 import org.apache.syncope.core.persistence.api.entity.Logger;
 
-public interface LoggerDAO extends DAO<Logger, String> {
+public interface LoggerDAO extends DAO<Logger> {
 
     Logger find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/MailTemplateDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/MailTemplateDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/MailTemplateDAO.java
index 38ec5ad..9f40918 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/MailTemplateDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/MailTemplateDAO.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.MailTemplate;
 
-public interface MailTemplateDAO extends DAO<MailTemplate, String> {
+public interface MailTemplateDAO extends DAO<MailTemplate> {
 
     MailTemplate find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/NotificationDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/NotificationDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/NotificationDAO.java
index 779cc0b..569e6db 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/NotificationDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/NotificationDAO.java
@@ -22,9 +22,9 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.MailTemplate;
 import org.apache.syncope.core.persistence.api.entity.Notification;
 
-public interface NotificationDAO extends DAO<Notification, Long> {
+public interface NotificationDAO extends DAO<Notification> {
 
-    Notification find(Long key);
+    Notification find(String key);
 
     List<Notification> findByTemplate(MailTemplate template);
 
@@ -32,5 +32,5 @@ public interface NotificationDAO extends DAO<Notification, Long> {
 
     Notification save(Notification notification);
 
-    void delete(Long key);
+    void delete(String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrDAO.java
index e15b634..204aade 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrDAO.java
@@ -20,11 +20,11 @@ package org.apache.syncope.core.persistence.api.dao;
 
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 
-public interface PlainAttrDAO extends DAO<PlainAttr<?>, Long> {
+public interface PlainAttrDAO extends DAO<PlainAttr<?>> {
 
-    <T extends PlainAttr<?>> T find(Long key, Class<T> reference);
+    <T extends PlainAttr<?>> T find(String key, Class<T> reference);
 
-    <T extends PlainAttr<?>> void delete(Long key, Class<T> reference);
+    <T extends PlainAttr<?>> void delete(String key, Class<T> reference);
 
     <T extends PlainAttr<?>> void delete(T attr);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrValueDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrValueDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrValueDAO.java
index b554442..36a2b92 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrValueDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PlainAttrValueDAO.java
@@ -21,15 +21,15 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 
-public interface PlainAttrValueDAO extends DAO<PlainAttrValue, Long> {
+public interface PlainAttrValueDAO extends DAO<PlainAttrValue> {
 
-    <T extends PlainAttrValue> T find(Long key, Class<T> reference);
+    <T extends PlainAttrValue> T find(String key, Class<T> reference);
 
     <T extends PlainAttrValue> List<T> findAll(Class<T> reference);
 
     <T extends PlainAttrValue> T save(T attributeValue);
 
-    <T extends PlainAttrValue> void delete(Long key, Class<T> reference);
+    <T extends PlainAttrValue> void delete(String key, Class<T> reference);
 
     <T extends PlainAttrValue> void delete(T attributeValue);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java
index aa41223..245758b 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java
@@ -23,9 +23,9 @@ import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.Policy;
 
-public interface PolicyDAO extends DAO<Policy, Long> {
+public interface PolicyDAO extends DAO<Policy> {
 
-    <T extends Policy> T find(Long key);
+    <T extends Policy> T find(String key);
 
     <T extends Policy> List<T> find(Class<T> reference);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
index f8c94b6..42bd7b9 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
@@ -23,15 +23,15 @@ import java.util.regex.Pattern;
 import org.apache.syncope.core.persistence.api.entity.Policy;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 
-public interface RealmDAO extends DAO<Realm, Long> {
+public interface RealmDAO extends DAO<Realm> {
 
     Pattern PATH_PATTERN = Pattern.compile("^(/[A-Za-z0-9]+)+");
 
     Realm getRoot();
 
-    Realm find(Long key);
+    Realm find(String key);
 
-    Realm find(String fullPath);
+    Realm findByFullPath(String fullPath);
 
     <T extends Policy> List<Realm> findByPolicy(T policy);
 
@@ -47,5 +47,5 @@ public interface RealmDAO extends DAO<Realm, Long> {
 
     void delete(Realm realm);
 
-    void delete(Long key);
+    void delete(String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RelationshipTypeDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RelationshipTypeDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RelationshipTypeDAO.java
index e7d14b9..5388e1b 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RelationshipTypeDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RelationshipTypeDAO.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.RelationshipType;
 
-public interface RelationshipTypeDAO extends DAO<RelationshipType, String> {
+public interface RelationshipTypeDAO extends DAO<RelationshipType> {
 
     RelationshipType find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
index cfce78f..89f07ff 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportDAO.java
@@ -22,9 +22,9 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.api.entity.ReportTemplate;
 
-public interface ReportDAO extends DAO<Report, Long> {
+public interface ReportDAO extends DAO<Report> {
 
-    Report find(Long key);
+    Report find(String key);
 
     List<Report> findByTemplate(ReportTemplate template);
 
@@ -32,7 +32,7 @@ public interface ReportDAO extends DAO<Report, Long> {
 
     Report save(Report report);
 
-    void delete(Long key);
+    void delete(String key);
 
     void delete(Report report);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportExecDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportExecDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportExecDAO.java
index dd79dd9..f4c1fcf 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportExecDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportExecDAO.java
@@ -23,9 +23,9 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.api.entity.ReportExec;
 
-public interface ReportExecDAO extends DAO<ReportExec, Long> {
+public interface ReportExecDAO extends DAO<ReportExec> {
 
-    ReportExec find(Long key);
+    ReportExec find(String key);
 
     List<ReportExec> findRecent(int max);
 
@@ -37,7 +37,7 @@ public interface ReportExecDAO extends DAO<ReportExec, Long> {
 
     ReportExec save(ReportExec execution);
 
-    void delete(Long key);
+    void delete(String key);
 
     void delete(ReportExec execution);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportTemplateDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportTemplateDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportTemplateDAO.java
index 6796f9b..3274660 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportTemplateDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ReportTemplateDAO.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.ReportTemplate;
 
-public interface ReportTemplateDAO extends DAO<ReportTemplate, String> {
+public interface ReportTemplateDAO extends DAO<ReportTemplate> {
 
     ReportTemplate find(String key);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
index 2b76eb9..c5ff0e8 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
@@ -23,7 +23,7 @@ import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 
-public interface RoleDAO extends DAO<Role, String> {
+public interface RoleDAO extends DAO<Role> {
 
     int count();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
index 64a78fb..6a51d79 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
@@ -23,7 +23,7 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.Schema;
 
-public interface SchemaDAO<S extends Schema> extends DAO<S, String> {
+public interface SchemaDAO<S extends Schema> extends DAO<S> {
 
     S find(String name);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SecurityQuestionDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SecurityQuestionDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SecurityQuestionDAO.java
index e001f41..a632292 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SecurityQuestionDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SecurityQuestionDAO.java
@@ -21,14 +21,14 @@ package org.apache.syncope.core.persistence.api.dao;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 
-public interface SecurityQuestionDAO extends DAO<SecurityQuestion, Long> {
+public interface SecurityQuestionDAO extends DAO<SecurityQuestion> {
 
-    SecurityQuestion find(Long key);
+    SecurityQuestion find(String key);
 
     List<SecurityQuestion> findAll();
 
     SecurityQuestion save(SecurityQuestion securityQuestion);
 
-    void delete(Long key);
+    void delete(String key);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
index 19eb2e4..c39bf94 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskDAO.java
@@ -26,26 +26,36 @@ import org.apache.syncope.core.persistence.api.entity.Notification;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 
-public interface TaskDAO extends DAO<Task, Long> {
+public interface TaskDAO extends DAO<Task> {
 
     Class<? extends Task> getEntityReference(TaskType type);
 
-    <T extends Task> T find(Long key);
+    <T extends Task> T find(String key);
 
     <T extends Task> List<T> findToExec(TaskType type);
 
     <T extends Task> List<T> findAll(TaskType type);
 
     <T extends Task> List<T> findAll(
-            TaskType type, ExternalResource resource, Notification notification, AnyTypeKind anyTypeKind, Long anyKey,
-            int page, int itemsPerPage, List<OrderByClause> orderByClauses);
+            TaskType type,
+            ExternalResource resource,
+            Notification notification,
+            AnyTypeKind anyTypeKind,
+            String anyKey,
+            int page,
+            int itemsPerPage,
+            List<OrderByClause> orderByClauses);
 
     int count(
-            TaskType type, ExternalResource resource, Notification notification, AnyTypeKind anyTypeKind, Long anyKey);
+            TaskType type,
+            ExternalResource resource,
+            Notification notification,
+            AnyTypeKind anyTypeKind,
+            String anyKey);
 
     <T extends Task> T save(T task);
 
-    void delete(Long key);
+    void delete(String key);
 
     void delete(Task task);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
index 4af1453..703ad74 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
@@ -24,9 +24,9 @@ import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 
-public interface TaskExecDAO extends DAO<TaskExec, Long> {
+public interface TaskExecDAO extends DAO<TaskExec> {
 
-    TaskExec find(Long key);
+    TaskExec find(String key);
 
     List<TaskExec> findRecent(int max);
 
@@ -37,15 +37,15 @@ public interface TaskExecDAO extends DAO<TaskExec, Long> {
     <T extends Task> List<TaskExec> findAll(
             T task, Date startedBefore, Date startedAfter, Date endedBefore, Date endedAfter);
 
-    int count(Long taskKey);
+    int count(String taskKey);
 
     <T extends Task> List<TaskExec> findAll(T task, int page, int itemsPerPage, List<OrderByClause> orderByClauses);
 
     TaskExec save(TaskExec execution);
 
-    void saveAndAdd(Long taskId, TaskExec execution);
+    void saveAndAdd(String taskKey, TaskExec execution);
 
-    void delete(Long key);
+    void delete(String key);
 
     void delete(TaskExec execution);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
index 3eed6bc..dce9a1e 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
@@ -36,9 +36,9 @@ public interface UserDAO extends AnyDAO<User> {
 
     Map<String, Integer> countByStatus();
 
-    User authFind(String username);
+    User authFindByUsername(String username);
 
-    User find(String username);
+    User findByUsername(String username);
 
     User findByToken(String token);
 
@@ -52,7 +52,7 @@ public interface UserDAO extends AnyDAO<User> {
 
     Collection<Group> findAllGroups(User user);
 
-    Collection<Long> findAllGroupKeys(User user);
+    Collection<String> findAllGroupKeys(User user);
 
     Collection<ExternalResource> findAllResources(User user);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AnyTypeCond.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AnyTypeCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AnyTypeCond.java
index a12a3e7..5072fc1 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AnyTypeCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/AnyTypeCond.java
@@ -22,19 +22,19 @@ public class AnyTypeCond extends AbstractSearchCond {
 
     private static final long serialVersionUID = 4298076973281246633L;
 
-    private String anyTypeName;
+    private String anyTypeKey;
 
-    public String getAnyTypeName() {
-        return anyTypeName;
+    public String getAnyTypeKey() {
+        return anyTypeKey;
     }
 
-    public void setAnyTypeName(final String anyTypeName) {
-        this.anyTypeName = anyTypeName;
+    public void setAnyTypeKey(final String anyTypeKey) {
+        this.anyTypeKey = anyTypeKey;
     }
 
     @Override
     public boolean isValid() {
-        return anyTypeName != null;
+        return anyTypeKey != null;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/MembershipCond.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/MembershipCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/MembershipCond.java
index 8872107..7f9bca5 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/MembershipCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/MembershipCond.java
@@ -22,13 +22,13 @@ public class MembershipCond extends AbstractSearchCond {
 
     private static final long serialVersionUID = -728155256293925989L;
 
-    private Long groupKey;
+    private String groupKey;
 
-    public Long getGroupKey() {
+    public String getGroupKey() {
         return groupKey;
     }
 
-    public void setGroupKey(final Long groupKey) {
+    public void setGroupKey(final String groupKey) {
         this.groupKey = groupKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/RelationshipCond.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/RelationshipCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/RelationshipCond.java
index ec26eb8..587634f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/RelationshipCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/RelationshipCond.java
@@ -22,13 +22,13 @@ public class RelationshipCond extends AbstractSearchCond {
 
     private static final long serialVersionUID = 6865985945516722103L;
 
-    private Long anyObjectKey;
+    private String anyObjectKey;
 
-    public Long getAnyObjectKey() {
+    public String getAnyObjectKey() {
         return anyObjectKey;
     }
 
-    public void setAnyObjectKey(final Long anyObjectKey) {
+    public void setAnyObjectKey(final String anyObjectKey) {
         this.anyObjectKey = anyObjectKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
index 7d9818f..a20f3e6 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/ResourceCond.java
@@ -25,18 +25,18 @@ public class ResourceCond extends AbstractSearchCond {
 
     private static final long serialVersionUID = 466054166309460002L;
 
-    private String resourceName;
+    private String resourceKey;
 
-    public String getResourceName() {
-        return resourceName;
+    public String getResourceKey() {
+        return resourceKey;
     }
 
-    public void setResourceName(final String resourceName) {
-        this.resourceName = resourceName;
+    public void setResourceKey(final String resourceKey) {
+        this.resourceKey = resourceKey;
     }
 
     @Override
     public final boolean isValid() {
-        return resourceName != null;
+        return resourceKey != null;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
index a33ccf3..5b4b926 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
@@ -313,7 +313,7 @@ public class SearchCond extends AbstractSearchCond {
             case LEAF:
             case NOT_LEAF:
                 if (anyTypeCond != null) {
-                    anyTypeName = anyTypeCond.getAnyTypeName();
+                    anyTypeName = anyTypeCond.getAnyTypeKey();
                 }
                 break;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnnotatedEntity.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnnotatedEntity.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnnotatedEntity.java
index 2847d74..7792b41 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnnotatedEntity.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnnotatedEntity.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import java.util.Date;
 
-public interface AnnotatedEntity<KEY> extends Entity<KEY> {
+public interface AnnotatedEntity extends Entity {
 
     Date getCreationDate();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
index c5d4af7..b1580e3 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.entity;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import java.util.List;
 
-public interface Any<P extends PlainAttr<?>> extends AnnotatedEntity<Long> {
+public interface Any<P extends PlainAttr<?>> extends AnnotatedEntity {
 
     AnyType getType();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyAbout.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyAbout.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyAbout.java
index 2f1684b..ba3180c 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyAbout.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyAbout.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-public interface AnyAbout extends Entity<Long> {
+public interface AnyAbout extends Entity {
 
     Notification getNotification();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTemplate.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTemplate.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTemplate.java
index c00d3a4..25aa666 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTemplate.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTemplate.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import org.apache.syncope.common.lib.to.AnyTO;
 
-public interface AnyTemplate extends Entity<Long> {
+public interface AnyTemplate extends Entity {
 
     AnyType getAnyType();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyType.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyType.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyType.java
index 0a807fb..0d89fac 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyType.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyType.java
@@ -21,9 +21,7 @@ package org.apache.syncope.core.persistence.api.entity;
 import java.util.List;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 
-public interface AnyType extends Entity<String> {
-
-    void setKey(String key);
+public interface AnyType extends ProvidedKeyEntity {
 
     AnyTypeKind getKind();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTypeClass.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTypeClass.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTypeClass.java
index 1908b69..c7906df 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTypeClass.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyTypeClass.java
@@ -20,9 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import java.util.List;
 
-public interface AnyTypeClass extends Entity<String> {
-
-    void setKey(String key);
+public interface AnyTypeClass extends ProvidedKeyEntity {
 
     boolean add(PlainSchema schema);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstance.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstance.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstance.java
index 43af15b..90650a2 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstance.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstance.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import java.util.List;
 import java.util.Set;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 
-public interface ConnInstance extends Entity<Long> {
+public interface ConnInstance extends Entity {
 
     void setConnectorName(String connectorName);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Domain.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Domain.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Domain.java
index 7c496f0..dab1074 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Domain.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Domain.java
@@ -20,9 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 
-public interface Domain extends Entity<String> {
-
-    void setKey(String name);
+public interface Domain extends ProvidedKeyEntity {
 
     String getAdminPwd();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/DynMembership.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/DynMembership.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/DynMembership.java
index 9062bd9..c3bcea9 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/DynMembership.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/DynMembership.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import java.util.List;
 
-public interface DynMembership<A extends Any<?>> extends Entity<Long> {
+public interface DynMembership<A extends Any<?>> extends Entity {
 
     String getFIQLCond();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Entity.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Entity.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Entity.java
index 8f7934a..1f59d0b 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Entity.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Entity.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import java.io.Serializable;
 
-public interface Entity<KEY> extends Serializable {
+public interface Entity extends Serializable {
 
-    KEY getKey();
+    String getKey();
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/EntityFactory.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/EntityFactory.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/EntityFactory.java
index 91a6a0f..29be9ed 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/EntityFactory.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/EntityFactory.java
@@ -1,5 +1,3 @@
-package org.apache.syncope.core.persistence.api.entity;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
@@ -18,9 +16,11 @@ package org.apache.syncope.core.persistence.api.entity;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.syncope.core.persistence.api.entity;
+
 public interface EntityFactory {
 
-    <KEY, T extends Entity<KEY>> T newEntity(Class<T> reference);
+    <E extends Entity> E newEntity(Class<E> reference);
 
     ConnPoolConf newConnPoolConf();
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
index 8654b1d..3f34ae1 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import java.util.Date;
 
-public interface Exec extends Entity<Long> {
+public interface Exec extends Entity {
 
     /**
      * Set a message for this execution, taking care of replacing every null character with newline.

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/LinkingMappingItem.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/LinkingMappingItem.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/LinkingMappingItem.java
index 781b77a..85b7d5a 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/LinkingMappingItem.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/LinkingMappingItem.java
@@ -39,8 +39,8 @@ public class LinkingMappingItem implements MappingItem {
     }
 
     @Override
-    public Long getKey() {
-        return -1L;
+    public String getKey() {
+        return null;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Logger.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Logger.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Logger.java
index 6206e95..875854b 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Logger.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Logger.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.entity;
 import org.apache.syncope.common.lib.types.LoggerLevel;
 import org.apache.syncope.common.lib.types.LoggerType;
 
-public interface Logger extends Entity<String> {
+public interface Logger extends Entity {
 
     void setKey(String name);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/MailTemplate.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/MailTemplate.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/MailTemplate.java
index e6ea97d..1218d25 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/MailTemplate.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/MailTemplate.java
@@ -18,9 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-public interface MailTemplate extends Entity<String> {
-
-    void setKey(String key);
+public interface MailTemplate extends ProvidedKeyEntity {
 
     String getTextTemplate();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Notification.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Notification.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Notification.java
index 00bd23a..38a053f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Notification.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Notification.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.TraceLevel;
 
-public interface Notification extends Entity<Long> {
+public interface Notification extends Entity {
 
     List<String> getEvents();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttr.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttr.java
index b7bdc0c..2e44dce 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttr.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttr.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import java.util.List;
 
-public interface PlainAttr<A extends Any<?>> extends Entity<Long> {
+public interface PlainAttr<A extends Any<?>> extends Entity {
 
     A getOwner();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttrValue.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttrValue.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttrValue.java
index e1f43b6..87eac8f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttrValue.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/PlainAttrValue.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.entity;
 import java.util.Date;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 
-public interface PlainAttrValue extends Entity<Long> {
+public interface PlainAttrValue extends Entity {
 
     PlainAttr<?> getAttr();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java
index 39d91ce..85fc90e 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-public interface Policy extends Entity<Long> {
+public interface Policy extends Entity {
 
     String getDescription();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ProvidedKeyEntity.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ProvidedKeyEntity.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ProvidedKeyEntity.java
new file mode 100644
index 0000000..ccf23a9
--- /dev/null
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ProvidedKeyEntity.java
@@ -0,0 +1,25 @@
+/*
+ * 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.api.entity;
+
+public interface ProvidedKeyEntity extends Entity {
+
+    void setKey(String key);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
index 71b7a22..c30912d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
@@ -23,7 +23,7 @@ import java.util.Set;
 import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 
-public interface Realm extends Entity<Long> {
+public interface Realm extends Entity {
 
     String getName();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Relationship.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Relationship.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Relationship.java
index 0114908..170ec0d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Relationship.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Relationship.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-public interface Relationship<L extends Any<?>, R extends Any<?>> extends Entity<Long> {
+public interface Relationship<L extends Any<?>, R extends Any<?>> extends Entity {
 
     RelationshipType getType();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/RelationshipType.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/RelationshipType.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/RelationshipType.java
index 71f1155..142a7f6 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/RelationshipType.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/RelationshipType.java
@@ -18,9 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-public interface RelationshipType extends Entity<String> {
-
-    void setKey(String key);
+public interface RelationshipType extends ProvidedKeyEntity {
 
     String getDescription();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java
index 08650c2..3e51233 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Report.java
@@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.entity;
 import java.util.List;
 import org.apache.syncope.common.lib.report.ReportletConf;
 
-public interface Report extends Entity<Long> {
+public interface Report extends Entity {
 
     String getName();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ReportTemplate.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ReportTemplate.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ReportTemplate.java
index 3169f82..fc4062f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ReportTemplate.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ReportTemplate.java
@@ -18,9 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-public interface ReportTemplate extends Entity<String> {
-
-    void setKey(String key);
+public interface ReportTemplate extends ProvidedKeyEntity {
 
     String getFOTemplate();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
index 3987e96..60d62f1 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
@@ -22,9 +22,7 @@ import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import java.util.List;
 import java.util.Set;
 
-public interface Role extends Entity<String> {
-
-    void setKey(String name);
+public interface Role extends ProvidedKeyEntity {
 
     Set<String> getEntitlements();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Schema.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Schema.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Schema.java
index ec6bf50..544408f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Schema.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Schema.java
@@ -20,7 +20,7 @@ package org.apache.syncope.core.persistence.api.entity;
 
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 
-public interface Schema extends Entity<String> {
+public interface Schema extends ProvidedKeyEntity {
 
     AnyTypeClass getAnyTypeClass();
 
@@ -36,6 +36,4 @@ public interface Schema extends Entity<String> {
 
     boolean isUniqueConstraint();
 
-    void setKey(String name);
-
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/anyobject/AnyObject.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/anyobject/AnyObject.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/anyobject/AnyObject.java
index c40c643..ac5fda0 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/anyobject/AnyObject.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/anyobject/AnyObject.java
@@ -27,9 +27,9 @@ public interface AnyObject extends Any<APlainAttr> {
 
     boolean add(ARelationship relationship);
 
-    ARelationship getRelationship(RelationshipType relationshipType, Long anyObjectKey);
+    ARelationship getRelationship(RelationshipType relationshipType, String anyObjectKey);
 
-    Collection<? extends ARelationship> getRelationships(Long anyObjectKey);
+    Collection<? extends ARelationship> getRelationships(String anyObjectKey);
 
     Collection<? extends ARelationship> getRelationships(RelationshipType relationshipType);
 
@@ -37,7 +37,7 @@ public interface AnyObject extends Any<APlainAttr> {
 
     boolean add(AMembership membership);
 
-    AMembership getMembership(Long membershipKey);
+    AMembership getMembership(String membershipKey);
 
     List<? extends AMembership> getMemberships();