Author: bdaw
Date: 2008-09-11 16:44:54 -0400 (Thu, 11 Sep 2008)
New Revision: 78
Modified:
trunk/identity-impl/pom.xml
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObject.java
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObjectType.java
trunk/identity-impl/src/test/java/org/jboss/test/identity/impl/test/portal/JPAModelTestCase.java
trunk/identity-impl/src/test/resources/META-INF/persistence.xml
Log:
- some JPA core model impl improvements
Modified: trunk/identity-impl/pom.xml
===================================================================
--- trunk/identity-impl/pom.xml 2008-09-11 20:36:29 UTC (rev 77)
+++ trunk/identity-impl/pom.xml 2008-09-11 20:44:54 UTC (rev 78)
@@ -52,6 +52,11 @@
<artifactId>persistence-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ <version>3.3.1.GA</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
@@ -59,7 +64,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
- <version>3.3.1.ga</version>
+ <version>3.3.2.GA</version>
<scope>test</scope>
</dependency>
<dependency>
Modified:
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObject.java
===================================================================
---
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObject.java 2008-09-11
20:36:29 UTC (rev 77)
+++
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObject.java 2008-09-11
20:44:54 UTC (rev 78)
@@ -25,34 +25,41 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.HashMap;
import javax.persistence.Column;
+import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
+import javax.persistence.FetchType;
+import javax.persistence.UniqueConstraint;
+import javax.persistence.JoinColumn;
import org.jboss.identity.exception.PolicyValidationException;
import org.jboss.identity.model.core.IdentityObject;
+import org.hibernate.annotations.CollectionOfElements;
/**
* @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw
Dawidowicz</a>
* @version : 0.1 $
*/
@Entity
-@Table(name = "identity_objects")
+@Table(name = "identity_obj", uniqueConstraints =
{@UniqueConstraint(columnNames = {"NAME", "IDENTITY_TYPE"})})
public class JPAIdentityObject implements IdentityObject
{
@Id
@GeneratedValue
private Long id;
- @Column(nullable = false)
+ @Column(name = "NAME", nullable = false)
private String name;
@ManyToOne
+ @JoinColumn(name = "IDENTITY_TYPE")
private JPAIdentityObjectType identityType;
@OneToMany(mappedBy = "fromIdentityObject")
@@ -61,6 +68,8 @@
@OneToMany(mappedBy = "toIdentityObject")
private Set<JPAIdentityObjectRelationship> toRelationships = new
HashSet<JPAIdentityObjectRelationship>();
+ @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
+ private Map<String, JPAIdentityObjectAttribute> attributes = new
HashMap<String, JPAIdentityObjectAttribute>();
public JPAIdentityObject()
{
@@ -109,9 +118,21 @@
public Map<String, Set<String>> getAttributes()
{
- return null;
+ Map<String, Set<String>> map = new HashMap<String,
Set<String>>();
+
+ for (JPAIdentityObjectAttribute attribute : attributes.values())
+ {
+ map.put(attribute.getName(), attribute.getValues());
+ }
+
+ return map;
}
+ public void addAttribute(String name, Set<String> values)
+ {
+ attributes.put(name, new JPAIdentityObjectAttribute(name, values));
+ }
+
public Set<JPAIdentityObjectRelationship> getFromRelationships()
{
return fromRelationships;
Modified:
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObjectType.java
===================================================================
---
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObjectType.java 2008-09-11
20:36:29 UTC (rev 77)
+++
trunk/identity-impl/src/main/java/org/jboss/identity/impl/model/JPAIdentityObjectType.java 2008-09-11
20:44:54 UTC (rev 78)
@@ -35,7 +35,7 @@
* @version : 0.1 $
*/
@Entity
-@Table(name = "identity_objects_types")
+@Table(name = "identity_obj_types")
public class JPAIdentityObjectType implements IdentityObjectType
{
@Id
Modified:
trunk/identity-impl/src/test/java/org/jboss/test/identity/impl/test/portal/JPAModelTestCase.java
===================================================================
---
trunk/identity-impl/src/test/java/org/jboss/test/identity/impl/test/portal/JPAModelTestCase.java 2008-09-11
20:36:29 UTC (rev 77)
+++
trunk/identity-impl/src/test/java/org/jboss/test/identity/impl/test/portal/JPAModelTestCase.java 2008-09-11
20:44:54 UTC (rev 78)
@@ -25,6 +25,8 @@
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.logging.Logger;
+import java.util.Set;
+import java.util.HashSet;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -233,4 +235,136 @@
}
}
+ public void testNameTypeConstraint() throws Exception
+ {
+
+ try
+ {
+ em.getTransaction().begin();
+
+ JPAIdentityObjectType groupType = new JPAIdentityObjectType("Group");
+ em.persist(groupType);
+ JPAIdentityObjectType userType = new JPAIdentityObjectType("User");
+ em.persist(userType);
+
+ JPAIdentityObject user1 = new JPAIdentityObject("user1", userType);
+ em.persist(user1);
+ JPAIdentityObject user2 = new JPAIdentityObject("user2", userType);
+ em.persist(user2);
+
+ em.getTransaction().commit();
+
+ try
+ {
+ em.getTransaction().begin();
+
+ JPAIdentityObject user3 = new JPAIdentityObject("user2",
userType);
+ em.persist(user3);
+
+ //em.getTransaction().commit();
+
+ // Should fail
+ fail();
+ }
+ catch (Exception e)
+ {
+ //expected
+ em.getTransaction().rollback();
+ }
+
+
+ em.getTransaction().begin();
+
+
+ JPAIdentityObject user4 = new JPAIdentityObject("group1", userType);
+ em.persist(user4);
+
+
+ JPAIdentityObject group1 = new JPAIdentityObject("group1",
groupType);
+ em.persist(group1);
+ JPAIdentityObject group2 = new JPAIdentityObject("group2",
groupType);
+ em.persist(group2);
+
+ em.getTransaction().commit();
+
+ try
+ {
+ em.getTransaction().begin();
+
+ JPAIdentityObject group3 = new JPAIdentityObject("group2",
groupType);
+ em.persist(group3);
+
+ // Should fail
+ fail();
+ }
+ catch (Exception e)
+ {
+ //expected
+ em.getTransaction().rollback();
+ }
+
+ em.getTransaction().begin();
+
+ JPAIdentityObject group4 = new JPAIdentityObject("user1", groupType);
+ em.persist(group4);
+
+ em.getTransaction().commit();
+
+
+
+ }
+ catch (Exception ex)
+ {
+ em.getTransaction().rollback();
+ ex.printStackTrace();
+ fail("Exception during testPersistence");
+ }
+
+ }
+
+
+ public void testAttributes() throws Exception
+ {
+
+ try
+ {
+ em.getTransaction().begin();
+
+ JPAIdentityObjectType userType = new JPAIdentityObjectType("User");
+ em.persist(userType);
+ JPAIdentityObject user1 = new JPAIdentityObject("user1", userType);
+ em.persist(user1);
+
+ Set<String> values1 = new HashSet<String>();
+ values1.add("Val1");
+ values1.add("Val2");
+ values1.add("Val3");
+
+
+ user1.addAttribute("simple1", values1);
+ user1.addAttribute("simple2", values1);
+
+
+ em.getTransaction().commit();
+
+ em.getTransaction().begin();
+
+
+ user1 = em.find(JPAIdentityObject.class, user1.getId());
+ assertEquals(2, user1.getAttributes().entrySet().size() );
+ assertNotNull(user1.getAttributes().get("simple1"));
+ assertEquals(3, user1.getAttributes().get("simple1").size());
+
+
+ em.getTransaction().commit();
+ }
+ catch (Exception ex)
+ {
+ em.getTransaction().rollback();
+ ex.printStackTrace();
+ fail("Exception during testPersistence");
+ }
+
+ }
+
}
Modified: trunk/identity-impl/src/test/resources/META-INF/persistence.xml
===================================================================
--- trunk/identity-impl/src/test/resources/META-INF/persistence.xml 2008-09-11 20:36:29
UTC (rev 77)
+++ trunk/identity-impl/src/test/resources/META-INF/persistence.xml 2008-09-11 20:44:54
UTC (rev 78)
@@ -10,6 +10,7 @@
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.jboss.identity.impl.model.JPAIdentityObject</class>
+
<class>org.jboss.identity.impl.model.JPAIdentityObjectAttribute</class>
<class>org.jboss.identity.impl.model.JPAIdentityObjectType</class>
<class>org.jboss.identity.impl.model.JPAIdentityObjectRelationship</class>
<class>org.jboss.identity.impl.model.JPAIdentityObjectRelationshipType</class>