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); } |