Author: bdaw
Date: 2009-10-08 07:20:21 -0400 (Thu, 08 Oct 2009)
New Revision: 823
Modified:
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/model/hibernate/HibernateIdentityObjectRelationshipName.java
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java
Log:
- fix relationship name removal
Modified:
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/model/hibernate/HibernateIdentityObjectRelationshipName.java
===================================================================
---
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/model/hibernate/HibernateIdentityObjectRelationshipName.java 2009-10-07
19:50:06 UTC (rev 822)
+++
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/model/hibernate/HibernateIdentityObjectRelationshipName.java 2009-10-08
11:20:21 UTC (rev 823)
@@ -35,6 +35,7 @@
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
+import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CollectionOfElements;
/**
@@ -88,10 +89,11 @@
@JoinColumn(nullable = false, name="REALM")
private HibernateRealm realm;
- @CollectionOfElements
+ @CollectionOfElements()
@JoinTable(name = "jbid_io_rel_name_props", joinColumns = @JoinColumn(name =
"REALATIONSHIP_NAME_ID", nullable=false))
@org.hibernate.annotations.MapKey(columns = @Column(name = "PROP_KEY",
nullable=false))
@Column(name = "PROPERTY")
+ @Cascade(value = {org.hibernate.annotations.CascadeType.DELETE_ORPHAN,
org.hibernate.annotations.CascadeType.ALL})
private Map<String, String> properties = new HashMap<String, String>();
public HibernateIdentityObjectRelationshipName()
Modified:
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java
===================================================================
---
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java 2009-10-07
19:50:06 UTC (rev 822)
+++
idm/trunk/idm-hibernate/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java 2009-10-08
11:20:21 UTC (rev 823)
@@ -537,6 +537,7 @@
relationship.getFromIdentityObject().getFromRelationships().remove(relationship);
relationship.getToIdentityObject().getToRelationships().remove(relationship);
hibernateSession.delete(relationship);
+ hibernateSession.flush();
}
HibernateIdentityObjectRelationship[] to = new
HibernateIdentityObjectRelationship[hibernateObject.getToRelationships().size()];
@@ -546,9 +547,13 @@
relationship.getToIdentityObject().getToRelationships().remove(relationship);
hibernateSession.delete(relationship);
+ hibernateSession.flush();
+
}
hibernateSession.delete(hibernateObject);
+ hibernateSession.flush();
+
}
catch (Exception e)
{
@@ -977,10 +982,20 @@
HibernateIdentityObjectRelationship relationship =
(HibernateIdentityObjectRelationship)results.iterator().next();
- fromIO.getFromRelationships().remove(relationship);
- toIO.getToRelationships().remove(relationship);
- getHibernateSession(ctx).delete(relationship);
+ try
+ {
+ fromIO.getFromRelationships().remove(relationship);
+ toIO.getToRelationships().remove(relationship);
+ getHibernateSession(ctx).delete(relationship);
+ getHibernateSession(ctx).flush();
+ }
+ catch (HibernateException e)
+ {
+ throw new IdentityException("Cannot remove relationship");
+ }
+
+
}
public void removeRelationships(IdentityStoreInvocationContext ctx, IdentityObject
identity1, IdentityObject identity2, boolean named) throws IdentityException
@@ -1001,9 +1016,17 @@
if ((named && relationship.getName() != null) ||
(!named && relationship.getName() == null))
{
-
relationship.getFromIdentityObject().getFromRelationships().remove(relationship);
-
relationship.getToIdentityObject().getToRelationships().remove(relationship);
- getHibernateSession(ctx).delete(relationship);
+ try
+ {
+
relationship.getFromIdentityObject().getFromRelationships().remove(relationship);
+
relationship.getToIdentityObject().getToRelationships().remove(relationship);
+ getHibernateSession(ctx).delete(relationship);
+ getHibernateSession(ctx).flush();
+ }
+ catch (HibernateException e)
+ {
+ throw new IdentityException("Cannot remove relationship");
+ }
}
}
}
@@ -1108,7 +1131,9 @@
hiorn = new HibernateIdentityObjectRelationshipName(name, realm);
getHibernateSession(ctx).persist(hiorn);
+ getHibernateSession(ctx).flush();
+
}
catch (Exception e)
{
@@ -1129,6 +1154,7 @@
Session hibernateSession = getHibernateSession(ctx);
+
try
{
HibernateIdentityObjectRelationshipName hiorn =
(HibernateIdentityObjectRelationshipName)hibernateSession.createCriteria(HibernateIdentityObjectRelationshipName.class)
@@ -1139,12 +1165,23 @@
throw new IdentityException("Relationship name doesn't
exist");
}
+ List<HibernateIdentityObjectRelationship> rels =
(List<HibernateIdentityObjectRelationship>)hibernateSession.
+ createCriteria(HibernateIdentityObjectRelationship.class)
+ .add(Restrictions.eq("name", hiorn)).list();
+
+ //Remove all present usages
+ for (HibernateIdentityObjectRelationship rel : rels)
+ {
+ getHibernateSession(ctx).delete(rel);
+ }
+
getHibernateSession(ctx).delete(hiorn);
+ getHibernateSession(ctx).flush();
}
catch (Exception e)
{
- throw new IdentityException("Cannot create new relationship name: " +
name, e);
+ throw new IdentityException("Cannot remove new relationship name: " +
name, e);
}
@@ -2111,6 +2148,8 @@
hibernateObject.addCredential(hibernateCredential);
+ hibernateSession.flush();
+
}
else
{
@@ -2129,6 +2168,8 @@
{
HibernateIdentityObjectType hibernateType = new HibernateIdentityObjectType(type);
getHibernateSession(ctx).persist(hibernateType);
+ getHibernateSession(ctx).flush();
+
}
@@ -2136,6 +2177,7 @@
{
HibernateIdentityObjectRelationshipType hibernateType = new
HibernateIdentityObjectRelationshipType(type);
getHibernateSession(ctx).persist(hibernateType);
+ getHibernateSession(ctx).flush();
}