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/05/27 11:41:18 UTC
[1/2] syncope git commit: [SYNCOPE-666] Final JPA tests
Repository: syncope
Updated Branches:
refs/heads/SYNCOPE-666 419fccfeb -> 63108c8f8
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
index 5f2504b..71fa878 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
@@ -32,6 +32,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.Entitlement;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
import org.apache.syncope.core.persistence.api.dao.RealmDAO;
import org.apache.syncope.core.persistence.api.dao.RoleDAO;
@@ -64,6 +65,9 @@ public class RoleTest extends AbstractTest {
@Autowired
private UserDAO userDAO;
+ @Autowired
+ private AnyTypeClassDAO anyTypeClassDAO;
+
/**
* Static copy of {@link org.apache.syncope.core.persistence.jpa.dao.JPAUserDAO} method with same signature:
* required for avoiding creating new transaction - good for general use case but bad for the way how
@@ -84,12 +88,13 @@ public class RoleTest extends AbstractTest {
User user = entityFactory.newEntity(User.class);
user.setUsername("username");
user.setRealm(realmDAO.find("/even/two"));
+ user.add(anyTypeClassDAO.find("minimal other"));
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(plainSchemaDAO.find("cool"));
- attribute.setOwner(user);
- attribute.add("true", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- user.add(attribute);
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(plainSchemaDAO.find("cool"));
+ attr.add("true", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ user.add(attr);
user = userDAO.save(user);
Long newUserKey = user.getKey();
[2/2] syncope git commit: [SYNCOPE-666] Final JPA tests
Posted by il...@apache.org.
[SYNCOPE-666] Final JPA tests
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/63108c8f
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/63108c8f
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/63108c8f
Branch: refs/heads/SYNCOPE-666
Commit: 63108c8f89ba92c5517133545df2350971c703b5
Parents: 419fccf
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed May 27 11:41:00 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed May 27 11:41:00 2015 +0200
----------------------------------------------------------------------
.../persistence/jpa/entity/AbstractAttr.java | 130 ++++++++++
.../persistence/jpa/entity/AbstractDerAttr.java | 10 +-
.../persistence/jpa/entity/AbstractEntity.java | 3 -
.../jpa/entity/AbstractPlainAttr.java | 6 +-
.../persistence/jpa/entity/AbstractVirAttr.java | 10 +-
.../persistence/jpa/entity/JPAAnyTypeClass.java | 36 +--
.../jpa/entity/conf/JPACPlainAttr.java | 14 ++
.../persistence/jpa/entity/conf/JPAConf.java | 8 +-
.../resources/META-INF/spring-orm-oracle.xml | 178 +++++++++-----
.../resources/META-INF/spring-orm-sqlserver.xml | 178 +++++++++-----
.../core/persistence/jpa/entity/AttrTest.java | 236 ------------------
.../persistence/jpa/entity/DerAttrTest.java | 35 ++-
.../persistence/jpa/entity/PlainAttrTest.java | 237 +++++++++++++++++++
.../persistence/jpa/relationship/AttrTest.java | 156 ------------
.../persistence/jpa/relationship/GroupTest.java | 25 +-
.../jpa/relationship/PlainAttrTest.java | 179 ++++++++++++++
.../persistence/jpa/relationship/RoleTest.java | 15 +-
17 files changed, 877 insertions(+), 579 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAttr.java
new file mode 100644
index 0000000..4f4a3ec
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAttr.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.Transient;
+import org.apache.syncope.core.persistence.api.entity.Any;
+import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
+import org.apache.syncope.core.persistence.api.entity.Attr;
+import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.Schema;
+import org.apache.syncope.core.persistence.api.entity.VirSchema;
+import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership;
+import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.persistence.api.entity.group.TypeExtension;
+import org.apache.syncope.core.persistence.api.entity.user.UMembership;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+
+public abstract class AbstractAttr<S extends Schema, O extends Any<?, ?, ?>>
+ extends AbstractEntity<Long> implements Attr<S, O> {
+
+ private static final long serialVersionUID = -7722134717360731874L;
+
+ @Transient
+ private Set<PlainSchema> allowedPlainSchemas;
+
+ @Transient
+ private Set<DerSchema> allowedDerSchemas;
+
+ @Transient
+ private Set<VirSchema> allowedVirSchemas;
+
+ private void populateClasses(final Collection<? extends AnyTypeClass> anyTypeClasses) {
+ synchronized (this) {
+ if (getSchema() instanceof PlainSchema) {
+ if (allowedPlainSchemas == null) {
+ allowedPlainSchemas = new HashSet<>();
+ }
+ for (AnyTypeClass anyTypeClass : anyTypeClasses) {
+ allowedPlainSchemas.addAll(anyTypeClass.getPlainSchemas());
+ }
+ } else if (getSchema() instanceof DerSchema) {
+ if (allowedDerSchemas == null) {
+ allowedDerSchemas = new HashSet<>();
+ }
+ for (AnyTypeClass anyTypeClass : anyTypeClasses) {
+ allowedDerSchemas.addAll(anyTypeClass.getDerSchemas());
+ }
+ } else if (getSchema() instanceof VirSchema) {
+ if (allowedVirSchemas == null) {
+ allowedVirSchemas = new HashSet<>();
+ }
+ for (AnyTypeClass anyTypeClass : anyTypeClasses) {
+ allowedVirSchemas.addAll(anyTypeClass.getVirSchemas());
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private Set<S> getAllowedSchemas() {
+ Set<S> result = Collections.emptySet();
+
+ if (getSchema() instanceof PlainSchema) {
+ if (allowedPlainSchemas == null) {
+ allowedPlainSchemas = new HashSet<>();
+ }
+ result = (Set<S>) allowedPlainSchemas;
+ } else if (getSchema() instanceof DerSchema) {
+ if (allowedDerSchemas == null) {
+ allowedDerSchemas = new HashSet<>();
+ }
+ result = (Set<S>) allowedDerSchemas;
+ } else if (getSchema() instanceof VirSchema) {
+ if (allowedVirSchemas == null) {
+ allowedVirSchemas = new HashSet<>();
+ }
+ result = (Set<S>) allowedVirSchemas;
+ }
+
+ return result;
+ }
+
+ protected void checkSchema(final S schema) {
+ if (schema == null || getOwner() == null) {
+ throw new IllegalStateException("First set owner then schema and finally add values");
+ }
+
+ populateClasses(getOwner().getType().getClasses());
+ populateClasses(getOwner().getAuxClasses());
+ if (getOwner() instanceof User) {
+ for (UMembership memb : ((User) getOwner()).getMemberships()) {
+ for (TypeExtension typeExtension : memb.getRightEnd().getTypeExtensions()) {
+ populateClasses(typeExtension.getAuxClasses());
+ }
+ }
+ }
+ if (getOwner() instanceof AnyObject) {
+ for (AMembership memb : ((AnyObject) getOwner()).getMemberships()) {
+ for (TypeExtension typeExtension : memb.getRightEnd().getTypeExtensions()) {
+ populateClasses(typeExtension.getAuxClasses());
+ }
+ }
+ }
+
+ if (!getAllowedSchemas().contains(schema)) {
+ throw new IllegalArgumentException(schema + " not allowed for this instance");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractDerAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractDerAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractDerAttr.java
index 60dae3c..fba234d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractDerAttr.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractDerAttr.java
@@ -33,7 +33,8 @@ import org.apache.syncope.core.persistence.api.entity.Any;
import org.apache.syncope.core.persistence.api.entity.DerSchema;
@MappedSuperclass
-public abstract class AbstractDerAttr<O extends Any<?, ?, ?>> extends AbstractEntity<Long> implements DerAttr<O> {
+public abstract class AbstractDerAttr<O extends Any<?, ?, ?>>
+ extends AbstractAttr<DerSchema, O> implements DerAttr<O> {
private static final long serialVersionUID = 4740924251090424771L;
@@ -56,9 +57,10 @@ public abstract class AbstractDerAttr<O extends Any<?, ?, ?>> extends AbstractEn
}
@Override
- public void setSchema(final DerSchema derSchema) {
- checkType(derSchema, JPADerSchema.class);
- this.schema = (JPADerSchema) derSchema;
+ public void setSchema(final DerSchema schema) {
+ checkType(schema, JPADerSchema.class);
+ this.schema = (JPADerSchema) schema;
+ checkSchema(this.schema);
}
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractEntity.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractEntity.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractEntity.java
index dfd706d..1b8ab54 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractEntity.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractEntity.java
@@ -34,9 +34,6 @@ public abstract class AbstractEntity<KEY> implements Entity<KEY> {
private static final long serialVersionUID = -9017214159540857901L;
- /**
- * Logger.
- */
protected static final Logger LOG = LoggerFactory.getLogger(AbstractEntity.class);
protected void checkType(final Object object, final Class<?> clazz) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
index a93cc45..4bab427 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttr.java
@@ -37,13 +37,14 @@ import org.apache.syncope.core.persistence.jpa.validation.entity.PlainAttrCheck;
@MappedSuperclass
@PlainAttrCheck
-public abstract class AbstractPlainAttr<O extends Any<?, ?, ?>> extends AbstractEntity<Long> implements PlainAttr<O> {
+public abstract class AbstractPlainAttr<O extends Any<?, ?, ?>>
+ extends AbstractAttr<PlainSchema, O> implements PlainAttr<O> {
private static final long serialVersionUID = -9115431608821806124L;
@ManyToOne(fetch = FetchType.EAGER)
@Column(name = "schema_name")
- private JPAPlainSchema schema;
+ protected JPAPlainSchema schema;
@Override
public PlainSchema getSchema() {
@@ -54,6 +55,7 @@ public abstract class AbstractPlainAttr<O extends Any<?, ?, ?>> extends Abstract
public void setSchema(final PlainSchema schema) {
checkType(schema, JPAPlainSchema.class);
this.schema = (JPAPlainSchema) schema;
+ checkSchema(this.schema);
}
protected abstract boolean addForMultiValue(PlainAttrValue attrValue);
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractVirAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractVirAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractVirAttr.java
index 1ed64f3..946b09b 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractVirAttr.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractVirAttr.java
@@ -33,7 +33,8 @@ import org.apache.syncope.core.persistence.api.entity.VirAttr;
import org.apache.syncope.core.persistence.api.entity.VirSchema;
@MappedSuperclass
-public abstract class AbstractVirAttr<O extends Any<?, ?, ?>> extends AbstractEntity<Long> implements VirAttr<O> {
+public abstract class AbstractVirAttr<O extends Any<?, ?, ?>>
+ extends AbstractAttr<VirSchema, O> implements VirAttr<O> {
private static final long serialVersionUID = 5023204776925954907L;
@@ -74,8 +75,9 @@ public abstract class AbstractVirAttr<O extends Any<?, ?, ?>> extends AbstractEn
}
@Override
- public void setSchema(final VirSchema virSchema) {
- checkType(virSchema, JPAVirSchema.class);
- this.schema = (JPAVirSchema) virSchema;
+ public void setSchema(final VirSchema schema) {
+ checkType(schema, JPAVirSchema.class);
+ this.schema = (JPAVirSchema) schema;
+ checkSchema(this.schema);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyTypeClass.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyTypeClass.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyTypeClass.java
index e4f0db9..6fba644 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyTypeClass.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyTypeClass.java
@@ -63,15 +63,15 @@ public class JPAAnyTypeClass extends AbstractEntity<String> implements AnyTypeCl
}
@Override
- public boolean add(final PlainSchema facet) {
- checkType(facet, JPAPlainSchema.class);
- return this.plainSchemas.add((JPAPlainSchema) facet);
+ public boolean add(final PlainSchema schema) {
+ checkType(schema, JPAPlainSchema.class);
+ return this.plainSchemas.add((JPAPlainSchema) schema);
}
@Override
- public boolean remove(final PlainSchema facet) {
- checkType(facet, JPAPlainSchema.class);
- return this.plainSchemas.remove((JPAPlainSchema) facet);
+ public boolean remove(final PlainSchema schema) {
+ checkType(schema, JPAPlainSchema.class);
+ return this.plainSchemas.remove((JPAPlainSchema) schema);
}
@Override
@@ -80,15 +80,15 @@ public class JPAAnyTypeClass extends AbstractEntity<String> implements AnyTypeCl
}
@Override
- public boolean add(final DerSchema facet) {
- checkType(facet, JPADerSchema.class);
- return this.derSchemas.add((JPADerSchema) facet);
+ public boolean add(final DerSchema schema) {
+ checkType(schema, JPADerSchema.class);
+ return this.derSchemas.add((JPADerSchema) schema);
}
@Override
- public boolean remove(final DerSchema facet) {
- checkType(facet, JPADerSchema.class);
- return this.derSchemas.remove((JPADerSchema) facet);
+ public boolean remove(final DerSchema schema) {
+ checkType(schema, JPADerSchema.class);
+ return this.derSchemas.remove((JPADerSchema) schema);
}
@Override
@@ -97,15 +97,15 @@ public class JPAAnyTypeClass extends AbstractEntity<String> implements AnyTypeCl
}
@Override
- public boolean add(final VirSchema facet) {
- checkType(facet, JPAVirSchema.class);
- return this.virSchemas.add((JPAVirSchema) facet);
+ public boolean add(final VirSchema schema) {
+ checkType(schema, JPAVirSchema.class);
+ return this.virSchemas.add((JPAVirSchema) schema);
}
@Override
- public boolean remove(final VirSchema facet) {
- checkType(facet, JPAVirSchema.class);
- return this.virSchemas.remove((JPAVirSchema) facet);
+ public boolean remove(final VirSchema schema) {
+ checkType(schema, JPAVirSchema.class);
+ return this.virSchemas.remove((JPAVirSchema) schema);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPACPlainAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPACPlainAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPACPlainAttr.java
index 6fd6c1e..b6b683b 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPACPlainAttr.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPACPlainAttr.java
@@ -31,11 +31,13 @@ import javax.persistence.Table;
import javax.validation.Valid;
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.conf.CPlainAttr;
import org.apache.syncope.core.persistence.api.entity.conf.CPlainAttrUniqueValue;
import org.apache.syncope.core.persistence.api.entity.conf.CPlainAttrValue;
import org.apache.syncope.core.persistence.api.entity.conf.Conf;
import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttr;
+import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
/**
* Configuration attribute.
@@ -90,6 +92,18 @@ public class JPACPlainAttr extends AbstractPlainAttr<Conf> implements CPlainAttr
this.owner = (JPAConf) owner;
}
+ /**
+ * Explicitly overrides default schema check (used for users, groups and any objects) since Conf does not own any
+ * type reference.
+ *
+ * @param schema schema for this attribute
+ */
+ @Override
+ public void setSchema(final PlainSchema schema) {
+ checkType(schema, JPAPlainSchema.class);
+ this.schema = (JPAPlainSchema) schema;
+ }
+
@Override
protected boolean addForMultiValue(final PlainAttrValue attrValue) {
checkType(attrValue, JPACPlainAttrValue.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
index be3fa19..3253f66 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
@@ -54,13 +54,7 @@ public class JPAConf extends AbstractAnnotatedEntity<Long> implements Conf {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
@Valid
- private List<JPACPlainAttr> plainAttrs;
-
- public JPAConf() {
- super();
-
- plainAttrs = new ArrayList<>();
- }
+ private List<JPACPlainAttr> plainAttrs = new ArrayList<>();
@Override
public Long getKey() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
index 8c58d33..c592c31 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-oracle.xml
@@ -36,8 +36,8 @@ under the License.
<table-generator name="SEQ_UPlainAttrValue" pk-column-value="SEQ_UPlainAttrValue" initial-value="100"/>
<table-generator name="SEQ_GPlainAttrValue" pk-column-value="SEQ_GPlainAttrValue" initial-value="100"/>
- <table-generator name="SEQ_MAttrPlainValue" pk-column-value="SEQ_MAttrPlainValue" initial-value="100"/>
- <table-generator name="SEQ_CAttrPlainValue" pk-column-value="SEQ_CAttrPlainValue" initial-value="100"/>
+ <table-generator name="SEQ_APlainAttrValue" pk-column-value="SEQ_APlainAttrValue" initial-value="100"/>
+ <table-generator name="SEQ_CPlainAttrValue" pk-column-value="SEQ_CPlainAttrValue" initial-value="100"/>
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPARealm">
<attributes>
@@ -48,6 +48,33 @@ under the License.
</attributes>
</entity>
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AnyObject" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyObject" pk-column-value="SEQ_AnyObject" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_ARelationship" strategy="TABLE"/>
+ <table-generator name="SEQ_ARelationship" pk-column-value="SEQ_ARelationship" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_AMembership" pk-column-value="SEQ_AMembership" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPARole">
<attributes>
<id name="id">
@@ -56,8 +83,8 @@ under the License.
</id>
</attributes>
</entity>
-
- <entity class="org.apache.syncope.core.persistence.jpa.entity.JPADynRoleMembership">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership">
<attributes>
<id name="id">
<generated-value generator="SEQ_DynRoleMembership" strategy="TABLE"/>
@@ -74,63 +101,74 @@ under the License.
</id>
</attributes>
</entity>
-
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship">
<attributes>
<id name="id">
- <generated-value generator="SEQ_Group" strategy="TABLE"/>
- <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
+ <generated-value generator="SEQ_URelationship" strategy="TABLE"/>
+ <table-generator name="SEQ_URelationship" pk-column-value="SEQ_URelationship" initial-value="100"/>
</id>
</attributes>
</entity>
-
- <entity class="org.apache.syncope.core.persistence.jpa.entity.JPADynGroupMembership">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership">
<attributes>
<id name="id">
- <generated-value generator="SEQ_DynGroupMembership" strategy="TABLE"/>
- <table-generator name="SEQ_DynGroupMembership" pk-column-value="SEQ_DynGroupMembership" initial-value="100"/>
+ <generated-value generator="SEQ_UMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_UMembership" pk-column-value="SEQ_UMembership" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMembership">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
<attributes>
<id name="id">
- <generated-value generator="SEQ_Membership" strategy="TABLE"/>
- <table-generator name="SEQ_Membership" pk-column-value="SEQ_Membership" initial-value="100"/>
+ <generated-value generator="SEQ_Group" strategy="TABLE"/>
+ <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMapping">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_ADynGroupMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_ADynGroupMembership" pk-column-value="SEQ_ADynGroupMembership" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership">
<attributes>
<id name="id">
- <generated-value generator="SEQ_UMapping" strategy="TABLE"/>
- <table-generator name="SEQ_UMapping" pk-column-value="SEQ_UMapping" initial-value="100"/>
+ <generated-value generator="SEQ_UDynGroupMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_UDynGroupMembership" pk-column-value="SEQ_UDynGroupMembership" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGMapping">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision">
<attributes>
<id name="id">
- <generated-value generator="SEQ_GMapping" strategy="TABLE"/>
- <table-generator name="SEQ_GMapping" pk-column-value="SEQ_GMapping" initial-value="100"/>
+ <generated-value generator="SEQ_Provision" strategy="TABLE"/>
+ <table-generator name="SEQ_Provision" pk-column-value="SEQ_Provision" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMappingItem">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping">
<attributes>
<id name="id">
- <generated-value generator="SEQ_UMappingItem" strategy="TABLE"/>
- <table-generator name="SEQ_UMappingItem" pk-column-value="SEQ_UMappingItem" initial-value="1000"/>
+ <generated-value generator="SEQ_Mapping" strategy="TABLE"/>
+ <table-generator name="SEQ_Mapping" pk-column-value="SEQ_Mapping" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGMappingItem">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem">
<attributes>
<id name="id">
- <generated-value generator="SEQ_GMappingItem" strategy="TABLE"/>
- <table-generator name="SEQ_GMappingItem" pk-column-value="SEQ_GMappingItem" initial-value="1000"/>
+ <generated-value generator="SEQ_MappingItem" strategy="TABLE"/>
+ <table-generator name="SEQ_MappingItem" pk-column-value="SEQ_MappingItem" initial-value="1000"/>
</id>
</attributes>
</entity>
@@ -144,6 +182,14 @@ under the License.
</attributes>
</entity>
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttr">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_APlainAttr" strategy="TABLE"/>
+ <table-generator name="SEQ_APlainAttr" pk-column-value="SEQ_APlainAttr" initial-value="1000"/>
+ </id>
+ </attributes>
+ </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttr">
<attributes>
<id name="id">
@@ -160,39 +206,39 @@ under the License.
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrTemplate">
- <attributes>
- <id name="id">
- <generated-value generator="SEQ_GPlainAttrTemplate" strategy="TABLE"/>
- <table-generator name="SEQ_GPlainAttrTemplate" pk-column-value="SEQ_GPlainAttrTemplate" initial-value="1000"/>
- </id>
- </attributes>
- </entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttr">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MPlainAttr" strategy="TABLE"/>
- <table-generator name="SEQ_MPlainAttr" pk-column-value="SEQ_MPlainAttr" initial-value="1000"/>
+ <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
+ <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrTemplate">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MPlainAttrTemplate" strategy="TABLE"/>
- <table-generator name="SEQ_MPlainAttrTemplate" pk-column-value="SEQ_MPlainAttrTemplate" initial-value="1000"/>
+ <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrUniqueValue">
+ <table>
+ <unique-constraint>
+ <column-name>booleanValue</column-name>
+ <column-name>dateValue</column-name>
+ <column-name>stringValue</column-name>
+ <column-name>doubleValue</column-name>
+ <column-name>longValue</column-name>
+ <column-name>schema_name</column-name>
+ </unique-constraint>
+ </table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
- <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
+ <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
- </entity>
-
+ </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
<attributes>
<id name="id">
@@ -241,14 +287,14 @@ under the License.
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrUniqueValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
<table>
<unique-constraint>
<column-name>booleanValue</column-name>
@@ -261,31 +307,25 @@ under the License.
</table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_MAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplate">
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_AnyTemplate" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyTemplate" pk-column-value="SEQ_AnyTemplate" initial-value="1000"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
- <table>
- <unique-constraint>
- <column-name>booleanValue</column-name>
- <column-name>dateValue</column-name>
- <column-name>stringValue</column-name>
- <column-name>doubleValue</column-name>
- <column-name>longValue</column-name>
- <column-name>schema_name</column-name>
- </unique-constraint>
- </table>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyFilter">
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_AnyFilter" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyFilter" pk-column-value="SEQ_AnyFilter" initial-value="1000"/>
</id>
</attributes>
</entity>
@@ -340,6 +380,15 @@ under the License.
</id>
</attributes>
</entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyAbout">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AnyAbout" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyAbout" pk-column-value="SEQ_AnyAbout" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPANotification">
<attributes>
<id name="id">
@@ -348,6 +397,7 @@ under the License.
</id>
</attributes>
</entity>
+
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPASecurityQuestion">
<attributes>
<id name="id">
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
index bd7f664..c592c31 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/spring-orm-sqlserver.xml
@@ -36,8 +36,8 @@ under the License.
<table-generator name="SEQ_UPlainAttrValue" pk-column-value="SEQ_UPlainAttrValue" initial-value="100"/>
<table-generator name="SEQ_GPlainAttrValue" pk-column-value="SEQ_GPlainAttrValue" initial-value="100"/>
- <table-generator name="SEQ_MAttrPlainValue" pk-column-value="SEQ_MAttrPlainValue" initial-value="100"/>
- <table-generator name="SEQ_CAttrPlainValue" pk-column-value="SEQ_CAttrPlainValue" initial-value="100"/>
+ <table-generator name="SEQ_APlainAttrValue" pk-column-value="SEQ_APlainAttrValue" initial-value="100"/>
+ <table-generator name="SEQ_CPlainAttrValue" pk-column-value="SEQ_CPlainAttrValue" initial-value="100"/>
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPARealm">
<attributes>
@@ -48,6 +48,33 @@ under the License.
</attributes>
</entity>
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AnyObject" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyObject" pk-column-value="SEQ_AnyObject" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_ARelationship" strategy="TABLE"/>
+ <table-generator name="SEQ_ARelationship" pk-column-value="SEQ_ARelationship" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_AMembership" pk-column-value="SEQ_AMembership" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPARole">
<attributes>
<id name="id">
@@ -57,7 +84,7 @@ under the License.
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.JPADynRoleMembership">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership">
<attributes>
<id name="id">
<generated-value generator="SEQ_DynRoleMembership" strategy="TABLE"/>
@@ -65,7 +92,7 @@ under the License.
</id>
</attributes>
</entity>
-
+
<entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUser">
<attributes>
<id name="id">
@@ -74,63 +101,74 @@ under the License.
</id>
</attributes>
</entity>
-
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship">
<attributes>
<id name="id">
- <generated-value generator="SEQ_Group" strategy="TABLE"/>
- <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
+ <generated-value generator="SEQ_URelationship" strategy="TABLE"/>
+ <table-generator name="SEQ_URelationship" pk-column-value="SEQ_URelationship" initial-value="100"/>
</id>
</attributes>
</entity>
-
- <entity class="org.apache.syncope.core.persistence.jpa.entity.JPADynGroupMembership">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership">
<attributes>
<id name="id">
- <generated-value generator="SEQ_DynGroupMembership" strategy="TABLE"/>
- <table-generator name="SEQ_DynGroupMembership" pk-column-value="SEQ_DynGroupMembership" initial-value="100"/>
+ <generated-value generator="SEQ_UMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_UMembership" pk-column-value="SEQ_UMembership" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMembership">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
<attributes>
<id name="id">
- <generated-value generator="SEQ_Membership" strategy="TABLE"/>
- <table-generator name="SEQ_Membership" pk-column-value="SEQ_Membership" initial-value="100"/>
+ <generated-value generator="SEQ_Group" strategy="TABLE"/>
+ <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMapping">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_ADynGroupMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_ADynGroupMembership" pk-column-value="SEQ_ADynGroupMembership" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership">
<attributes>
<id name="id">
- <generated-value generator="SEQ_UMapping" strategy="TABLE"/>
- <table-generator name="SEQ_UMapping" pk-column-value="SEQ_UMapping" initial-value="100"/>
+ <generated-value generator="SEQ_UDynGroupMembership" strategy="TABLE"/>
+ <table-generator name="SEQ_UDynGroupMembership" pk-column-value="SEQ_UDynGroupMembership" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGMapping">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision">
<attributes>
<id name="id">
- <generated-value generator="SEQ_GMapping" strategy="TABLE"/>
- <table-generator name="SEQ_GMapping" pk-column-value="SEQ_GMapping" initial-value="100"/>
+ <generated-value generator="SEQ_Provision" strategy="TABLE"/>
+ <table-generator name="SEQ_Provision" pk-column-value="SEQ_Provision" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMappingItem">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping">
<attributes>
<id name="id">
- <generated-value generator="SEQ_UMappingItem" strategy="TABLE"/>
- <table-generator name="SEQ_UMappingItem" pk-column-value="SEQ_UMappingItem" initial-value="1000"/>
+ <generated-value generator="SEQ_Mapping" strategy="TABLE"/>
+ <table-generator name="SEQ_Mapping" pk-column-value="SEQ_Mapping" initial-value="100"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGMappingItem">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem">
<attributes>
<id name="id">
- <generated-value generator="SEQ_GMappingItem" strategy="TABLE"/>
- <table-generator name="SEQ_GMappingItem" pk-column-value="SEQ_GMappingItem" initial-value="1000"/>
+ <generated-value generator="SEQ_MappingItem" strategy="TABLE"/>
+ <table-generator name="SEQ_MappingItem" pk-column-value="SEQ_MappingItem" initial-value="1000"/>
</id>
</attributes>
</entity>
@@ -144,6 +182,14 @@ under the License.
</attributes>
</entity>
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttr">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_APlainAttr" strategy="TABLE"/>
+ <table-generator name="SEQ_APlainAttr" pk-column-value="SEQ_APlainAttr" initial-value="1000"/>
+ </id>
+ </attributes>
+ </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttr">
<attributes>
<id name="id">
@@ -160,39 +206,39 @@ under the License.
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrTemplate">
- <attributes>
- <id name="id">
- <generated-value generator="SEQ_GPlainAttrTemplate" strategy="TABLE"/>
- <table-generator name="SEQ_GPlainAttrTemplate" pk-column-value="SEQ_GPlainAttrTemplate" initial-value="1000"/>
- </id>
- </attributes>
- </entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttr">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MPlainAttr" strategy="TABLE"/>
- <table-generator name="SEQ_MPlainAttr" pk-column-value="SEQ_MPlainAttr" initial-value="1000"/>
+ <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
+ <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrTemplate">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MPlainAttrTemplate" strategy="TABLE"/>
- <table-generator name="SEQ_MPlainAttrTemplate" pk-column-value="SEQ_MPlainAttrTemplate" initial-value="1000"/>
+ <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrUniqueValue">
+ <table>
+ <unique-constraint>
+ <column-name>booleanValue</column-name>
+ <column-name>dateValue</column-name>
+ <column-name>stringValue</column-name>
+ <column-name>doubleValue</column-name>
+ <column-name>longValue</column-name>
+ <column-name>schema_name</column-name>
+ </unique-constraint>
+ </table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
- <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
+ <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
- </entity>
-
+ </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
<attributes>
<id name="id">
@@ -241,14 +287,14 @@ under the License.
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrUniqueValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
<table>
<unique-constraint>
<column-name>booleanValue</column-name>
@@ -261,31 +307,25 @@ under the License.
</table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_MAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplate">
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_AnyTemplate" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyTemplate" pk-column-value="SEQ_AnyTemplate" initial-value="1000"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
- <table>
- <unique-constraint>
- <column-name>booleanValue</column-name>
- <column-name>dateValue</column-name>
- <column-name>stringValue</column-name>
- <column-name>doubleValue</column-name>
- <column-name>longValue</column-name>
- <column-name>schema_name</column-name>
- </unique-constraint>
- </table>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyFilter">
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_AnyFilter" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyFilter" pk-column-value="SEQ_AnyFilter" initial-value="1000"/>
</id>
</attributes>
</entity>
@@ -340,6 +380,15 @@ under the License.
</id>
</attributes>
</entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyAbout">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AnyAbout" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyAbout" pk-column-value="SEQ_AnyAbout" initial-value="100"/>
+ </id>
+ </attributes>
+ </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPANotification">
<attributes>
<id name="id">
@@ -348,6 +397,7 @@ under the License.
</id>
</attributes>
</entity>
+
<entity class="org.apache.syncope.core.persistence.jpa.entity.JPASecurityQuestion">
<attributes>
<id name="id">
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttrTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttrTest.java
deleted file mode 100644
index a0d12a6..0000000
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttrTest.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import java.util.Random;
-import javax.validation.ValidationException;
-import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.EntityViolationType;
-import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.apache.syncope.core.misc.security.Encryptor;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.codec.Base64;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class AttrTest extends AbstractTest {
-
- @Autowired
- private UserDAO userDAO;
-
- @Autowired
- private PlainAttrDAO plainAttrDAO;
-
- @Autowired
- private PlainSchemaDAO plainSchemaDAO;
-
- @Test
- public void findById() {
- UPlainAttr attribute = plainAttrDAO.find(100L, UPlainAttr.class);
- assertNotNull("did not find expected attribute schema", attribute);
- attribute = plainAttrDAO.find(104L, UPlainAttr.class);
- assertNotNull("did not find expected attribute schema", attribute);
- }
-
- @Test
- public void read() {
- UPlainAttr attribute = plainAttrDAO.find(100L, UPlainAttr.class);
- assertNotNull(attribute);
- assertTrue(attribute.getValues().isEmpty());
- assertNotNull(attribute.getUniqueValue());
- }
-
- @Test
- public void save() throws ClassNotFoundException {
- User user = userDAO.find(1L);
-
- PlainSchema emailSchema = plainSchemaDAO.find("email");
- assertNotNull(emailSchema);
-
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(emailSchema);
- attribute.setOwner(user);
-
- Exception thrown = null;
- try {
- attribute.add("john.doe@gmail.com", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- attribute.add("mario.rossi@gmail.com", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- } catch (ValidationException e) {
- thrown = e;
- }
- assertNull("no validation exception expected here ", thrown);
-
- try {
- attribute.add("http://www.apache.org", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- } catch (ValidationException e) {
- thrown = e;
- }
- assertNotNull("validation exception expected here ", thrown);
- }
-
- @Test
- public void saveWithEnum() throws ClassNotFoundException {
- User user = userDAO.find(1L);
- assertNotNull(user);
-
- PlainSchema gender = plainSchemaDAO.find("gender");
- assertNotNull(gender);
- assertNotNull(gender.getType());
- assertNotNull(gender.getEnumerationValues());
-
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(gender);
- attribute.setOwner(user);
- user.add(attribute);
-
- Exception thrown = null;
-
- try {
- attribute.add("A", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- } catch (ValidationException e) {
- thrown = e;
- }
- assertNotNull("validation exception expected here ", thrown);
-
- attribute.add("M", anyUtilsFactory.getInstance(AnyTypeKind.USER));
-
- InvalidEntityException iee = null;
- try {
- userDAO.save(user);
- } catch (InvalidEntityException e) {
- iee = e;
- }
- assertNull(iee);
- }
-
- @Test
- public void validateAndSave() {
- User user = userDAO.find(1L);
-
- PlainSchema emailSchema = plainSchemaDAO.find("email");
- assertNotNull(emailSchema);
-
- PlainSchema fullnameSchema = plainSchemaDAO.find("fullname");
- assertNotNull(fullnameSchema);
-
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(emailSchema);
-
- UPlainAttrUniqueValue uauv = entityFactory.newEntity(UPlainAttrUniqueValue.class);
- uauv.setAttr(attribute);
- uauv.setSchema(fullnameSchema);
- uauv.setStringValue("a value");
-
- attribute.setUniqueValue(uauv);
-
- user.add(attribute);
-
- InvalidEntityException iee = null;
- try {
- userDAO.save(user);
- fail();
- } catch (InvalidEntityException e) {
- iee = e;
- }
- assertNotNull(iee);
- // for attribute
- assertTrue(iee.hasViolation(EntityViolationType.InvalidValueList));
- // for uauv
- assertTrue(iee.hasViolation(EntityViolationType.InvalidPlainSchema));
- }
-
- @Test
- public void saveWithEncrypted() throws Exception {
- User user = userDAO.find(1L);
-
- PlainSchema obscureSchema = plainSchemaDAO.find("obscure");
- assertNotNull(obscureSchema);
- assertNotNull(obscureSchema.getSecretKey());
- assertNotNull(obscureSchema.getCipherAlgorithm());
-
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(obscureSchema);
- attribute.add("testvalue", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- attribute.setOwner(user);
- user.add(attribute);
-
- userDAO.save(user);
-
- UPlainAttr obscure = user.getPlainAttr("obscure");
- assertNotNull(obscure);
- assertEquals(1, obscure.getValues().size());
- assertEquals(Encryptor.getInstance(obscureSchema.getSecretKey()).
- encode("testvalue", obscureSchema.getCipherAlgorithm()), obscure.getValues().get(0).getStringValue());
- }
-
- @Test
- public void saveWithBinary() throws UnsupportedEncodingException {
- User user = userDAO.find(1L);
-
- PlainSchema photoSchema = plainSchemaDAO.find("photo");
- assertNotNull(photoSchema);
- assertNotNull(photoSchema.getMimeType());
-
- final byte[] bytes = new byte[20];
- new Random().nextBytes(bytes);
- final String photoB64Value = new String(Base64.encode(bytes), SyncopeConstants.DEFAULT_ENCODING);
-
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(photoSchema);
- attribute.add(photoB64Value, anyUtilsFactory.getInstance(AnyTypeKind.USER));
- attribute.setOwner(user);
- user.add(attribute);
-
- userDAO.save(user);
-
- UPlainAttr obscure = user.getPlainAttr("photo");
- assertNotNull(obscure);
- assertEquals(1, obscure.getValues().size());
- assertTrue(Arrays.equals(bytes, obscure.getValues().get(0).getBinaryValue()));
- }
-
- @Test
- public void delete() {
- UPlainAttr attribute = plainAttrDAO.find(104L, UPlainAttr.class);
- String attrSchemaName = attribute.getSchema().getKey();
-
- plainAttrDAO.delete(attribute.getKey(), UPlainAttr.class);
-
- PlainSchema schema = plainSchemaDAO.find(attrSchemaName);
- assertNotNull("user attribute schema deleted when deleting values", schema);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
index 11381e5..f64e314 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
@@ -25,10 +25,12 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
import org.apache.syncope.core.persistence.api.dao.DerAttrDAO;
import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
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.GPlainAttrValue;
@@ -56,6 +58,9 @@ public class DerAttrTest extends AbstractTest {
@Autowired
private DerSchemaDAO derSchemaDAO;
+ @Autowired
+ private AnyTypeClassDAO anyTypeClassDAO;
+
@Test
public void findAll() {
List<UDerAttr> list = derAttrDAO.findAll(UDerAttr.class);
@@ -132,19 +137,28 @@ public class DerAttrTest extends AbstractTest {
@Test
public void issueSYNCOPE134User() {
+ AnyTypeClass other = anyTypeClassDAO.find("other");
+
DerSchema sderived = entityFactory.newEntity(DerSchema.class);
sderived.setKey("sderived");
sderived.setExpression("status + ' - ' + username + ' - ' + creationDate + '[' + failedLogins + ']'");
sderived = derSchemaDAO.save(sderived);
+
derSchemaDAO.flush();
- DerSchema actual = derSchemaDAO.find("sderived");
- assertNotNull("expected save to work", actual);
- assertEquals(sderived, actual);
+ other.add(sderived);
+ sderived.setAnyTypeClass(other);
+
+ derSchemaDAO.flush();
+
+ sderived = derSchemaDAO.find("sderived");
+ assertNotNull("expected save to work", sderived);
+ assertEquals(other, sderived.getAnyTypeClass());
User owner = userDAO.find(3L);
assertNotNull("did not get expected user", owner);
+ owner.add(other);
UDerAttr derAttr = entityFactory.newEntity(UDerAttr.class);
derAttr.setOwner(owner);
@@ -165,19 +179,28 @@ public class DerAttrTest extends AbstractTest {
@Test
public void issueSYNCOPE134Group() {
+ AnyTypeClass genericMembership = anyTypeClassDAO.find("generic membership");
+
DerSchema sderived = entityFactory.newEntity(DerSchema.class);
sderived.setKey("sderived");
sderived.setExpression("name");
sderived = derSchemaDAO.save(sderived);
+
derSchemaDAO.flush();
- DerSchema actual = derSchemaDAO.find("sderived");
- assertNotNull("expected save to work", actual);
- assertEquals(sderived, actual);
+ genericMembership.add(sderived);
+ sderived.setAnyTypeClass(genericMembership);
+
+ derSchemaDAO.flush();
+
+ sderived = derSchemaDAO.find("sderived");
+ assertNotNull("expected save to work", sderived);
+ assertEquals(genericMembership, sderived.getAnyTypeClass());
Group owner = groupDAO.find(7L);
assertNotNull("did not get expected group", owner);
+ owner.add(genericMembership);
GDerAttr derAttr = entityFactory.newEntity(GDerAttr.class);
derAttr.setOwner(owner);
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainAttrTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainAttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainAttrTest.java
new file mode 100644
index 0000000..014ee64
--- /dev/null
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainAttrTest.java
@@ -0,0 +1,237 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Random;
+import javax.validation.ValidationException;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.EntityViolationType;
+import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.apache.syncope.core.misc.security.Encryptor;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.codec.Base64;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class PlainAttrTest extends AbstractTest {
+
+ @Autowired
+ private UserDAO userDAO;
+
+ @Autowired
+ private PlainAttrDAO plainAttrDAO;
+
+ @Autowired
+ private PlainSchemaDAO plainSchemaDAO;
+
+ @Test
+ public void findById() {
+ UPlainAttr attribute = plainAttrDAO.find(100L, UPlainAttr.class);
+ assertNotNull("did not find expected attribute schema", attribute);
+ attribute = plainAttrDAO.find(104L, UPlainAttr.class);
+ assertNotNull("did not find expected attribute schema", attribute);
+ }
+
+ @Test
+ public void read() {
+ UPlainAttr attribute = plainAttrDAO.find(100L, UPlainAttr.class);
+ assertNotNull(attribute);
+ assertTrue(attribute.getValues().isEmpty());
+ assertNotNull(attribute.getUniqueValue());
+ }
+
+ @Test
+ public void save() throws ClassNotFoundException {
+ User user = userDAO.find(1L);
+
+ PlainSchema emailSchema = plainSchemaDAO.find("email");
+ assertNotNull(emailSchema);
+
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(emailSchema);
+
+ Exception thrown = null;
+ try {
+ attr.add("john.doe@gmail.com", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ attr.add("mario.rossi@gmail.com", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ } catch (ValidationException e) {
+ thrown = e;
+ }
+ assertNull("no validation exception expected here ", thrown);
+
+ try {
+ attr.add("http://www.apache.org", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ } catch (ValidationException e) {
+ thrown = e;
+ }
+ assertNotNull("validation exception expected here ", thrown);
+ }
+
+ @Test
+ public void saveWithEnum() throws ClassNotFoundException {
+ User user = userDAO.find(1L);
+ assertNotNull(user);
+
+ PlainSchema gender = plainSchemaDAO.find("gender");
+ assertNotNull(gender);
+ assertNotNull(gender.getType());
+ assertNotNull(gender.getEnumerationValues());
+
+ UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
+ attribute.setOwner(user);
+ attribute.setSchema(gender);
+ user.add(attribute);
+
+ Exception thrown = null;
+
+ try {
+ attribute.add("A", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ } catch (ValidationException e) {
+ thrown = e;
+ }
+ assertNotNull("validation exception expected here ", thrown);
+
+ attribute.add("M", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+
+ InvalidEntityException iee = null;
+ try {
+ userDAO.save(user);
+ } catch (InvalidEntityException e) {
+ iee = e;
+ }
+ assertNull(iee);
+ }
+
+ @Test
+ public void validateAndSave() {
+ User user = userDAO.find(1L);
+
+ PlainSchema emailSchema = plainSchemaDAO.find("email");
+ assertNotNull(emailSchema);
+
+ PlainSchema fullnameSchema = plainSchemaDAO.find("fullname");
+ assertNotNull(fullnameSchema);
+
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(emailSchema);
+
+ UPlainAttrUniqueValue uauv = entityFactory.newEntity(UPlainAttrUniqueValue.class);
+ uauv.setAttr(attr);
+ uauv.setSchema(fullnameSchema);
+ uauv.setStringValue("a value");
+
+ attr.setUniqueValue(uauv);
+
+ user.add(attr);
+
+ InvalidEntityException iee = null;
+ try {
+ userDAO.save(user);
+ fail();
+ } catch (InvalidEntityException e) {
+ iee = e;
+ }
+ assertNotNull(iee);
+ // for attribute
+ assertTrue(iee.hasViolation(EntityViolationType.InvalidValueList));
+ // for uauv
+ assertTrue(iee.hasViolation(EntityViolationType.InvalidPlainSchema));
+ }
+
+ @Test
+ public void saveWithEncrypted() throws Exception {
+ User user = userDAO.find(1L);
+
+ PlainSchema obscureSchema = plainSchemaDAO.find("obscure");
+ assertNotNull(obscureSchema);
+ assertNotNull(obscureSchema.getSecretKey());
+ assertNotNull(obscureSchema.getCipherAlgorithm());
+
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(obscureSchema);
+ attr.add("testvalue", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ user.add(attr);
+
+ userDAO.save(user);
+
+ UPlainAttr obscure = user.getPlainAttr("obscure");
+ assertNotNull(obscure);
+ assertEquals(1, obscure.getValues().size());
+ assertEquals(Encryptor.getInstance(obscureSchema.getSecretKey()).
+ encode("testvalue", obscureSchema.getCipherAlgorithm()), obscure.getValues().get(0).getStringValue());
+ }
+
+ @Test
+ public void saveWithBinary() throws UnsupportedEncodingException {
+ User user = userDAO.find(1L);
+
+ PlainSchema photoSchema = plainSchemaDAO.find("photo");
+ assertNotNull(photoSchema);
+ assertNotNull(photoSchema.getMimeType());
+
+ final byte[] bytes = new byte[20];
+ new Random().nextBytes(bytes);
+ final String photoB64Value = new String(Base64.encode(bytes), SyncopeConstants.DEFAULT_ENCODING);
+
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(photoSchema);
+ attr.add(photoB64Value, anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ user.add(attr);
+
+ userDAO.save(user);
+
+ UPlainAttr obscure = user.getPlainAttr("photo");
+ assertNotNull(obscure);
+ assertEquals(1, obscure.getValues().size());
+ assertTrue(Arrays.equals(bytes, obscure.getValues().get(0).getBinaryValue()));
+ }
+
+ @Test
+ public void delete() {
+ UPlainAttr attribute = plainAttrDAO.find(104L, UPlainAttr.class);
+ String attrSchemaName = attribute.getSchema().getKey();
+
+ plainAttrDAO.delete(attribute.getKey(), UPlainAttr.class);
+
+ PlainSchema schema = plainSchemaDAO.find(attrSchemaName);
+ assertNotNull("user attribute schema deleted when deleting values", schema);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
deleted file mode 100644
index ef500fe..0000000
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.relationship;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.CipherAlgorithm;
-import org.apache.syncope.core.persistence.api.dao.DerAttrDAO;
-import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.DerSchema;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
-import org.apache.syncope.core.persistence.api.entity.user.UDerAttr;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class AttrTest extends AbstractTest {
-
- @Autowired
- private PlainAttrDAO plainAttrDAO;
-
- @Autowired
- private DerAttrDAO derAttrDAO;
-
- @Autowired
- private PlainAttrValueDAO plainAttrValueDAO;
-
- @Autowired
- private PlainSchemaDAO plainSchemaDAO;
-
- @Autowired
- private DerSchemaDAO derSchemaDAO;
-
- @Autowired
- private UserDAO userDAO;
-
- @Test
- public void deleteAttribute() {
- plainAttrDAO.delete(117L, UPlainAttr.class);
-
- plainAttrDAO.flush();
-
- assertNull(plainAttrDAO.find(117L, UPlainAttr.class));
- assertNull(plainAttrValueDAO.find(28L, UPlainAttrValue.class));
- }
-
- @Test
- public void deleteAttributeValue() {
- UPlainAttrValue value = plainAttrValueDAO.find(14L, UPlainAttrValue.class);
- int attributeValueNumber = value.getAttr().getValues().size();
-
- plainAttrValueDAO.delete(value.getKey(), UPlainAttrValue.class);
-
- plainAttrValueDAO.flush();
-
- assertNull(plainAttrValueDAO.find(value.getKey(), UPlainAttrValue.class));
-
- UPlainAttr attribute = plainAttrDAO.find(104L, UPlainAttr.class);
- assertEquals(attribute.getValues().size(), attributeValueNumber - 1);
- }
-
- @Test
- public void checkForEnumType() {
- User user = userDAO.find(1L);
- user.setPassword("password123", CipherAlgorithm.SHA);
- assertNotNull(user);
-
- PlainSchema schema = entityFactory.newEntity(PlainSchema.class);
- schema.setType(AttrSchemaType.Enum);
- schema.setKey("color");
- schema.setEnumerationValues("red" + SyncopeConstants.ENUM_VALUES_SEPARATOR + "yellow");
-
- PlainSchema actualSchema = plainSchemaDAO.save(schema);
- assertNotNull(actualSchema);
-
- UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
- attr.setSchema(actualSchema);
- attr.setOwner(user);
- attr.add("yellow", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- user.add(attr);
-
- userDAO.save(user);
- userDAO.flush();
-
- user = userDAO.find(1L);
- assertNotNull(user);
- assertNotNull(user.getPlainAttr(schema.getKey()));
- assertNotNull(user.getPlainAttr(schema.getKey()).getValues());
- assertEquals(user.getPlainAttr(schema.getKey()).getValues().size(), 1);
- }
-
- @Test
- public void derAttrFromSpecialAttrs() {
- DerSchema sderived = entityFactory.newEntity(DerSchema.class);
- sderived.setKey("sderived");
- sderived.setExpression("username + ' - ' + creationDate + '[' + failedLogins + ']'");
-
- sderived = derSchemaDAO.save(sderived);
- derSchemaDAO.flush();
-
- DerSchema actual = derSchemaDAO.find("sderived");
- assertNotNull("expected save to work", actual);
- assertEquals(sderived, actual);
-
- User owner = userDAO.find(3L);
- assertNotNull("did not get expected user", owner);
-
- UDerAttr derAttr = entityFactory.newEntity(UDerAttr.class);
- derAttr.setOwner(owner);
- derAttr.setSchema(sderived);
-
- derAttr = derAttrDAO.save(derAttr);
- derAttrDAO.flush();
-
- derAttr = derAttrDAO.find(derAttr.getKey(), UDerAttr.class);
- assertNotNull("expected save to work", derAttr);
-
- String value = derAttr.getValue(owner.getPlainAttrs());
- assertNotNull(value);
- assertFalse(value.isEmpty());
- assertTrue(value.startsWith("vivaldi - 2010-10-20"));
- assertTrue(value.endsWith("[0]"));
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
index c9b551a..b32e970 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
@@ -35,6 +35,7 @@ import org.apache.commons.collections4.Transformer;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
@@ -88,6 +89,9 @@ public class GroupTest extends AbstractTest {
@Autowired
private PlainAttrValueDAO plainAttrValueDAO;
+ @Autowired
+ private AnyTypeClassDAO anyTypeClassDAO;
+
@Test(expected = InvalidEntityException.class)
public void saveWithTwoOwners() {
Group root = groupDAO.find("root");
@@ -154,12 +158,13 @@ public class GroupTest extends AbstractTest {
User user = entityFactory.newEntity(User.class);
user.setUsername("username");
user.setRealm(realmDAO.find("/even/two"));
+ user.add(anyTypeClassDAO.find("minimal other"));
- UPlainAttr attribute = entityFactory.newEntity(UPlainAttr.class);
- attribute.setSchema(plainSchemaDAO.find("cool"));
- attribute.setOwner(user);
- attribute.add("true", anyUtilsFactory.getInstance(AnyTypeKind.USER));
- user.add(attribute);
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(plainSchemaDAO.find("cool"));
+ attr.add("true", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ user.add(attr);
user = userDAO.save(user);
Long newUserKey = user.getKey();
@@ -248,11 +253,11 @@ public class GroupTest extends AbstractTest {
anyObject.setType(anyTypeDAO.find("OTHER"));
anyObject.setRealm(realmDAO.find("/even/two"));
- APlainAttr attribute = entityFactory.newEntity(APlainAttr.class);
- attribute.setSchema(plainSchemaDAO.find("cool"));
- attribute.setOwner(anyObject);
- attribute.add("true", anyUtilsFactory.getInstance(AnyTypeKind.ANY_OBJECT));
- anyObject.add(attribute);
+ APlainAttr attr = entityFactory.newEntity(APlainAttr.class);
+ attr.setOwner(anyObject);
+ attr.setSchema(plainSchemaDAO.find("cool"));
+ attr.add("true", anyUtilsFactory.getInstance(AnyTypeKind.ANY_OBJECT));
+ anyObject.add(attr);
anyObject = anyObjectDAO.save(anyObject);
Long newAnyObjectKey = anyObject.getKey();
http://git-wip-us.apache.org/repos/asf/syncope/blob/63108c8f/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/PlainAttrTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/PlainAttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/PlainAttrTest.java
new file mode 100644
index 0000000..ae4220c
--- /dev/null
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/PlainAttrTest.java
@@ -0,0 +1,179 @@
+/*
+ * 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.relationship;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.AttrSchemaType;
+import org.apache.syncope.common.lib.types.CipherAlgorithm;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
+import org.apache.syncope.core.persistence.api.dao.DerAttrDAO;
+import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
+import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.user.UDerAttr;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class PlainAttrTest extends AbstractTest {
+
+ @Autowired
+ private PlainAttrDAO plainAttrDAO;
+
+ @Autowired
+ private DerAttrDAO derAttrDAO;
+
+ @Autowired
+ private PlainAttrValueDAO plainAttrValueDAO;
+
+ @Autowired
+ private PlainSchemaDAO plainSchemaDAO;
+
+ @Autowired
+ private DerSchemaDAO derSchemaDAO;
+
+ @Autowired
+ private UserDAO userDAO;
+
+ @Autowired
+ private AnyTypeClassDAO anyTypeClassDAO;
+
+ @Test
+ public void deleteAttribute() {
+ plainAttrDAO.delete(117L, UPlainAttr.class);
+
+ plainAttrDAO.flush();
+
+ assertNull(plainAttrDAO.find(117L, UPlainAttr.class));
+ assertNull(plainAttrValueDAO.find(28L, UPlainAttrValue.class));
+ }
+
+ @Test
+ public void deleteAttributeValue() {
+ UPlainAttrValue value = plainAttrValueDAO.find(14L, UPlainAttrValue.class);
+ int attributeValueNumber = value.getAttr().getValues().size();
+
+ plainAttrValueDAO.delete(value.getKey(), UPlainAttrValue.class);
+
+ plainAttrValueDAO.flush();
+
+ assertNull(plainAttrValueDAO.find(value.getKey(), UPlainAttrValue.class));
+
+ UPlainAttr attribute = plainAttrDAO.find(104L, UPlainAttr.class);
+ assertEquals(attribute.getValues().size(), attributeValueNumber - 1);
+ }
+
+ @Test
+ public void checkForEnumType() {
+ User user = userDAO.find(1L);
+ user.setPassword("password123", CipherAlgorithm.SHA);
+ assertNotNull(user);
+
+ AnyTypeClass other = anyTypeClassDAO.find("other");
+
+ PlainSchema color = entityFactory.newEntity(PlainSchema.class);
+ color.setType(AttrSchemaType.Enum);
+ color.setKey("color");
+ color.setEnumerationValues("red" + SyncopeConstants.ENUM_VALUES_SEPARATOR + "yellow");
+
+ color = plainSchemaDAO.save(color);
+
+ other.add(color);
+ color.setAnyTypeClass(other);
+
+ plainSchemaDAO.flush();
+
+ color = plainSchemaDAO.find("color");
+ assertNotNull("expected save to work", color);
+ assertEquals(other, color.getAnyTypeClass());
+
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(color);
+ attr.add("yellow", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ user.add(attr);
+
+ userDAO.save(user);
+ userDAO.flush();
+
+ user = userDAO.find(1L);
+ assertNotNull(user);
+ assertNotNull(user.getPlainAttr(color.getKey()));
+ assertNotNull(user.getPlainAttr(color.getKey()).getValues());
+ assertEquals(user.getPlainAttr(color.getKey()).getValues().size(), 1);
+ }
+
+ @Test
+ public void derAttrFromSpecialAttrs() {
+ AnyTypeClass other = anyTypeClassDAO.find("other");
+
+ DerSchema sderived = entityFactory.newEntity(DerSchema.class);
+ sderived.setKey("sderived");
+ sderived.setExpression("username + ' - ' + creationDate + '[' + failedLogins + ']'");
+
+ sderived = derSchemaDAO.save(sderived);
+
+ derSchemaDAO.flush();
+
+ other.add(sderived);
+ sderived.setAnyTypeClass(other);
+
+ derSchemaDAO.flush();
+
+ sderived = derSchemaDAO.find("sderived");
+ assertNotNull("expected save to work", sderived);
+ assertEquals(other, sderived.getAnyTypeClass());
+
+ User owner = userDAO.find(3L);
+ assertNotNull("did not get expected user", owner);
+
+ UDerAttr derAttr = entityFactory.newEntity(UDerAttr.class);
+ derAttr.setOwner(owner);
+ derAttr.setSchema(sderived);
+
+ derAttr = derAttrDAO.save(derAttr);
+ derAttrDAO.flush();
+
+ derAttr = derAttrDAO.find(derAttr.getKey(), UDerAttr.class);
+ assertNotNull("expected save to work", derAttr);
+
+ String value = derAttr.getValue(owner.getPlainAttrs());
+ assertNotNull(value);
+ assertFalse(value.isEmpty());
+ assertTrue(value.startsWith("vivaldi - 2010-10-20"));
+ assertTrue(value.endsWith("[0]"));
+ }
+}