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/06/11 16:17:03 UTC
[13/70] syncope git commit: [SYNCOPE-666] Initial commit,
Travis CI builds disabled
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainAttrUniqueValue.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainAttrUniqueValue.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainAttrUniqueValue.java
index 5c820fb..566739d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainAttrUniqueValue.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainAttrUniqueValue.java
@@ -28,8 +28,8 @@ 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.user.UPlainAttr;
import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainSchema;
import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttrValue;
+import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
@Entity
@Table(name = JPAUPlainAttrUniqueValue.TABLE)
@@ -47,7 +47,7 @@ public class JPAUPlainAttrUniqueValue extends AbstractPlainAttrValue implements
@ManyToOne(optional = false)
@JoinColumn(name = "schema_name")
- private JPAUPlainSchema schema;
+ private JPAPlainSchema schema;
@Override
public Long getKey() {
@@ -66,14 +66,14 @@ public class JPAUPlainAttrUniqueValue extends AbstractPlainAttrValue implements
}
@Override
- public UPlainSchema getSchema() {
+ public PlainSchema getSchema() {
return schema;
}
@Override
public void setSchema(final PlainSchema schema) {
- checkType(schema, JPAUPlainSchema.class);
- this.schema = (JPAUPlainSchema) schema;
+ checkType(schema, JPAPlainSchema.class);
+ this.schema = (JPAPlainSchema) schema;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainSchema.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainSchema.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainSchema.java
deleted file mode 100644
index c5b8dac..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUPlainSchema.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity.user;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainSchema;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainSchema;
-
-@Entity
-@Table(name = JPAUPlainSchema.TABLE)
-@Cacheable
-public class JPAUPlainSchema extends AbstractPlainSchema implements UPlainSchema {
-
- public static final String TABLE = "UPlainSchema";
-
- private static final long serialVersionUID = -7272127460142463237L;
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAURelationship.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAURelationship.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAURelationship.java
new file mode 100644
index 0000000..d4c8bb3
--- /dev/null
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAURelationship.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.user;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.persistence.api.entity.user.URelationship;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractEntity;
+import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
+
+@Entity
+@Table(name = JPAURelationship.TABLE)
+public class JPAURelationship extends AbstractEntity<Long> implements URelationship {
+
+ private static final long serialVersionUID = 2778494939240083204L;
+
+ public static final String TABLE = "URelationship";
+
+ @Id
+ private Long id;
+
+ @ManyToOne
+ @Column(name = "user_id")
+ private JPAUser leftEnd;
+
+ @ManyToOne
+ @Column(name = "anyObject_id")
+ private JPAAnyObject rightEnd;
+
+ @Override
+ public Long getKey() {
+ return id;
+ }
+
+ @Override
+ public JPAUser getLeftEnd() {
+ return leftEnd;
+ }
+
+ @Override
+ public void setLeftEnd(final User leftEnd) {
+ checkType(leftEnd, JPAUser.class);
+ this.leftEnd = (JPAUser) leftEnd;
+ }
+
+ @Override
+ public AnyObject getRightEnd() {
+ return rightEnd;
+ }
+
+ @Override
+ public void setRightEnd(final AnyObject rightEnd) {
+ checkType(rightEnd, JPAAnyObject.class);
+ this.rightEnd = (JPAAnyObject) rightEnd;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirAttr.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirAttr.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirAttr.java
index c68280d..52a168e 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirAttr.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirAttr.java
@@ -19,19 +19,15 @@
package org.apache.syncope.core.persistence.jpa.entity.user;
import javax.persistence.Entity;
-import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
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.user.UVirAttr;
-import org.apache.syncope.core.persistence.api.entity.user.UVirSchema;
import org.apache.syncope.core.persistence.api.entity.user.User;
import org.apache.syncope.core.persistence.jpa.entity.AbstractVirAttr;
@Entity
@Table(name = JPAUVirAttr.TABLE)
-public class JPAUVirAttr extends AbstractVirAttr implements UVirAttr {
+public class JPAUVirAttr extends AbstractVirAttr<User> implements UVirAttr {
private static final long serialVersionUID = 2943450934283989741L;
@@ -40,28 +36,15 @@ public class JPAUVirAttr extends AbstractVirAttr implements UVirAttr {
@ManyToOne
private JPAUser owner;
- @ManyToOne(fetch = FetchType.EAGER)
- private JPAUVirSchema virSchema;
-
@Override
public User getOwner() {
return owner;
}
@Override
- public void setOwner(final Attributable<?, ?, ?> owner) {
+ public void setOwner(final User owner) {
checkType(owner, JPAUser.class);
this.owner = (JPAUser) owner;
}
- @Override
- public UVirSchema getSchema() {
- return virSchema;
- }
-
- @Override
- public void setSchema(final VirSchema virSchema) {
- checkType(virSchema, JPAUVirSchema.class);
- this.virSchema = (JPAUVirSchema) virSchema;
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirSchema.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirSchema.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirSchema.java
deleted file mode 100644
index 307dd46..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUVirSchema.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity.user;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import org.apache.syncope.core.persistence.api.entity.user.UVirSchema;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractVirSchema;
-
-@Entity
-@Table(name = JPAUVirSchema.TABLE)
-@Cacheable
-public class JPAUVirSchema extends AbstractVirSchema implements UVirSchema {
-
- private static final long serialVersionUID = 1089308700791426201L;
-
- public static final String TABLE = "UVirSchema";
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
index 029c96b..f9c0c81 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
@@ -20,11 +20,8 @@ package org.apache.syncope.core.persistence.jpa.entity.user;
import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Collection;
import java.util.Date;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
@@ -52,29 +49,34 @@ import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
-import org.apache.commons.collections4.Transformer;
import org.apache.syncope.common.lib.types.CipherAlgorithm;
-import org.apache.syncope.core.persistence.api.entity.membership.Membership;
import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
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.UVirAttr;
import org.apache.syncope.core.persistence.api.entity.user.User;
import org.apache.syncope.core.persistence.jpa.validation.entity.UserCheck;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractSubject;
-import org.apache.syncope.core.persistence.jpa.entity.JPAExternalResource;
+import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
import org.apache.syncope.core.persistence.jpa.entity.JPASecurityQuestion;
-import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMembership;
import org.apache.syncope.core.misc.security.Encryptor;
import org.apache.syncope.core.misc.security.SecureRandomUtils;
+import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
import org.apache.syncope.core.persistence.api.entity.Role;
+import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.persistence.api.entity.user.UMembership;
+import org.apache.syncope.core.persistence.api.entity.user.URelationship;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractAny;
+import org.apache.syncope.core.persistence.jpa.entity.JPAAnyTypeClass;
import org.apache.syncope.core.persistence.jpa.entity.JPARole;
@Entity
@Table(name = JPAUser.TABLE)
@Cacheable
@UserCheck
-public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> implements User {
+public class JPAUser extends AbstractAny<UPlainAttr, UDerAttr, UVirAttr> implements User {
private static final long serialVersionUID = -3905046855521446823L;
@@ -96,21 +98,17 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
@JoinColumn(name = "role_id"))
private List<JPARole> roles;
- @OneToMany(cascade = CascadeType.MERGE, mappedBy = "user")
- @Valid
- private List<JPAMembership> memberships;
-
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
@Valid
- private List<JPAUPlainAttr> plainAttrs;
+ private List<JPAUPlainAttr> plainAttrs = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
@Valid
- private List<JPAUDerAttr> derAttrs;
+ private List<JPAUDerAttr> derAttrs = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
@Valid
- private List<JPAUVirAttr> virAttrs;
+ private List<JPAUVirAttr> virAttrs = new ArrayList<>();
private String workflowId;
@@ -130,7 +128,7 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
@ElementCollection
@Column(name = "passwordHistoryValue")
@CollectionTable(name = "SyncopeUser_passwordHistory", joinColumns =
- @JoinColumn(name = "SyncopeUser_id", referencedColumnName = "id"))
+ @JoinColumn(name = "user_id", referencedColumnName = "id"))
private List<String> passwordHistory;
/**
@@ -174,7 +172,22 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
inverseJoinColumns =
@JoinColumn(name = "resource_name"))
@Valid
- private Set<JPAExternalResource> resources;
+ private List<JPAExternalResource> resources = new ArrayList<>();
+
+ @ManyToMany(fetch = FetchType.EAGER)
+ @JoinTable(joinColumns =
+ @JoinColumn(name = "user_id"),
+ inverseJoinColumns =
+ @JoinColumn(name = "anyTypeClass_name"))
+ private List<JPAAnyTypeClass> auxClasses = new ArrayList<>();
+
+ @OneToMany(cascade = CascadeType.ALL, mappedBy = "leftEnd")
+ @Valid
+ private List<JPAURelationship> relationships = new ArrayList<>();
+
+ @OneToMany(cascade = CascadeType.ALL, mappedBy = "leftEnd")
+ @Valid
+ private List<JPAUMembership> memberships = new ArrayList<>();
@ManyToOne(fetch = FetchType.EAGER)
private JPASecurityQuestion securityQuestion;
@@ -187,13 +200,9 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
roles = new ArrayList<>();
memberships = new ArrayList<>();
- plainAttrs = new ArrayList<>();
- derAttrs = new ArrayList<>();
- virAttrs = new ArrayList<>();
passwordHistory = new ArrayList<>();
failedLogins = 0;
suspended = getBooleanAsInteger(Boolean.FALSE);
- resources = new HashSet<>();
}
@Override
@@ -202,18 +211,28 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
}
@Override
- protected Set<JPAExternalResource> internalGetResources() {
+ public AnyType getType() {
+ return ApplicationContextProvider.getApplicationContext().getBean(AnyTypeDAO.class).findUser();
+ }
+
+ @Override
+ public void setType(final AnyType type) {
+ // nothing to do
+ }
+
+ @Override
+ protected List<JPAExternalResource> internalGetResources() {
return resources;
}
@Override
- public boolean addRole(final Role role) {
+ public boolean add(final Role role) {
checkType(role, JPARole.class);
return roles.contains((JPARole) role) || roles.add((JPARole) role);
}
@Override
- public boolean removeRole(final Role role) {
+ public boolean remove(final Role role) {
checkType(role, JPARole.class);
return roles.remove((JPARole) role);
}
@@ -224,45 +243,6 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
}
@Override
- public boolean addMembership(final Membership membership) {
- checkType(membership, JPAMembership.class);
- return memberships.contains((JPAMembership) membership) || memberships.add((JPAMembership) membership);
- }
-
- @Override
- public boolean removeMembership(final Membership membership) {
- checkType(membership, JPAMembership.class);
- return memberships.remove((JPAMembership) membership);
- }
-
- @Override
- public Membership getMembership(final Long groupKey) {
- return CollectionUtils.find(getMemberships(), new Predicate<Membership>() {
-
- @Override
- public boolean evaluate(final Membership membership) {
- return membership.getGroup() != null && groupKey.equals(membership.getGroup().getKey());
- }
- });
- }
-
- @Override
- public List<? extends Membership> getMemberships() {
- return memberships;
- }
-
- @Override
- public Collection<Long> getStaticGroupKeys() {
- return CollectionUtils.collect(memberships, new Transformer<Membership, Long>() {
-
- @Override
- public Long transform(final Membership membership) {
- return membership.getGroup().getKey();
- }
- }, new HashSet<Long>());
- }
-
- @Override
public String getPassword() {
return password;
}
@@ -309,13 +289,13 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
}
@Override
- public boolean addPlainAttr(final UPlainAttr attr) {
+ public boolean add(final UPlainAttr attr) {
checkType(attr, JPAUPlainAttr.class);
return plainAttrs.add((JPAUPlainAttr) attr);
}
@Override
- public boolean removePlainAttr(final UPlainAttr attr) {
+ public boolean remove(final UPlainAttr attr) {
checkType(attr, JPAUPlainAttr.class);
return plainAttrs.remove((JPAUPlainAttr) attr);
}
@@ -326,13 +306,13 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
}
@Override
- public boolean addDerAttr(final UDerAttr attr) {
+ public boolean add(final UDerAttr attr) {
checkType(attr, JPAUDerAttr.class);
return derAttrs.add((JPAUDerAttr) attr);
}
@Override
- public boolean removeDerAttr(final UDerAttr attr) {
+ public boolean remove(final UDerAttr attr) {
checkType(attr, JPAUDerAttr.class);
return derAttrs.remove((JPAUDerAttr) attr);
}
@@ -343,13 +323,13 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
}
@Override
- public boolean addVirAttr(final UVirAttr attr) {
+ public boolean add(final UVirAttr attr) {
checkType(attr, JPAUVirAttr.class);
return virAttrs.add((JPAUVirAttr) attr);
}
@Override
- public boolean removeVirAttr(final UVirAttr attr) {
+ public boolean remove(final UVirAttr attr) {
checkType(attr, JPAUVirAttr.class);
return virAttrs.remove((JPAUVirAttr) attr);
}
@@ -528,4 +508,76 @@ public class JPAUser extends AbstractSubject<UPlainAttr, UDerAttr, UVirAttr> imp
this.securityAnswer = securityAnswer;
}
+ @Override
+ public boolean add(final AnyTypeClass auxClass) {
+ checkType(auxClass, JPAAnyTypeClass.class);
+ return this.auxClasses.add((JPAAnyTypeClass) auxClass);
+ }
+
+ @Override
+ public boolean remove(final AnyTypeClass auxClass) {
+ checkType(auxClass, JPAAnyTypeClass.class);
+ return this.auxClasses.remove((JPAAnyTypeClass) auxClass);
+ }
+
+ @Override
+ public List<? extends AnyTypeClass> getAuxClasses() {
+ return auxClasses;
+ }
+
+ @Override
+ public boolean add(final URelationship relationship) {
+ checkType(relationship, JPAURelationship.class);
+ return this.relationships.add((JPAURelationship) relationship);
+ }
+
+ @Override
+ public boolean remove(final URelationship relationship) {
+ checkType(relationship, JPAURelationship.class);
+ return this.relationships.remove((JPAURelationship) relationship);
+ }
+
+ @Override
+ public URelationship getRelationship(final AnyObject rightEnd) {
+ return CollectionUtils.find(getRelationships(), new Predicate<URelationship>() {
+
+ @Override
+ public boolean evaluate(final URelationship relationship) {
+ return rightEnd != null && rightEnd.equals(relationship.getRightEnd());
+ }
+ });
+ }
+
+ @Override
+ public List<? extends URelationship> getRelationships() {
+ return relationships;
+ }
+
+ @Override
+ public boolean add(final UMembership membership) {
+ checkType(membership, JPAUMembership.class);
+ return this.memberships.add((JPAUMembership) membership);
+ }
+
+ @Override
+ public boolean remove(final UMembership membership) {
+ checkType(membership, JPAUMembership.class);
+ return this.memberships.remove((JPAUMembership) membership);
+ }
+
+ @Override
+ public UMembership getMembership(final Long groupKey) {
+ return CollectionUtils.find(getMemberships(), new Predicate<UMembership>() {
+
+ @Override
+ public boolean evaluate(final UMembership membership) {
+ return groupKey != null && groupKey.equals(membership.getRightEnd().getKey());
+ }
+ });
+ }
+
+ @Override
+ public List<? extends UMembership> getMemberships() {
+ return memberships;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
index a22359e..b7616c7 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
@@ -27,12 +27,11 @@ import org.apache.commons.lang3.ClassUtils;
import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
import org.apache.syncope.core.persistence.api.entity.AnnotatedEntity;
+import org.apache.syncope.core.persistence.api.entity.Any;
import org.apache.syncope.core.persistence.api.entity.Attr;
-import org.apache.syncope.core.persistence.api.entity.Attributable;
import org.apache.syncope.core.persistence.api.entity.Entity;
import org.apache.syncope.core.persistence.api.entity.Policy;
import org.apache.syncope.core.persistence.api.entity.Schema;
-import org.apache.syncope.core.persistence.api.entity.Subject;
import org.apache.syncope.core.persistence.api.entity.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,8 +62,7 @@ public class EntityValidationListener {
&& !Attr.class.equals(interf)
&& !Task.class.equals(interf)
&& !Policy.class.equals(interf)
- && !Attributable.class.equals(interf)
- && !Subject.class.equals(interf)
+ && !Any.class.equals(interf)
&& Entity.class.isAssignableFrom(interf)) {
entityInt = interf;
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
index 9fbbeab..77eea1c 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
@@ -22,13 +22,13 @@ import javax.validation.ConstraintValidatorContext;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.types.AttributableType;
import org.apache.syncope.common.lib.types.EntityViolationType;
-import org.apache.syncope.core.persistence.api.entity.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.Mapping;
-import org.apache.syncope.core.persistence.api.entity.MappingItem;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
+import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
+import org.apache.syncope.core.persistence.api.entity.resource.Provision;
import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
-import org.apache.syncope.core.persistence.api.entity.user.UMapping;
public class ExternalResourceValidator extends AbstractValidator<ExternalResourceCheck, ExternalResource> {
@@ -60,32 +60,29 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
return true;
}
- private boolean isValid(final Mapping<?> mapping, final ConstraintValidatorContext context) {
+ private boolean isValid(final AnyType anyType, final Mapping mapping, final ConstraintValidatorContext context) {
if (mapping == null) {
return true;
}
- int accountIds = CollectionUtils.countMatches(mapping.getItems(), new Predicate<MappingItem>() {
+ int connObjectKeys = CollectionUtils.countMatches(mapping.getItems(), new Predicate<MappingItem>() {
@Override
public boolean evaluate(final MappingItem item) {
- return item.isAccountid();
+ return item.isConnObjectKey();
}
});
- if (accountIds != 1) {
+ if (connObjectKeys != 1) {
context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping, "One and only one accountId mapping is needed")).
- addPropertyNode("accountId.size").addConstraintViolation();
+ getTemplate(EntityViolationType.InvalidMapping, "Single ConnObjectKey mapping is required")).
+ addPropertyNode("connObjectKey.size").addConstraintViolation();
return false;
}
- final MappingItem accountId = mapping.getAccountIdItem();
- if (mapping instanceof UMapping
- && AttributableType.GROUP == accountId.getIntMappingType().getAttributableType()) {
-
+ MappingItem connObjectKey = mapping.getConnObjectKeyItem();
+ if (connObjectKey.getIntMappingType().getAnyTypeKind() != anyType.getKind()) {
context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping,
- "Group attribute as accountId is not permitted")).
+ getTemplate(EntityViolationType.InvalidMapping, "ConnObjectKey must be from the same AnyType")).
addPropertyNode("attributableType").addConstraintViolation();
return false;
}
@@ -102,7 +99,7 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
}
if (passwords > 1) {
context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidMapping, "One and only one password mapping is allowed")).
+ getTemplate(EntityViolationType.InvalidMapping, "One password mapping is allowed at most")).
addPropertyNode("password.size").addConstraintViolation();
isValid = false;
}
@@ -141,6 +138,12 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
}
}
- return isValid(resource.getUmapping(), context) && isValid(resource.getGmapping(), context);
+ return CollectionUtils.matchesAll(resource.getProvisions(), new Predicate<Provision>() {
+
+ @Override
+ public boolean evaluate(final Provision provision) {
+ return isValid(provision.getAnyType(), provision.getMapping(), context);
+ }
+ });
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueValidator.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueValidator.java
index ae2e3ae..da00ebd 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueValidator.java
@@ -23,9 +23,6 @@ import org.apache.syncope.common.lib.types.EntityViolationType;
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.membership.MPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainSchema;
public class PlainAttrValueValidator extends AbstractValidator<PlainAttrValueCheck, PlainAttrValue> {
@@ -76,16 +73,8 @@ public class PlainAttrValueValidator extends AbstractValidator<PlainAttrValueChe
LOG.error("Unique value schema for " + object.getClass().getSimpleName() + "[" + object.getKey()
+ "]" + " is " + uniqueValueSchema + ", while owning attribute schema is " + attrSchema);
- EntityViolationType violationType = attrSchema instanceof UPlainSchema
- ? EntityViolationType.InvalidUPlainSchema
- : attrSchema instanceof GPlainSchema
- ? EntityViolationType.InvalidGPlainSchema
- : attrSchema instanceof MPlainSchema
- ? EntityViolationType.InvalidMPlainSchema
- : EntityViolationType.InvalidCPlainSchema;
-
context.disableDefaultConstraintViolation();
- context.buildConstraintViolationWithTemplate(getTemplate(violationType,
+ context.buildConstraintViolationWithTemplate(getTemplate(EntityViolationType.InvalidPlainSchema,
"Unique value schema is " + uniqueValueSchema
+ ", while owning attribute schema is " + attrSchema)).addPropertyNode("schema").
addConstraintViolation();
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaNameValidator.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaNameValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaNameValidator.java
index 5084522..a9b622e 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaNameValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaNameValidator.java
@@ -28,36 +28,23 @@ import java.util.Set;
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.lang3.ClassUtils;
import org.apache.syncope.common.lib.types.EntityViolationType;
-import org.apache.syncope.core.persistence.api.entity.conf.CPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.membership.MDerSchema;
-import org.apache.syncope.core.persistence.api.entity.membership.MPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.membership.MVirSchema;
-import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
-import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
-import org.apache.syncope.core.persistence.api.entity.user.UDerSchema;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.user.UVirSchema;
+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.VirSchema;
+import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
import org.apache.syncope.core.persistence.jpa.entity.conf.JPAConf;
-import org.apache.syncope.core.persistence.jpa.entity.membership.JPAMembership;
import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
public class SchemaNameValidator extends AbstractValidator<SchemaNameCheck, Object> {
- private static final Set<String> UNALLOWED_USCHEMA_NAMES = new HashSet<>();
-
- private static final Set<String> UNALLOWED_MSCHEMA_NAMES = new HashSet<>();
-
- private static final Set<String> UNALLOWED_RSCHEMA_NAMES = new HashSet<>();
-
- private static final Set<String> UNALLOWED_CSCHEMA_NAMES = new HashSet<>();
+ private static final Set<String> UNALLOWED_SCHEMA_NAMES = new HashSet<>();
static {
- initUnallowedSchemaNames(JPAUser.class, UNALLOWED_USCHEMA_NAMES);
- initUnallowedSchemaNames(JPAMembership.class, UNALLOWED_MSCHEMA_NAMES);
- initUnallowedSchemaNames(JPAGroup.class, UNALLOWED_RSCHEMA_NAMES);
- initUnallowedSchemaNames(JPAConf.class, UNALLOWED_CSCHEMA_NAMES);
+ initUnallowedSchemaNames(JPAAnyObject.class, UNALLOWED_SCHEMA_NAMES);
+ initUnallowedSchemaNames(JPAGroup.class, UNALLOWED_SCHEMA_NAMES);
+ initUnallowedSchemaNames(JPAUser.class, UNALLOWED_SCHEMA_NAMES);
+ initUnallowedSchemaNames(JPAConf.class, UNALLOWED_SCHEMA_NAMES);
}
private static void initUnallowedSchemaNames(final Class<?> entityClass, final Set<String> names) {
@@ -78,39 +65,14 @@ public class SchemaNameValidator extends AbstractValidator<SchemaNameCheck, Obje
@Override
public boolean isValid(final Object object, final ConstraintValidatorContext context) {
- final String schemaName;
- final Set<String> unallowedNames;
-
- if (object instanceof UPlainSchema) {
- schemaName = ((UPlainSchema) object).getKey();
- unallowedNames = UNALLOWED_USCHEMA_NAMES;
- } else if (object instanceof UDerSchema) {
- schemaName = ((UDerSchema) object).getKey();
- unallowedNames = UNALLOWED_USCHEMA_NAMES;
- } else if (object instanceof UVirSchema) {
- schemaName = ((UVirSchema) object).getKey();
- unallowedNames = UNALLOWED_USCHEMA_NAMES;
- } else if (object instanceof MPlainSchema) {
- schemaName = ((MPlainSchema) object).getKey();
- unallowedNames = UNALLOWED_MSCHEMA_NAMES;
- } else if (object instanceof MDerSchema) {
- schemaName = ((MDerSchema) object).getKey();
- unallowedNames = UNALLOWED_MSCHEMA_NAMES;
- } else if (object instanceof MVirSchema) {
- schemaName = ((MVirSchema) object).getKey();
- unallowedNames = UNALLOWED_MSCHEMA_NAMES;
- } else if (object instanceof GPlainSchema) {
- schemaName = ((GPlainSchema) object).getKey();
- unallowedNames = UNALLOWED_RSCHEMA_NAMES;
- } else if (object instanceof GDerSchema) {
- schemaName = ((GDerSchema) object).getKey();
- unallowedNames = UNALLOWED_RSCHEMA_NAMES;
- } else if (object instanceof GVirSchema) {
- schemaName = ((GVirSchema) object).getKey();
- unallowedNames = UNALLOWED_RSCHEMA_NAMES;
- } else if (object instanceof CPlainSchema) {
- schemaName = ((CPlainSchema) object).getKey();
- unallowedNames = UNALLOWED_CSCHEMA_NAMES;
+ String schemaName;
+ Set<String> unallowedNames = UNALLOWED_SCHEMA_NAMES;
+ if (object instanceof PlainSchema) {
+ schemaName = ((PlainSchema) object).getKey();
+ } else if (object instanceof DerSchema) {
+ schemaName = ((DerSchema) object).getKey();
+ } else if (object instanceof VirSchema) {
+ schemaName = ((VirSchema) object).getKey();
} else {
schemaName = null;
unallowedNames = Collections.emptySet();
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/UserValidator.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/UserValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/UserValidator.java
index 19fc7cf..e142de3 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/UserValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/UserValidator.java
@@ -26,7 +26,7 @@ import org.apache.syncope.common.lib.types.AccountPolicySpec;
import org.apache.syncope.common.lib.types.EntityViolationType;
import org.apache.syncope.common.lib.types.PasswordPolicySpec;
import org.apache.syncope.core.persistence.api.entity.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
import org.apache.syncope.core.persistence.api.entity.Policy;
import org.apache.syncope.core.persistence.api.entity.user.User;
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml b/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
index 5562674..9d300d0 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/spring-orm.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/spring-orm.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>
@@ -47,7 +47,25 @@ under the License.
</id>
</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.JPARole">
<attributes>
<id name="id">
@@ -57,7 +75,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"/>
@@ -74,63 +92,65 @@ 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.group.JPAGroup">
<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_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.membership.JPAMembership">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership">
<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_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.JPAUMapping">
+
+ <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 +164,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,30 +188,6 @@ 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">
- <attributes>
- <id name="id">
- <generated-value generator="SEQ_MPlainAttr" strategy="TABLE"/>
- <table-generator name="SEQ_MPlainAttr" pk-column-value="SEQ_MPlainAttr" initial-value="1000"/>
- </id>
- </attributes>
- </entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrTemplate">
- <attributes>
- <id name="id">
- <generated-value generator="SEQ_MPlainAttrTemplate" strategy="TABLE"/>
- <table-generator name="SEQ_MPlainAttrTemplate" pk-column-value="SEQ_MPlainAttrTemplate" initial-value="1000"/>
- </id>
- </attributes>
- </entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
<attributes>
<id name="id">
@@ -192,15 +196,15 @@ under the License.
</id>
</attributes>
</entity>
-
- <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrUniqueValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrUniqueValue">
<table>
<unique-constraint>
<column-name>booleanValue</column-name>
@@ -225,18 +229,18 @@ under the License.
</table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
- </entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue">
+ </entity>
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrUniqueValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrUniqueValue">
<table>
<unique-constraint>
<column-name>booleanValue</column-name>
@@ -261,18 +265,18 @@ under the License.
</table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
- <entity class="org.apache.syncope.core.persistence.jpa.entity.membership.JPAMPlainAttrValue">
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_MAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_GPlainAttrValue" 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.group.JPAGPlainAttrUniqueValue">
<table>
<unique-constraint>
<column-name>booleanValue</column-name>
@@ -297,14 +301,14 @@ under the License.
</table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_MAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
<entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
</id>
</attributes>
</entity>
@@ -333,7 +337,25 @@ under the License.
</table>
<attributes>
<id name="id">
- <generated-value generator="SEQ_CAttrPlainValue" strategy="TABLE"/>
+ <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
+ </id>
+ </attributes>
+ </entity>
+
+ <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplate">
+ <attributes>
+ <id name="id">
+ <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.task.JPAAnyFilter">
+ <attributes>
+ <id name="id">
+ <generated-value generator="SEQ_AnyFilter" strategy="TABLE"/>
+ <table-generator name="SEQ_AnyFilter" pk-column-value="SEQ_AnyFilter" initial-value="1000"/>
</id>
</attributes>
</entity>
@@ -388,6 +410,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">
@@ -396,6 +427,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/081d9a04/core/persistence-jpa/src/main/resources/content.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/content.xml b/core/persistence-jpa/src/main/resources/content.xml
index 0f4ab83..20b2ebc 100644
--- a/core/persistence-jpa/src/main/resources/content.xml
+++ b/core/persistence-jpa/src/main/resources/content.xml
@@ -24,8 +24,8 @@ under the License.
creator="admin" lastModifier="admin"
creationDate="2014-06-20 11:00:00" lastChangeDate="2014-06-20 11:00:00"/>
- <CPlainSchema name="password.cipher.algorithm" type="String"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="password.cipher.algorithm" type="String"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="1" owner_id="1" schema_name="password.cipher.algorithm"/>
<CPlainAttrValue id="1" attribute_id="1" stringValue="SHA1"/>
@@ -33,71 +33,70 @@ under the License.
+ not existing: NotificationJob runs according to Notification.DEFAULT_CRON_EXP
+ provided as empty string: NotificationJob disabled
+ provided as non-empty string: NotificationJob runs according to the given value -->
- <CPlainSchema name="notificationjob.cronExpression" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="notificationjob.cronExpression" type="String"
+ mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="2" owner_id="1" schema_name="notificationjob.cronExpression"/>
<CPlainAttrValue id="2" attribute_id="2" stringValue=""/>
- <CPlainSchema name="notification.maxRetries" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="notification.maxRetries" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="3" owner_id="1" schema_name="notification.maxRetries"/>
<CPlainAttrValue id="3" attribute_id="3" longValue="3"/>
- <CPlainSchema name="token.length" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="token.length" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="4" owner_id="1" schema_name="token.length"/>
<CPlainAttrValue id="4" attribute_id="4" longValue="256"/>
- <CPlainSchema name="token.expireTime" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="token.expireTime" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="5" owner_id="1" schema_name="token.expireTime"/>
<CPlainAttrValue id="5" attribute_id="5" longValue="60"/>
- <CPlainSchema name="selfRegistration.allowed" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="selfRegistration.allowed" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="6" owner_id="1" schema_name="selfRegistration.allowed"/>
<CPlainAttrValue id="6" attribute_id="6" booleanValue="1"/>
- <CPlainSchema name="passwordReset.allowed" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="passwordReset.allowed" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="7" owner_id="1" schema_name="passwordReset.allowed"/>
<CPlainAttrValue id="7" attribute_id="7" booleanValue="1"/>
- <CPlainSchema name="passwordReset.securityQuestion" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="passwordReset.securityQuestion" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="8" owner_id="1" schema_name="passwordReset.securityQuestion"/>
<CPlainAttrValue id="8" attribute_id="8" booleanValue="1"/>
- <CPlainSchema name="authentication.statuses" type="String"
- mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="authentication.statuses" type="String"
+ mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="9" owner_id="1" schema_name="authentication.statuses"/>
<CPlainAttrValue id="9" attribute_id="9" stringValue="created"/>
<CPlainAttrValue id="10" attribute_id="9" stringValue="active"/>
<!-- Save user login date upon successful authentication -->
- <CPlainSchema name="log.lastlogindate" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="log.lastlogindate" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
<CPlainAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
<CPlainAttrValue id="11" attribute_id="11" booleanValue="1"/>
<!-- For usage with admin console -->
- <CPlainSchema name="admin.user.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CPlainSchema name="self.user.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CPlainSchema name="admin.group.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CPlainSchema name="self.group.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CPlainSchema name="admin.membership.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CPlainSchema name="self.membership.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="admin.user.layout" type="String"
+ mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="self.user.layout" type="String"
+ mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="admin.group.layout" type="String"
+ mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="self.group.layout" type="String"
+ mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="admin.membership.layout" type="String"
+ mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+ <PlainSchema name="self.membership.layout" type="String"
+ mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <!-- User pre-defined schemas -->
- <UPlainSchema name="email" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
+ <PlainSchema name="email" type="String"
+ mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
+ validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
<!-- Password reset notifications -->
<Notification id="1" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1"
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/resources/indexes.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/indexes.xml b/core/persistence-jpa/src/main/resources/indexes.xml
index abd3a76..ae57529 100644
--- a/core/persistence-jpa/src/main/resources/indexes.xml
+++ b/core/persistence-jpa/src/main/resources/indexes.xml
@@ -26,15 +26,20 @@ under the License.
<entry key="UPlainAttrValue_longvalueIndex">CREATE INDEX UAttrValue_longvalueIndex ON UPlainAttrValue(longvalue)</entry>
<entry key="UPlainAttrValue_doublevalueIndex">CREATE INDEX UAttrValue_doublevalueIndex ON UPlainAttrValue(doublevalue)</entry>
<entry key="UPlainAttrValue_booleanvalueIndex">CREATE INDEX UAttrValue_booleanvalueIndex ON UPlainAttrValue(booleanvalue)</entry>
- <entry key="MPlainAttrValue_stringvalueIndex">CREATE INDEX MAttrValue_stringvalueIndex ON MPlainAttrValue(stringvalue)</entry>
- <entry key="MPlainAttrValue_datevalueIndex">CREATE INDEX MAttrValue_datevalueIndex ON MPlainAttrValue(datevalue)</entry>
- <entry key="MPlainAttrValue_longvalueIndex">CREATE INDEX MAttrValue_longvalueIndex ON MPlainAttrValue(longvalue)</entry>
- <entry key="MPlainAttrValue_doublevalueIndex">CREATE INDEX MAttrValue_doublevalueIndex ON MPlainAttrValue(doublevalue)</entry>
- <entry key="MPlainAttrValue_booleanvalueIndex">CREATE INDEX MAttrValue_booleanvalueIndex ON MPlainAttrValue(booleanvalue)</entry>
+ <entry key="APlainAttrValue_stringvalueIndex">CREATE INDEX AAttrValue_stringvalueIndex ON APlainAttrValue(stringvalue)</entry>
+ <entry key="APlainAttrValue_datevalueIndex">CREATE INDEX AAttrValue_datevalueIndex ON APlainAttrValue(datevalue)</entry>
+ <entry key="APlainAttrValue_longvalueIndex">CREATE INDEX AAttrValue_longvalueIndex ON APlainAttrValue(longvalue)</entry>
+ <entry key="APlainAttrValue_doublevalueIndex">CREATE INDEX AAttrValue_doublevalueIndex ON APlainAttrValue(doublevalue)</entry>
+ <entry key="APlainAttrValue_booleanvalueIndex">CREATE INDEX AAttrValue_booleanvalueIndex ON APlainAttrValue(booleanvalue)</entry>
<entry key="GPlainAttrValue_stringvalueIndex">CREATE INDEX GAttrValue_stringvalueIndex ON GPlainAttrValue(stringvalue)</entry>
<entry key="GPlainAttrValue_datevalueIndex">CREATE INDEX GAttrValue_datevalueIndex ON GPlainAttrValue(datevalue)</entry>
<entry key="GPlainAttrValue_longvalueIndex">CREATE INDEX GAttrValue_longvalueIndex ON GPlainAttrValue(longvalue)</entry>
<entry key="GPlainAttrValue_doublevalueIndex">CREATE INDEX GAttrValue_doublevalueIndex ON GPlainAttrValue(doublevalue)</entry>
<entry key="GPlainAttrValue_booleanvalueIndex">CREATE INDEX GAttrValue_booleanvalueIndex ON GPlainAttrValue(booleanvalue)</entry>
+ <entry key="CPlainAttrValue_stringvalueIndex">CREATE INDEX CAttrValue_stringvalueIndex ON CPlainAttrValue(stringvalue)</entry>
+ <entry key="CPlainAttrValue_datevalueIndex">CREATE INDEX CAttrValue_datevalueIndex ON CPlainAttrValue(datevalue)</entry>
+ <entry key="CPlainAttrValue_longvalueIndex">CREATE INDEX CAttrValue_longvalueIndex ON CPlainAttrValue(longvalue)</entry>
+ <entry key="CPlainAttrValue_doublevalueIndex">CREATE INDEX CAttrValue_doublevalueIndex ON CPlainAttrValue(doublevalue)</entry>
+ <entry key="CPlainAttrValue_booleanvalueIndex">CREATE INDEX CAttrValue_booleanvalueIndex ON CPlainAttrValue(booleanvalue)</entry>
<entry key="Task_executedIndex">CREATE INDEX Task_executedIndex ON Task(executed)</entry>
</properties>
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/main/resources/views.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/views.xml b/core/persistence-jpa/src/main/resources/views.xml
index f7bce20..a00b786 100644
--- a/core/persistence-jpa/src/main/resources/views.xml
+++ b/core/persistence-jpa/src/main/resources/views.xml
@@ -20,15 +20,17 @@ under the License.
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Views</comment>
+
+ <!-- user -->
<entry key="user_search">
CREATE VIEW user_search AS
- SELECT u.id as subject_id, u.* FROM SyncopeUser u
+ SELECT u.id as any_id, u.* FROM SyncopeUser u
</entry>
<entry key="user_search_unique_attr">
CREATE VIEW user_search_unique_attr AS
- SELECT ua.owner_id AS subject_id,
+ SELECT ua.owner_id AS any_id,
ua.schema_name AS schema_name,
uav.booleanvalue AS booleanvalue,
uav.datevalue AS datevalue,
@@ -41,7 +43,7 @@ under the License.
<entry key="user_search_attr">
CREATE VIEW user_search_attr AS
- SELECT ua.owner_id AS subject_id,
+ SELECT ua.owner_id AS any_id,
ua.schema_name AS schema_name,
uav.booleanvalue AS booleanvalue,
uav.datevalue AS datevalue,
@@ -54,109 +56,194 @@ under the License.
<entry key="user_search_null_attr">
CREATE VIEW user_search_null_attr AS
- SELECT u.id AS subject_id,
- UPlainSchema.name AS schema_name,
+ SELECT u.id AS any_id,
+ PlainSchema.name AS schema_name,
NULL AS booleanvalue,
NULL AS datevalue,
NULL AS doublevalue,
NULL AS longvalue,
NULL AS stringvalue
- FROM SyncopeUser u CROSS JOIN UPlainSchema
- LEFT OUTER JOIN UPlainAttr ua ON (UPlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
+ FROM SyncopeUser u CROSS JOIN PlainSchema
+ LEFT OUTER JOIN UPlainAttr ua ON (PlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
WHERE ua.id IS NULL
</entry>
- <entry key="user_search_membership">
- CREATE VIEW user_search_membership AS
+ <entry key="user_search_urelationship">
+ CREATE VIEW user_search_urelationship AS
- SELECT m.user_id AS subject_id, g.id AS group_id, g.name AS group_name
- FROM Membership m, SyncopeGroup g
+ SELECT m.user_id AS any_id, m.anyObject_id AS anyObject_id
+ FROM URelationship m
+ </entry>
+ <entry key="user_search_umembership">
+ CREATE VIEW user_search_umembership AS
+
+ SELECT m.user_id AS any_id, g.id AS group_id, g.name AS group_name
+ FROM UMembership m, SyncopeGroup g
WHERE m.group_id = g.id
</entry>
- <entry key="user_search_dyngroupmembership">
- CREATE VIEW user_search_dyngroupmembership AS
+ <entry key="user_search_udyngroupmembership">
+ CREATE VIEW user_search_udyngroupmembership AS
- SELECT ds.user_id AS subject_id, d.group_id AS group_id
- FROM DynGroupMembership d, DynGroupMembership_SyncopeUser ds
- WHERE d.id = ds.dynGroupMembership_id
+ SELECT ds.user_id AS any_id, d.group_id AS group_id
+ FROM UDynGroupMembership d, UDynGroupMembership_SyncopeUser ds
+ WHERE d.id = ds.uDynGroupMembership_id
</entry>
<entry key="user_search_role">
CREATE VIEW user_search_role AS
- SELECT ss.user_id AS subject_id, ss.role_id AS role_id
+ SELECT ss.user_id AS any_id, ss.role_id AS role_id
FROM SyncopeUser_SyncopeRole ss
</entry>
<entry key="user_search_dynrolemembership">
CREATE VIEW user_search_dynrolemembership AS
- SELECT ds.user_id AS subject_id, d.role_id AS role_id
+ SELECT ds.user_id AS any_id, d.role_id AS role_id
FROM DynRoleMembership d, DynRoleMembership_SyncopeUser ds
WHERE d.id = ds.dynRoleMembership_id
</entry>
<entry key="user_search_resource">
CREATE VIEW user_search_resource AS
- SELECT st.user_id AS subject_id, st.resource_name AS resource_name
+ SELECT st.user_id AS any_id, st.resource_name AS resource_name
FROM SyncopeUser_ExternalResource st
</entry>
<entry key="user_search_group_resource">
CREATE VIEW user_search_group_resource AS
- SELECT m.user_id AS subject_id, st.resource_name AS resource_name
- FROM Membership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
+ SELECT m.user_id AS any_id, st.resource_name AS resource_name
+ FROM UMembership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
WHERE m.group_id = r.id AND st.group_id = r.id
</entry>
+
+ <!-- anyObject -->
+ <entry key="anyObject_search">
+ CREATE VIEW anyObject_search AS
+
+ SELECT a.id as any_id, a.* FROM AnyObject a
+ </entry>
+ <entry key="anyObject_search_unique_attr">
+ CREATE VIEW anyObject_search_unique_attr AS
+
+ SELECT ua.owner_id AS any_id,
+ ua.schema_name AS schema_name,
+ uav.booleanvalue AS booleanvalue,
+ uav.datevalue AS datevalue,
+ uav.doublevalue AS doublevalue,
+ uav.longvalue AS longvalue,
+ uav.stringvalue AS stringvalue
+ FROM APlainAttrUniqueValue uav, APlainAttr ua
+ WHERE uav.attribute_id = ua.id
+ </entry>
+ <entry key="anyObject_search_attr">
+ CREATE VIEW anyObject_search_attr AS
+
+ SELECT ua.owner_id AS any_id,
+ ua.schema_name AS schema_name,
+ uav.booleanvalue AS booleanvalue,
+ uav.datevalue AS datevalue,
+ uav.doublevalue AS doublevalue,
+ uav.longvalue AS longvalue,
+ uav.stringvalue AS stringvalue
+ FROM APlainAttrValue uav, APlainAttr ua
+ WHERE uav.attribute_id = ua.id
+ </entry>
+ <entry key="anyObject_search_null_attr">
+ CREATE VIEW anyObject_search_null_attr AS
+
+ SELECT u.id AS any_id,
+ PlainSchema.name AS schema_name,
+ NULL AS booleanvalue,
+ NULL AS datevalue,
+ NULL AS doublevalue,
+ NULL AS longvalue,
+ NULL AS stringvalue
+ FROM AnyObject u CROSS JOIN PlainSchema
+ LEFT OUTER JOIN APlainAttr ua ON (PlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
+ WHERE ua.id IS NULL
+ </entry>
+ <entry key="anyObject_search_arelationship">
+ CREATE VIEW anyObject_search_arelationship AS
+
+ SELECT m.left_anyObject_id AS any_id, m.right_anyObject_id AS right_anyObject_id
+ FROM ARelationship m
+ </entry>
+ <entry key="anyObject_search_amembership">
+ CREATE VIEW anyObject_search_amembership AS
+
+ SELECT m.anyObject_id AS any_id, g.id AS group_id, g.name AS group_name
+ FROM AMembership m, SyncopeGroup g
+ WHERE m.group_id = g.id
+ </entry>
+ <entry key="anyObject_search_adyngroupmembership">
+ CREATE VIEW anyObject_search_adyngroupmembership AS
+
+ SELECT ds.anyObject_id AS any_id, d.group_id AS group_id
+ FROM ADynGroupMembership d, ADynGroupMembership_AnyObject ds
+ WHERE d.id = ds.aDynGroupMembership_id
+ </entry>
+ <entry key="anyObject_search_resource">
+ CREATE VIEW anyObject_search_resource AS
+
+ SELECT st.anyObject_id AS any_id, st.resource_name AS resource_name
+ FROM AnyObject_ExternalResource st
+ </entry>
+ <entry key="anyObject_search_group_resource">
+ CREATE VIEW anyObject_search_group_resource AS
+
+ SELECT m.anyObject_id AS any_id, st.resource_name AS resource_name
+ FROM AMembership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
+ WHERE m.group_id = r.id AND st.group_id = r.id
+ </entry>
+
+ <!-- group -->
<entry key="group_search">
CREATE VIEW group_search AS
- SELECT r.id as subject_id, r.* FROM SyncopeGroup r
+ SELECT r.id as any_id, r.* FROM SyncopeGroup r
</entry>
<entry key="group_search_unique_attr">
CREATE VIEW group_search_unique_attr AS
- SELECT ra.owner_id AS subject_id,
- rat.schema_name AS schema_name,
- rav.booleanvalue AS booleanvalue,
- rav.datevalue AS datevalue,
- rav.doublevalue AS doublevalue,
- rav.longvalue AS longvalue,
- rav.stringvalue AS stringvalue
- FROM GPlainAttrUniqueValue rav, GPlainAttr ra, GPlainAttrTemplate rat
- WHERE rav.attribute_id = ra.id
- AND ra.template_id = rat.id
+ SELECT ua.owner_id AS any_id,
+ ua.schema_name AS schema_name,
+ uav.booleanvalue AS booleanvalue,
+ uav.datevalue AS datevalue,
+ uav.doublevalue AS doublevalue,
+ uav.longvalue AS longvalue,
+ uav.stringvalue AS stringvalue
+ FROM GPlainAttrUniqueValue uav, GPlainAttr ua
+ WHERE uav.attribute_id = ua.id
</entry>
<entry key="group_search_attr">
CREATE VIEW group_search_attr AS
- SELECT ra.owner_id AS subject_id,
- rat.schema_name AS schema_name,
- rav.booleanvalue AS booleanvalue,
- rav.datevalue AS datevalue,
- rav.doublevalue AS doublevalue,
- rav.longvalue AS longvalue,
- rav.stringvalue AS stringvalue
- FROM GPlainAttrValue rav, GPlainAttr ra, GPlainAttrTemplate rat
- WHERE rav.attribute_id = ra.id
- AND ra.template_id = rat.id
+ SELECT ua.owner_id AS any_id,
+ ua.schema_name AS schema_name,
+ uav.booleanvalue AS booleanvalue,
+ uav.datevalue AS datevalue,
+ uav.doublevalue AS doublevalue,
+ uav.longvalue AS longvalue,
+ uav.stringvalue AS stringvalue
+ FROM GPlainAttrValue uav, GPlainAttr ua
+ WHERE uav.attribute_id = ua.id
</entry>
<entry key="group_search_null_attr">
CREATE VIEW group_search_null_attr AS
- SELECT r.id AS subject_id,
- GPlainSchema.name AS schema_name,
+ SELECT u.id AS any_id,
+ PlainSchema.name AS schema_name,
NULL AS booleanvalue,
NULL AS datevalue,
NULL AS doublevalue,
NULL AS longvalue,
NULL AS stringvalue
- FROM SyncopeGroup r CROSS JOIN GPlainSchema
- LEFT OUTER JOIN GPlainAttr ra ON (ra.owner_id = r.id)
- LEFT OUTER JOIN GPlainAttrTemplate rat ON (GPlainSchema.name = rat.schema_name AND ra.template_id = rat.id)
- WHERE ra.id IS NULL
+ FROM SyncopeGroup u CROSS JOIN PlainSchema
+ LEFT OUTER JOIN GPlainAttr ua ON (PlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
+ WHERE ua.id IS NULL
</entry>
<entry key="group_search_resource">
CREATE VIEW group_search_resource AS
- SELECT st.group_id AS subject_id, st.resource_name AS resource_name
+ SELECT st.group_id AS any_id, st.resource_name AS resource_name
FROM SyncopeGroup_ExternalResource st
</entry>
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
index 668c868..a3b6701 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
@@ -18,7 +18,7 @@
*/
package org.apache.syncope.core.persistence.jpa;
-import org.apache.syncope.core.persistence.api.entity.AttributableUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
import org.apache.syncope.core.persistence.api.entity.EntityFactory;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +33,6 @@ public abstract class AbstractTest {
protected EntityFactory entityFactory;
@Autowired
- protected AttributableUtilsFactory attrUtilsFactory;
+ protected AnyUtilsFactory anyUtilsFactory;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/081d9a04/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/DummyConnectorRegistry.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/DummyConnectorRegistry.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/DummyConnectorRegistry.java
index fad038e..91618d2 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/DummyConnectorRegistry.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/DummyConnectorRegistry.java
@@ -22,7 +22,7 @@ import java.util.Set;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
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.resource.ExternalResource;
import org.apache.syncope.core.provisioning.api.ConnectorRegistry;
import org.springframework.stereotype.Component;