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 2015/04/21 11:33:42 UTC
[13/57] syncope git commit: [SYNCOPE-119] Renaming Role to Group
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
index f7a1e55..2da7ef5 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
@@ -32,13 +32,13 @@ import org.apache.syncope.core.persistence.api.entity.AttributableUtil;
import org.apache.syncope.core.persistence.api.entity.VirAttr;
import org.apache.syncope.core.persistence.api.entity.VirSchema;
import org.apache.syncope.core.persistence.api.entity.membership.MVirSchema;
-import org.apache.syncope.core.persistence.api.entity.role.RVirSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
import org.apache.syncope.core.persistence.api.entity.user.UMappingItem;
import org.apache.syncope.core.persistence.api.entity.user.UVirAttr;
import org.apache.syncope.core.persistence.api.entity.user.UVirSchema;
import org.apache.syncope.core.persistence.jpa.entity.AbstractVirSchema;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirSchema;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUVirSchema;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@@ -56,8 +56,8 @@ public class JPAVirSchemaDAO extends AbstractDAO<VirSchema, String> implements V
private ExternalResourceDAO resourceDAO;
private <T extends VirSchema> Class<? extends AbstractVirSchema> getJPAEntityReference(final Class<T> reference) {
- return RVirSchema.class.isAssignableFrom(reference)
- ? JPARVirSchema.class
+ return GVirSchema.class.isAssignableFrom(reference)
+ ? JPAGVirSchema.class
: MVirSchema.class.isAssignableFrom(reference)
? JPAMVirSchema.class
: UVirSchema.class.isAssignableFrom(reference)
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/SearchSupport.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/SearchSupport.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/SearchSupport.java
index 6922b85..77d133b 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/SearchSupport.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/SearchSupport.java
@@ -94,8 +94,8 @@ class SearchSupport {
result = "user_search";
break;
- case ROLE:
- result = "role_search";
+ case GROUP:
+ result = "group_search";
break;
}
@@ -118,8 +118,8 @@ class SearchSupport {
return new SearchView("svr", field().name + "_resource");
}
- public SearchView roleResource() {
- return new SearchView("svrr", field().name + "_role_resource");
+ public SearchView groupResource() {
+ return new SearchView("svrr", field().name + "_group_resource");
}
public SearchView uniqueAttr() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMapping.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMapping.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMapping.java
index 3a85859..814909d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMapping.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMapping.java
@@ -58,7 +58,7 @@ public abstract class AbstractMapping<T extends MappingItem> extends AbstractEnt
protected boolean addAccountIdItem(final T accountIdItem) {
if (IntMappingType.UserVirtualSchema == accountIdItem.getIntMappingType()
- || IntMappingType.RoleVirtualSchema == accountIdItem.getIntMappingType()
+ || IntMappingType.GroupVirtualSchema == accountIdItem.getIntMappingType()
|| IntMappingType.MembershipVirtualSchema == accountIdItem.getIntMappingType()
|| IntMappingType.Password == accountIdItem.getIntMappingType()) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMappingItem.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMappingItem.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMappingItem.java
index c183908..98aab13 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMappingItem.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractMappingItem.java
@@ -115,7 +115,7 @@ public abstract class AbstractMappingItem extends AbstractEntity<Long> implement
switch (getIntMappingType()) {
case UserId:
- case RoleId:
+ case GroupId:
case MembershipId:
name = "id";
break;
@@ -128,12 +128,12 @@ public abstract class AbstractMappingItem extends AbstractEntity<Long> implement
name = "password";
break;
- case RoleName:
- name = "roleName";
+ case GroupName:
+ name = "groupName";
break;
- case RoleOwnerSchema:
- name = "roleOwnerSchema";
+ case GroupOwnerSchema:
+ name = "groupOwnerSchema";
break;
default:
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAttributableUtil.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAttributableUtil.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAttributableUtil.java
index 3b744c6..0ccf030 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAttributableUtil.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAttributableUtil.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.lib.to.AbstractAttributableTO;
import org.apache.syncope.common.lib.to.AbstractSubjectTO;
import org.apache.syncope.common.lib.to.ConfTO;
import org.apache.syncope.common.lib.to.MembershipTO;
-import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AttributableType;
import org.apache.syncope.common.lib.types.IntMappingType;
@@ -59,19 +59,19 @@ import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirAttr;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirAttrTemplate;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirSchema;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMembership;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARDerAttr;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARDerAttrTemplate;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARDerSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARMappingItem;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttr;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttrTemplate;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttrValue;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirAttr;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirAttrTemplate;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARole;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGDerAttr;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGDerAttrTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGDerSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGMappingItem;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttr;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirAttr;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirAttrTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUDerAttr;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUDerSchema;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUMappingItem;
@@ -110,8 +110,8 @@ public class JPAAttributableUtil implements AttributableUtil {
Class result;
switch (type) {
- case ROLE:
- result = JPARole.class;
+ case GROUP:
+ result = JPAGroup.class;
break;
case MEMBERSHIP:
@@ -135,8 +135,8 @@ public class JPAAttributableUtil implements AttributableUtil {
Class result;
switch (type) {
- case ROLE:
- result = JPARPlainSchema.class;
+ case GROUP:
+ result = JPAGPlainSchema.class;
break;
case MEMBERSHIP:
@@ -165,8 +165,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUPlainSchema();
break;
- case ROLE:
- result = (T) new JPARPlainSchema();
+ case GROUP:
+ result = (T) new JPAGPlainSchema();
break;
case MEMBERSHIP:
@@ -186,8 +186,8 @@ public class JPAAttributableUtil implements AttributableUtil {
Class result = null;
switch (type) {
- case ROLE:
- result = JPARPlainAttr.class;
+ case GROUP:
+ result = JPAGPlainAttr.class;
break;
case MEMBERSHIP:
@@ -216,8 +216,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUPlainAttr();
break;
- case ROLE:
- result = (T) new JPARPlainAttr();
+ case GROUP:
+ result = (T) new JPAGPlainAttr();
break;
case MEMBERSHIP:
@@ -238,8 +238,8 @@ public class JPAAttributableUtil implements AttributableUtil {
Class result;
switch (type) {
- case ROLE:
- result = JPARPlainAttrValue.class;
+ case GROUP:
+ result = JPAGPlainAttrValue.class;
break;
case MEMBERSHIP:
@@ -268,8 +268,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUPlainAttrValue();
break;
- case ROLE:
- result = (T) new JPARPlainAttrValue();
+ case GROUP:
+ result = (T) new JPAGPlainAttrValue();
break;
case MEMBERSHIP:
@@ -291,8 +291,8 @@ public class JPAAttributableUtil implements AttributableUtil {
Class result;
switch (type) {
- case ROLE:
- result = JPARPlainAttrUniqueValue.class;
+ case GROUP:
+ result = JPAGPlainAttrUniqueValue.class;
break;
case MEMBERSHIP:
@@ -321,8 +321,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUPlainAttrUniqueValue();
break;
- case ROLE:
- result = (T) new JPARPlainAttrUniqueValue();
+ case GROUP:
+ result = (T) new JPAGPlainAttrUniqueValue();
break;
case MEMBERSHIP:
@@ -344,8 +344,8 @@ public class JPAAttributableUtil implements AttributableUtil {
Class result;
switch (type) {
- case ROLE:
- result = JPARPlainAttrTemplate.class;
+ case GROUP:
+ result = JPAGPlainAttrTemplate.class;
break;
case MEMBERSHIP:
@@ -370,8 +370,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = JPAUDerSchema.class;
break;
- case ROLE:
- result = JPARDerSchema.class;
+ case GROUP:
+ result = JPAGDerSchema.class;
break;
case MEMBERSHIP:
@@ -395,8 +395,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUDerSchema();
break;
- case ROLE:
- result = (T) new JPARDerSchema();
+ case GROUP:
+ result = (T) new JPAGDerSchema();
break;
case MEMBERSHIP:
@@ -419,8 +419,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = JPAUDerAttr.class;
break;
- case ROLE:
- result = JPARDerAttr.class;
+ case GROUP:
+ result = JPAGDerAttr.class;
break;
case MEMBERSHIP:
@@ -443,8 +443,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUDerAttr();
break;
- case ROLE:
- result = (T) new JPARDerAttr();
+ case GROUP:
+ result = (T) new JPAGDerAttr();
break;
case MEMBERSHIP:
@@ -466,8 +466,8 @@ public class JPAAttributableUtil implements AttributableUtil {
case USER:
break;
- case ROLE:
- result = JPARDerAttrTemplate.class;
+ case GROUP:
+ result = JPAGDerAttrTemplate.class;
break;
case MEMBERSHIP:
@@ -490,8 +490,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = JPAUVirSchema.class;
break;
- case ROLE:
- result = JPARVirSchema.class;
+ case GROUP:
+ result = JPAGVirSchema.class;
break;
case MEMBERSHIP:
@@ -514,8 +514,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUVirSchema();
break;
- case ROLE:
- result = (T) new JPARVirSchema();
+ case GROUP:
+ result = (T) new JPAGVirSchema();
break;
case MEMBERSHIP:
@@ -538,8 +538,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = JPAUVirAttr.class;
break;
- case ROLE:
- result = JPARVirAttr.class;
+ case GROUP:
+ result = JPAGVirAttr.class;
break;
case MEMBERSHIP:
@@ -562,8 +562,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = (T) new JPAUVirAttr();
break;
- case ROLE:
- result = (T) new JPARVirAttr();
+ case GROUP:
+ result = (T) new JPAGVirAttr();
break;
case MEMBERSHIP:
@@ -585,8 +585,8 @@ public class JPAAttributableUtil implements AttributableUtil {
case USER:
break;
- case ROLE:
- result = JPARVirAttrTemplate.class;
+ case GROUP:
+ result = JPAGVirAttrTemplate.class;
break;
case MEMBERSHIP:
@@ -606,9 +606,9 @@ public class JPAAttributableUtil implements AttributableUtil {
if (resource != null) {
switch (type) {
- case ROLE:
- if (resource.getRmapping() != null) {
- result = (T) resource.getRmapping().getAccountIdItem();
+ case GROUP:
+ if (resource.getGmapping() != null) {
+ result = (T) resource.getGmapping().getAccountIdItem();
}
break;
@@ -638,9 +638,9 @@ public class JPAAttributableUtil implements AttributableUtil {
}
break;
- case ROLE:
- if (resource.getRmapping() != null) {
- result = resource.getRmapping().getAccountLink();
+ case GROUP:
+ if (resource.getGmapping() != null) {
+ result = resource.getGmapping().getAccountLink();
}
break;
@@ -661,9 +661,9 @@ public class JPAAttributableUtil implements AttributableUtil {
if (resource != null) {
switch (type) {
- case ROLE:
- if (resource.getRmapping() != null) {
- items = (List<T>) resource.getRmapping().getItems();
+ case GROUP:
+ if (resource.getGmapping() != null) {
+ items = (List<T>) resource.getGmapping().getItems();
}
break;
@@ -729,7 +729,7 @@ public class JPAAttributableUtil implements AttributableUtil {
List<T> items = getMappingItems(resource, purpose);
- MappingItem uidItem = type == AttributableType.USER ? new JPAUMappingItem() : new JPARMappingItem();
+ MappingItem uidItem = type == AttributableType.USER ? new JPAUMappingItem() : new JPAGMappingItem();
BeanUtils.copyProperties(getAccountIdItem(resource), uidItem);
uidItem.setExtAttrName(Uid.NAME);
uidItem.setAccountid(false);
@@ -743,8 +743,8 @@ public class JPAAttributableUtil implements AttributableUtil {
IntMappingType result = null;
switch (type) {
- case ROLE:
- result = IntMappingType.RolePlainSchema;
+ case GROUP:
+ result = IntMappingType.GroupPlainSchema;
break;
case MEMBERSHIP:
@@ -767,8 +767,8 @@ public class JPAAttributableUtil implements AttributableUtil {
IntMappingType result = null;
switch (type) {
- case ROLE:
- result = IntMappingType.RoleDerivedSchema;
+ case GROUP:
+ result = IntMappingType.GroupDerivedSchema;
break;
case MEMBERSHIP:
@@ -791,8 +791,8 @@ public class JPAAttributableUtil implements AttributableUtil {
IntMappingType result = null;
switch (type) {
- case ROLE:
- result = IntMappingType.RoleVirtualSchema;
+ case GROUP:
+ result = IntMappingType.GroupVirtualSchema;
break;
case MEMBERSHIP:
@@ -819,8 +819,8 @@ public class JPAAttributableUtil implements AttributableUtil {
result = JPAUMappingItem.class;
break;
- case ROLE:
- result = JPARMappingItem.class;
+ case GROUP:
+ result = JPAGMappingItem.class;
break;
case MEMBERSHIP:
@@ -842,8 +842,8 @@ public class JPAAttributableUtil implements AttributableUtil {
case USER:
result = (T) new UserTO();
break;
- case ROLE:
- result = (T) new RoleTO();
+ case GROUP:
+ result = (T) new GroupTO();
break;
case MEMBERSHIP:
result = (T) new MembershipTO();
@@ -865,8 +865,8 @@ public class JPAAttributableUtil implements AttributableUtil {
case USER:
result = (T) new UserTO();
break;
- case ROLE:
- result = (T) new RoleTO();
+ case GROUP:
+ result = (T) new GroupTO();
break;
case MEMBERSHIP:
case CONFIGURATION:
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
index 202a605..7cb012a 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
@@ -51,20 +51,20 @@ import org.apache.syncope.core.persistence.api.entity.membership.MVirAttr;
import org.apache.syncope.core.persistence.api.entity.membership.MVirAttrTemplate;
import org.apache.syncope.core.persistence.api.entity.membership.MVirSchema;
import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.RDerAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RDerAttrTemplate;
-import org.apache.syncope.core.persistence.api.entity.role.RDerSchema;
-import org.apache.syncope.core.persistence.api.entity.role.RMapping;
-import org.apache.syncope.core.persistence.api.entity.role.RMappingItem;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttrTemplate;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.role.RVirAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RVirAttrTemplate;
-import org.apache.syncope.core.persistence.api.entity.role.RVirSchema;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GMapping;
+import org.apache.syncope.core.persistence.api.entity.group.GMappingItem;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
import org.apache.syncope.core.persistence.api.entity.task.PushTask;
@@ -100,20 +100,20 @@ import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirAttr;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirAttrTemplate;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMVirSchema;
import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMembership;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARDerAttr;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARDerAttrTemplate;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARDerSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARMapping;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARMappingItem;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttr;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttrTemplate;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainAttrValue;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARPlainSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirAttr;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirAttrTemplate;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARVirSchema;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARole;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGDerAttr;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGDerAttrTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGDerSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGMapping;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGMappingItem;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttr;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirAttr;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirAttrTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGVirSchema;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
import org.apache.syncope.core.persistence.jpa.entity.task.JPANotificationTask;
import org.apache.syncope.core.persistence.jpa.entity.task.JPAPropagationTask;
import org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTask;
@@ -143,8 +143,8 @@ public class JPAEntityFactory implements EntityFactory {
if (reference.equals(User.class)) {
result = (T) new JPAUser();
- } else if (reference.equals(Role.class)) {
- result = (T) new JPARole();
+ } else if (reference.equals(Group.class)) {
+ result = (T) new JPAGroup();
} else if (reference.equals(Membership.class)) {
result = (T) new JPAMembership();
} else if (reference.equals(Conf.class)) {
@@ -177,32 +177,32 @@ public class JPAEntityFactory implements EntityFactory {
result = (T) new JPAUMapping();
} else if (reference.equals(UMappingItem.class)) {
result = (T) new JPAUMappingItem();
- } else if (reference.equals(RPlainSchema.class)) {
- result = (T) new JPARPlainSchema();
- } else if (reference.equals(RPlainAttr.class)) {
- result = (T) new JPARPlainAttr();
- } else if (reference.equals(RPlainAttrValue.class)) {
- result = (T) new JPARPlainAttrValue();
- } else if (reference.equals(RPlainAttrUniqueValue.class)) {
- result = (T) new JPARPlainAttrUniqueValue();
- } else if (reference.equals(RPlainAttrTemplate.class)) {
- result = (T) new JPARPlainAttrTemplate();
- } else if (reference.equals(RDerAttrTemplate.class)) {
- result = (T) new JPARDerAttrTemplate();
- } else if (reference.equals(RVirAttrTemplate.class)) {
- result = (T) new JPARVirAttrTemplate();
- } else if (reference.equals(RDerSchema.class)) {
- result = (T) new JPARDerSchema();
- } else if (reference.equals(RDerAttr.class)) {
- result = (T) new JPARDerAttr();
- } else if (reference.equals(RVirSchema.class)) {
- result = (T) new JPARVirSchema();
- } else if (reference.equals(RVirAttr.class)) {
- result = (T) new JPARVirAttr();
- } else if (reference.equals(RMapping.class)) {
- result = (T) new JPARMapping();
- } else if (reference.equals(RMappingItem.class)) {
- result = (T) new JPARMappingItem();
+ } else if (reference.equals(GPlainSchema.class)) {
+ result = (T) new JPAGPlainSchema();
+ } else if (reference.equals(GPlainAttr.class)) {
+ result = (T) new JPAGPlainAttr();
+ } else if (reference.equals(GPlainAttrValue.class)) {
+ result = (T) new JPAGPlainAttrValue();
+ } else if (reference.equals(GPlainAttrUniqueValue.class)) {
+ result = (T) new JPAGPlainAttrUniqueValue();
+ } else if (reference.equals(GPlainAttrTemplate.class)) {
+ result = (T) new JPAGPlainAttrTemplate();
+ } else if (reference.equals(GDerAttrTemplate.class)) {
+ result = (T) new JPAGDerAttrTemplate();
+ } else if (reference.equals(GVirAttrTemplate.class)) {
+ result = (T) new JPAGVirAttrTemplate();
+ } else if (reference.equals(GDerSchema.class)) {
+ result = (T) new JPAGDerSchema();
+ } else if (reference.equals(GDerAttr.class)) {
+ result = (T) new JPAGDerAttr();
+ } else if (reference.equals(GVirSchema.class)) {
+ result = (T) new JPAGVirSchema();
+ } else if (reference.equals(GVirAttr.class)) {
+ result = (T) new JPAGVirAttr();
+ } else if (reference.equals(GMapping.class)) {
+ result = (T) new JPAGMapping();
+ } else if (reference.equals(GMappingItem.class)) {
+ result = (T) new JPAGMappingItem();
} else if (reference.equals(MPlainSchema.class)) {
result = (T) new JPAMPlainSchema();
} else if (reference.equals(MPlainAttr.class)) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
index 49be3dc..e1c44aa 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
@@ -51,10 +51,10 @@ import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.ExternalResource;
import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
import org.apache.syncope.core.persistence.api.entity.SyncPolicy;
-import org.apache.syncope.core.persistence.api.entity.role.RMapping;
+import org.apache.syncope.core.persistence.api.entity.group.GMapping;
import org.apache.syncope.core.persistence.api.entity.user.UMapping;
import org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourceCheck;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARMapping;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGMapping;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUMapping;
import org.apache.syncope.core.misc.serialization.POJOHelper;
import org.identityconnectors.framework.common.objects.SyncToken;
@@ -100,10 +100,10 @@ public class JPAExternalResource extends AbstractAnnotatedEntity<String> impleme
private JPAUMapping umapping;
/**
- * Mapping for role objects.
+ * Mapping for group objects.
*/
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER, mappedBy = "resource")
- private JPARMapping rmapping;
+ private JPAGMapping rmapping;
/**
* Is this resource primary, for propagations?
@@ -171,7 +171,7 @@ public class JPAExternalResource extends AbstractAnnotatedEntity<String> impleme
private String userializedSyncToken;
/**
- * SyncToken for calling ConnId's sync() on roles.
+ * SyncToken for calling ConnId's sync() on groups.
*/
@Lob
private String rserializedSyncToken;
@@ -237,14 +237,14 @@ public class JPAExternalResource extends AbstractAnnotatedEntity<String> impleme
}
@Override
- public RMapping getRmapping() {
+ public GMapping getGmapping() {
return rmapping;
}
@Override
- public void setRmapping(final RMapping rmapping) {
- checkType(rmapping, JPARMapping.class);
- this.rmapping = (JPARMapping) rmapping;
+ public void setGmapping(final GMapping gmapping) {
+ checkType(gmapping, JPAGMapping.class);
+ this.rmapping = (JPAGMapping) gmapping;
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPANotification.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPANotification.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPANotification.java
index de591e2..b97ca54 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPANotification.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPANotification.java
@@ -61,7 +61,7 @@ public class JPANotification extends AbstractEntity<Long> implements Notificatio
private String userAbout;
- private String roleAbout;
+ private String groupAbout;
private String recipients;
@@ -128,13 +128,13 @@ public class JPANotification extends AbstractEntity<Long> implements Notificatio
}
@Override
- public String getRoleAbout() {
- return roleAbout;
+ public String getGroupAbout() {
+ return groupAbout;
}
@Override
- public void setRoleAbout(final String roleAbout) {
- this.roleAbout = roleAbout;
+ public void setGroupAbout(final String groupAbout) {
+ this.groupAbout = groupAbout;
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAttributableUtilFactory.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAttributableUtilFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAttributableUtilFactory.java
index 427e828..8eaf54e 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAttributableUtilFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAttributableUtilFactory.java
@@ -24,7 +24,7 @@ import org.apache.syncope.core.persistence.api.entity.AttributableUtil;
import org.apache.syncope.core.persistence.api.entity.AttributableUtilFactory;
import org.apache.syncope.core.persistence.api.entity.conf.Conf;
import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
import org.apache.syncope.core.persistence.api.entity.user.User;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.springframework.stereotype.Component;
@@ -49,7 +49,7 @@ public class JPAttributableUtilFactory implements AttributableUtilFactory {
type = AttributableType.USER;
}
if (ObjectClass.GROUP.equals(objectClass)) {
- type = AttributableType.ROLE;
+ type = AttributableType.GROUP;
}
if (type == null) {
@@ -65,8 +65,8 @@ public class JPAttributableUtilFactory implements AttributableUtilFactory {
if (attributable instanceof User) {
type = AttributableType.USER;
}
- if (attributable instanceof Role) {
- type = AttributableType.ROLE;
+ if (attributable instanceof Group) {
+ type = AttributableType.GROUP;
}
if (attributable instanceof Membership) {
type = AttributableType.MEMBERSHIP;
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttr.java
new file mode 100644
index 0000000..7a160cf
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttr.java
@@ -0,0 +1,82 @@
+/*
+ * 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.group;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.Attributable;
+import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractDerAttr;
+
+@Entity
+@Table(name = JPAGDerAttr.TABLE)
+public class JPAGDerAttr extends AbstractDerAttr implements GDerAttr {
+
+ private static final long serialVersionUID = 8007080005675899946L;
+
+ public static final String TABLE = "GDerAttr";
+
+ @ManyToOne
+ private JPAGroup owner;
+
+ @Column(nullable = false)
+ @OneToOne(cascade = CascadeType.MERGE)
+ private JPAGDerAttrTemplate template;
+
+ @Override
+ public Group getOwner() {
+ return owner;
+ }
+
+ @Override
+ public void setOwner(final Attributable<?, ?, ?> owner) {
+ checkType(owner, JPAGroup.class);
+ this.owner = (JPAGroup) owner;
+ }
+
+ @Override
+ public GDerAttrTemplate getTemplate() {
+ return template;
+ }
+
+ @Override
+ public void setTemplate(final GDerAttrTemplate template) {
+ checkType(template, JPAGDerAttrTemplate.class);
+ this.template = (JPAGDerAttrTemplate) template;
+ }
+
+ @Override
+ public GDerSchema getSchema() {
+ return template == null ? null : template.getSchema();
+ }
+
+ @Override
+ public void setSchema(final DerSchema schema) {
+ LOG.warn("This is group attribute, set template to select schema");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttrTemplate.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttrTemplate.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttrTemplate.java
new file mode 100644
index 0000000..427d91b
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerAttrTemplate.java
@@ -0,0 +1,66 @@
+/*
+ * 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.group;
+
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractDerAttrTemplate;
+
+@Entity
+@Table(name = JPAGDerAttrTemplate.TABLE)
+public class JPAGDerAttrTemplate extends AbstractDerAttrTemplate<GDerSchema> implements GDerAttrTemplate {
+
+ private static final long serialVersionUID = 624868884107016649L;
+
+ public static final String TABLE = "GDerAttrTemplate";
+
+ @ManyToOne
+ private JPAGroup owner;
+
+ @ManyToOne
+ @JoinColumn(name = "schema_name")
+ private JPAGDerSchema schema;
+
+ @Override
+ public GDerSchema getSchema() {
+ return schema;
+ }
+
+ @Override
+ public void setSchema(final GDerSchema schema) {
+ checkType(schema, JPAGDerSchema.class);
+ this.schema = (JPAGDerSchema) schema;
+ }
+
+ @Override
+ public Group getOwner() {
+ return owner;
+ }
+
+ @Override
+ public void setOwner(final Group owner) {
+ checkType(owner, JPAGroup.class);
+ this.owner = (JPAGroup) owner;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerSchema.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerSchema.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerSchema.java
new file mode 100644
index 0000000..b0a41ac
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGDerSchema.java
@@ -0,0 +1,34 @@
+/*
+ * 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.group;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractDerSchema;
+
+@Entity
+@Table(name = JPAGDerSchema.TABLE)
+public class JPAGDerSchema extends AbstractDerSchema implements GDerSchema {
+
+ private static final long serialVersionUID = -6868889736207576372L;
+
+ public static final String TABLE = "GDerSchema";
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMapping.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMapping.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMapping.java
new file mode 100644
index 0000000..dd2679d
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMapping.java
@@ -0,0 +1,103 @@
+/*
+ * 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.group;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.group.GMapping;
+import org.apache.syncope.core.persistence.api.entity.group.GMappingItem;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractMapping;
+import org.apache.syncope.core.persistence.jpa.entity.JPAExternalResource;
+
+@Entity
+@Table(name = JPAGMapping.TABLE)
+public class JPAGMapping extends AbstractMapping<GMappingItem> implements GMapping {
+
+ public static final String TABLE = "GMapping";
+
+ private static final long serialVersionUID = 4578756002867863392L;
+
+ @Id
+ private Long id;
+
+ /**
+ * Resource owning this mapping.
+ */
+ @OneToOne
+ private JPAExternalResource resource;
+
+ /**
+ * Attribute mappings.
+ */
+ @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER, mappedBy = "mapping")
+ private List<JPAGMappingItem> items;
+
+ public JPAGMapping() {
+ super();
+
+ items = new ArrayList<>();
+ }
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @Override
+ public ExternalResource getResource() {
+ return resource;
+ }
+
+ @Override
+ public void setResource(final ExternalResource resource) {
+ checkType(resource, JPAExternalResource.class);
+ this.resource = (JPAExternalResource) resource;
+ }
+
+ @Override
+ public void setAccountIdItem(final GMappingItem item) {
+ checkType(item, JPAGMappingItem.class);
+ this.addAccountIdItem((JPAGMappingItem) item);
+ }
+
+ @Override
+ public List<? extends GMappingItem> getItems() {
+ return items;
+ }
+
+ @Override
+ public boolean addItem(final GMappingItem item) {
+ checkType(item, JPAGMappingItem.class);
+ return items.contains((JPAGMappingItem) item) || items.add((JPAGMappingItem) item);
+ }
+
+ @Override
+ public boolean removeItem(final GMappingItem item) {
+ checkType(item, JPAGMappingItem.class);
+ return items.remove((JPAGMappingItem) item);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMappingItem.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMappingItem.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMappingItem.java
new file mode 100644
index 0000000..2e3dd8e
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGMappingItem.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity.group;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.Mapping;
+import org.apache.syncope.core.persistence.api.entity.group.GMappingItem;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractMappingItem;
+
+@Entity
+@Table(name = JPAGMappingItem.TABLE)
+public class JPAGMappingItem extends AbstractMappingItem implements GMappingItem {
+
+ public static final String TABLE = "GMappingItem";
+
+ private static final long serialVersionUID = -2670787666933476166L;
+
+ @Id
+ private Long id;
+
+ @ManyToOne
+ private JPAGMapping mapping;
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @Override
+ public Mapping<GMappingItem> getMapping() {
+ return mapping;
+ }
+
+ @Override
+ public void setMapping(final Mapping<?> mapping) {
+ checkType(mapping, JPAGMapping.class);
+ this.mapping = (JPAGMapping) mapping;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttr.java
new file mode 100644
index 0000000..e4f8f06
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttr.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.persistence.jpa.entity.group;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.validation.Valid;
+import org.apache.syncope.core.persistence.api.entity.Attributable;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
+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.GPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttr;
+
+@Entity
+@Table(name = JPAGPlainAttr.TABLE)
+public class JPAGPlainAttr extends AbstractPlainAttr implements GPlainAttr {
+
+ private static final long serialVersionUID = 2848159565890995780L;
+
+ public static final String TABLE = "GPlainAttr";
+
+ @Id
+ private Long id;
+
+ @ManyToOne(fetch = FetchType.EAGER)
+ private JPAGroup owner;
+
+ @Column(nullable = false)
+ @OneToOne(cascade = CascadeType.MERGE)
+ private JPAGPlainAttrTemplate template;
+
+ @OneToMany(cascade = CascadeType.MERGE, orphanRemoval = true, mappedBy = "attribute")
+ @Valid
+ private List<JPAGPlainAttrValue> values;
+
+ @OneToOne(cascade = CascadeType.ALL, mappedBy = "attribute")
+ @Valid
+ private JPAGPlainAttrUniqueValue uniqueValue;
+
+ public JPAGPlainAttr() {
+ super();
+ values = new ArrayList<>();
+ }
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @Override
+ public Group getOwner() {
+ return owner;
+ }
+
+ @Override
+ public void setOwner(final Attributable<?, ?, ?> owner) {
+ checkType(owner, JPAGroup.class);
+ this.owner = (JPAGroup) owner;
+ }
+
+ @Override
+ public GPlainAttrTemplate getTemplate() {
+ return template;
+ }
+
+ @Override
+ public void setTemplate(final GPlainAttrTemplate template) {
+ checkType(template, JPAGPlainAttrTemplate.class);
+ this.template = (JPAGPlainAttrTemplate) template;
+ }
+
+ @Override
+ public GPlainSchema getSchema() {
+ return template == null ? null : template.getSchema();
+ }
+
+ @Override
+ public void setSchema(final PlainSchema schema) {
+ LOG.warn("This is group attribute, set template to select schema");
+ }
+
+ @Override
+ protected boolean addValue(final PlainAttrValue attrValue) {
+ checkType(attrValue, JPAGPlainAttrValue.class);
+ return values.add((JPAGPlainAttrValue) attrValue);
+ }
+
+ @Override
+ public boolean removeValue(final PlainAttrValue attrValue) {
+ checkType(attrValue, JPAGPlainAttrValue.class);
+ return values.remove((JPAGPlainAttrValue) attrValue);
+ }
+
+ @Override
+ public List<? extends GPlainAttrValue> getValues() {
+ return values;
+ }
+
+ @Override
+ public GPlainAttrUniqueValue getUniqueValue() {
+ return uniqueValue;
+ }
+
+ @Override
+ public void setUniqueValue(final PlainAttrUniqueValue uniqueValue) {
+ checkType(owner, JPAGPlainAttrUniqueValue.class);
+ this.uniqueValue = (JPAGPlainAttrUniqueValue) uniqueValue;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrTemplate.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrTemplate.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrTemplate.java
new file mode 100644
index 0000000..2af988e
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrTemplate.java
@@ -0,0 +1,75 @@
+/*
+ * 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.group;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttrTemplate;
+
+@Entity
+@Table(name = JPAGPlainAttrTemplate.TABLE)
+public class JPAGPlainAttrTemplate extends AbstractPlainAttrTemplate<GPlainSchema> implements GPlainAttrTemplate {
+
+ private static final long serialVersionUID = 6943917051517266268L;
+
+ public static final String TABLE = "GPlainAttrTemplate";
+
+ @Id
+ private Long id;
+
+ @ManyToOne
+ private JPAGroup owner;
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @ManyToOne
+ @JoinColumn(name = "schema_name")
+ private JPAGPlainSchema schema;
+
+ @Override
+ public GPlainSchema getSchema() {
+ return schema;
+ }
+
+ @Override
+ public void setSchema(final GPlainSchema schema) {
+ checkType(schema, JPAGPlainSchema.class);
+ this.schema = (JPAGPlainSchema) schema;
+ }
+
+ @Override
+ public Group getOwner() {
+ return owner;
+ }
+
+ @Override
+ public void setOwner(final Group owner) {
+ checkType(owner, JPAGroup.class);
+ this.owner = (JPAGroup) owner;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrUniqueValue.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrUniqueValue.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrUniqueValue.java
new file mode 100644
index 0000000..f361c03
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrUniqueValue.java
@@ -0,0 +1,78 @@
+/*
+ * 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.group;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.PlainAttr;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttrValue;
+
+@Entity
+@Table(name = JPAGPlainAttrUniqueValue.TABLE)
+public class JPAGPlainAttrUniqueValue extends AbstractPlainAttrValue implements GPlainAttrUniqueValue {
+
+ private static final long serialVersionUID = 4681561795607192855L;
+
+ public static final String TABLE = "GPlainAttrUniqueValue";
+
+ @Id
+ private Long id;
+
+ @OneToOne(optional = false)
+ private JPAGPlainAttr attribute;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "schema_name")
+ private JPAGPlainSchema schema;
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @Override
+ public GPlainAttr getAttr() {
+ return attribute;
+ }
+
+ @Override
+ public void setAttr(final PlainAttr attr) {
+ checkType(attr, JPAGPlainAttr.class);
+ this.attribute = (JPAGPlainAttr) attr;
+ }
+
+ @Override
+ public GPlainSchema getSchema() {
+ return schema;
+ }
+
+ @Override
+ public void setSchema(final PlainSchema schema) {
+ checkType(schema, JPAGPlainSchema.class);
+ this.schema = (JPAGPlainSchema) schema;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrValue.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrValue.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrValue.java
new file mode 100644
index 0000000..ed93477
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainAttrValue.java
@@ -0,0 +1,64 @@
+/*
+ * 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.group;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+import org.apache.syncope.core.persistence.api.entity.PlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttrValue;
+
+@Entity
+@Table(name = JPAGPlainAttrValue.TABLE)
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public class JPAGPlainAttrValue extends AbstractPlainAttrValue implements GPlainAttrValue {
+
+ private static final long serialVersionUID = -766808291128424707L;
+
+ public static final String TABLE = "GPlainAttrValue";
+
+ @Id
+ private Long id;
+
+ @ManyToOne
+ @NotNull
+ private JPAGPlainAttr attribute;
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @Override
+ public GPlainAttr getAttr() {
+ return attribute;
+ }
+
+ @Override
+ public void setAttr(final PlainAttr attr) {
+ checkType(attr, JPAGPlainAttr.class);
+ this.attribute = (JPAGPlainAttr) attr;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainSchema.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainSchema.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainSchema.java
new file mode 100644
index 0000000..684be57
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGPlainSchema.java
@@ -0,0 +1,36 @@
+/*
+ * 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.group;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainSchema;
+
+@Entity
+@Table(name = JPAGPlainSchema.TABLE)
+@Cacheable
+public class JPAGPlainSchema extends AbstractPlainSchema implements GPlainSchema {
+
+ private static final long serialVersionUID = -7417234690221851342L;
+
+ public static final String TABLE = "GPlainSchema";
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttr.java
new file mode 100644
index 0000000..95d9a37
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttr.java
@@ -0,0 +1,82 @@
+/*
+ * 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.group;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.Attributable;
+import org.apache.syncope.core.persistence.api.entity.VirSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractVirAttr;
+
+@Entity
+@Table(name = JPAGVirAttr.TABLE)
+public class JPAGVirAttr extends AbstractVirAttr implements GVirAttr {
+
+ private static final long serialVersionUID = -1747430556914428649L;
+
+ public static final String TABLE = "GVirAttr";
+
+ @ManyToOne
+ private JPAGroup owner;
+
+ @Column(nullable = false)
+ @OneToOne(cascade = CascadeType.MERGE)
+ private JPAGVirAttrTemplate template;
+
+ @Override
+ public Group getOwner() {
+ return owner;
+ }
+
+ @Override
+ public void setOwner(final Attributable<?, ?, ?> owner) {
+ checkType(owner, JPAGroup.class);
+ this.owner = (JPAGroup) owner;
+ }
+
+ @Override
+ public GVirAttrTemplate getTemplate() {
+ return template;
+ }
+
+ @Override
+ public void setTemplate(final GVirAttrTemplate template) {
+ checkType(template, JPAGVirAttrTemplate.class);
+ this.template = (JPAGVirAttrTemplate) template;
+ }
+
+ @Override
+ public GVirSchema getSchema() {
+ return template == null ? null : template.getSchema();
+ }
+
+ @Override
+ public void setSchema(final VirSchema schema) {
+ LOG.warn("This is group attribute, set template to select schema");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttrTemplate.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttrTemplate.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttrTemplate.java
new file mode 100644
index 0000000..72f9fd3
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirAttrTemplate.java
@@ -0,0 +1,66 @@
+/*
+ * 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.group;
+
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractVirAttrTemplate;
+
+@Entity
+@Table(name = JPAGVirAttrTemplate.TABLE)
+public class JPAGVirAttrTemplate extends AbstractVirAttrTemplate<GVirSchema> implements GVirAttrTemplate {
+
+ private static final long serialVersionUID = 4896495904794493479L;
+
+ public static final String TABLE = "GVirAttrTemplate";
+
+ @ManyToOne
+ private JPAGroup owner;
+
+ @ManyToOne
+ @JoinColumn(name = "schema_name")
+ private JPAGVirSchema schema;
+
+ @Override
+ public GVirSchema getSchema() {
+ return schema;
+ }
+
+ @Override
+ public void setSchema(final GVirSchema schema) {
+ checkType(schema, JPAGVirSchema.class);
+ this.schema = (JPAGVirSchema) schema;
+ }
+
+ @Override
+ public Group getOwner() {
+ return owner;
+ }
+
+ @Override
+ public void setOwner(final Group group) {
+ checkType(group, JPAGroup.class);
+ this.owner = (JPAGroup) group;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirSchema.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirSchema.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirSchema.java
new file mode 100644
index 0000000..6f735a8
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGVirSchema.java
@@ -0,0 +1,36 @@
+/*
+ * 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.group;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractVirSchema;
+
+@Entity
+@Table(name = JPAGVirSchema.TABLE)
+@Cacheable
+public class JPAGVirSchema extends AbstractVirSchema implements GVirSchema {
+
+ private static final long serialVersionUID = -2595041749349652939L;
+
+ public static final String TABLE = "GVirSchema";
+
+}