|
From: <one...@us...> - 2003-01-03 13:36:05
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/xml
In directory sc8-pr-cvs1:/tmp/cvs-serv2643/src/net/sf/hibernate/xml
Modified Files:
XMLDatabinder.java
Log Message:
removed exceptions that occur if an object is saved or deleted multiple times in a session
added <parent> subelement to <composite-element> and <nested-composite-element>
Index: XMLDatabinder.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/xml/XMLDatabinder.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** XMLDatabinder.java 1 Jan 2003 13:58:31 -0000 1.1.1.1
--- XMLDatabinder.java 3 Jan 2003 13:36:01 -0000 1.2
***************
*** 6,31 ****
import java.lang.reflect.Array;
import java.sql.SQLException;
! import java.util.*;
! import javax.xml.transform.*;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
! import org.jdom.*;
import org.jdom.output.DOMOutputter;
import org.jdom.output.XMLOutputter;
- import net.sf.hibernate.*;
- import net.sf.hibernate.impl.*;
- import net.sf.hibernate.persister.*;
- import net.sf.hibernate.proxy.*;
- import net.sf.hibernate.type.*;
- import net.sf.hibernate.collection.PersistentCollection;
- import net.sf.hibernate.engine.*;
- import net.sf.hibernate.util.StringHelper;
-
/**
* Implementation of the API class Databinder. NOT threadsafe.
--- 6,55 ----
import java.lang.reflect.Array;
import java.sql.SQLException;
! import java.util.ArrayList;
! import java.util.Collection;
! import java.util.Date;
! import java.util.HashSet;
! import java.util.Iterator;
! import java.util.List;
! import java.util.Map;
! import java.util.Set;
! import javax.xml.transform.ErrorListener;
! import javax.xml.transform.Result;
! import javax.xml.transform.Source;
! import javax.xml.transform.Transformer;
! import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+ import net.sf.hibernate.Databinder;
+ import net.sf.hibernate.Hibernate;
+ import net.sf.hibernate.HibernateException;
+ import net.sf.hibernate.MappingException;
+ import net.sf.hibernate.collection.CollectionPersister;
+ import net.sf.hibernate.collection.PersistentCollection;
+ import net.sf.hibernate.engine.SessionFactoryImplementor;
+ import net.sf.hibernate.persister.ClassPersister;
+ import net.sf.hibernate.proxy.HibernateProxy;
+ import net.sf.hibernate.proxy.HibernateProxyHelper;
+ import net.sf.hibernate.proxy.LazyInitializer;
+ import net.sf.hibernate.type.AbstractComponentType;
+ import net.sf.hibernate.type.BagType;
+ import net.sf.hibernate.type.ListType;
+ import net.sf.hibernate.type.MapType;
+ import net.sf.hibernate.type.PersistentCollectionType;
+ import net.sf.hibernate.type.SetType;
+ import net.sf.hibernate.type.Type;
+ import net.sf.hibernate.util.StringHelper;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
! import org.jdom.Document;
! import org.jdom.Element;
! import org.jdom.JDOMException;
import org.jdom.output.DOMOutputter;
import org.jdom.output.XMLOutputter;
/**
* Implementation of the API class Databinder. NOT threadsafe.
***************
*** 111,117 ****
}
- /**
- *
- */
private Object maybeInitializeIfProxy(Object object, Element element) throws HibernateException {
if ( !(object instanceof HibernateProxy) ) return object;
--- 135,138 ----
***************
*** 186,199 ****
collectionElem.addContent(elemElement);
}
! } else {
// "real" collections
PersistentCollection persistentCollection = (PersistentCollection) value;
! if (persister.isLazy() && !this.initializeLazy && !persistentCollection.wasInitialized()) {
collectionElem.setAttribute("lazy", "uninitialized");
! } else {
! if (persistentCollection.wasInitialized()) {
collectionElem.setAttribute("lazy", "initialized");
! } else {
collectionElem.setAttribute("lazy", "now-initialized");
}
--- 207,223 ----
collectionElem.addContent(elemElement);
}
! }
! else {
// "real" collections
PersistentCollection persistentCollection = (PersistentCollection) value;
! if ( persister.isLazy() && !this.initializeLazy && !persistentCollection.wasInitialized() ) {
collectionElem.setAttribute("lazy", "uninitialized");
! }
! else {
! if ( persistentCollection.wasInitialized() ) {
collectionElem.setAttribute("lazy", "initialized");
! }
! else {
collectionElem.setAttribute("lazy", "now-initialized");
}
***************
*** 238,242 ****
if ( name!=null) referenceElem.setAttribute( "name", name );
//propertyElem.setAttribute( "value", types[i].toXML( values[i] ) );
! if ((value = maybeInitializeIfProxy(value, referenceElem)) != null) {
if ( getPersister( value.getClass() ).hasIdentifierProperty() )
referenceElem.setAttribute( "uid", type.toXML( value, factory ) );
--- 262,266 ----
if ( name!=null) referenceElem.setAttribute( "name", name );
//propertyElem.setAttribute( "value", types[i].toXML( values[i] ) );
! if ( ( value = maybeInitializeIfProxy(value, referenceElem) ) != null) {
if ( getPersister( value.getClass() ).hasIdentifierProperty() )
referenceElem.setAttribute( "uid", type.toXML( value, factory ) );
***************
*** 247,251 ****
// avoid duplications (including objects that have a field referencing to themselves)
! if (!processedObjects.contains(value) && !objects.contains(value)) {
associatedObjects.add(value);
}
--- 271,275 ----
// avoid duplications (including objects that have a field referencing to themselves)
! if ( !processedObjects.contains(value) && !objects.contains(value) ) {
associatedObjects.add(value);
}
|