Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping In directory sc8-pr-cvs1:/tmp/cvs-serv29025/sf/hibernate/mapping Modified Files: Array.java Association.java Collection.java Column.java Component.java IndexedCollection.java IntegerValue.java List.java Map.java OneToMany.java PersistentClass.java PrimitiveArray.java Property.java RootClass.java Subclass.java Log Message: added DynaBean support Index: Array.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Array.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Array.java 5 Jan 2003 02:11:22 -0000 1.4 --- Array.java 19 Jan 2003 11:47:07 -0000 1.5 *************** *** 2,11 **** package net.sf.hibernate.mapping; ! import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.PrimitiveType; import net.sf.hibernate.type.Type; import net.sf.hibernate.type.TypeFactory; ! import net.sf.hibernate.*; import org.w3c.dom.Node; import org.w3c.dom.NodeList; --- 2,12 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.PrimitiveType; import net.sf.hibernate.type.Type; import net.sf.hibernate.type.TypeFactory; ! import net.sf.hibernate.util.ReflectHelper; ! import org.w3c.dom.Node; import org.w3c.dom.NodeList; *************** *** 34,38 **** if ( "element".equals(name) ) { Type type = Value.getTypeFromXML(subnode); ! elementClass = isPrimitiveArray() ? ( (PrimitiveType) type ).primitiveClass() : type.returnedClass(); } else if ( "one-to-many".equals(name) || "many-to-many".equals(name) || "composite-element".equals(name) ) { --- 35,39 ---- if ( "element".equals(name) ) { Type type = Value.getTypeFromXML(subnode); ! elementClass = isPrimitiveArray() ? ( (PrimitiveType) type ).primitiveClass() : type.getReturnedClass(); } else if ( "one-to-many".equals(name) || "many-to-many".equals(name) || "composite-element".equals(name) ) { Index: Association.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Association.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Association.java 9 Jan 2003 12:24:51 -0000 1.5 --- Association.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,10 **** package net.sf.hibernate.mapping; ! import org.w3c.dom.Node; ! ! import net.sf.hibernate.*; import net.sf.hibernate.loader.OuterJoinLoader; import net.sf.hibernate.type.Type; public abstract class Association extends Value { --- 2,10 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.loader.OuterJoinLoader; import net.sf.hibernate.type.Type; + + import org.w3c.dom.Node; public abstract class Association extends Value { Index: Collection.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Collection.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Collection.java 9 Jan 2003 12:24:51 -0000 1.7 --- Collection.java 19 Jan 2003 11:47:07 -0000 1.8 *************** *** 140,144 **** key = new Value(subnode, isOneToMany, table, root, DEFAULT_KEY_COLUMN_NAME); key.setType( owner.getIdentifier().getType() ); ! if ( key.getType().returnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); --- 140,144 ---- key = new Value(subnode, isOneToMany, table, root, DEFAULT_KEY_COLUMN_NAME); key.setType( owner.getIdentifier().getType() ); ! if ( key.getType().getReturnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); Index: Column.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Column.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Column.java 5 Jan 2003 02:11:22 -0000 1.3 --- Column.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,12 **** package net.sf.hibernate.mapping; - import org.w3c.dom.*; - import net.sf.hibernate.dialect.Dialect; - import net.sf.hibernate.type.Type; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Mapping; import net.sf.hibernate.util.StringHelper; public class Column { --- 2,13 ---- package net.sf.hibernate.mapping; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; + import net.sf.hibernate.dialect.Dialect; import net.sf.hibernate.engine.Mapping; + import net.sf.hibernate.type.Type; import net.sf.hibernate.util.StringHelper; + + import org.w3c.dom.Node; public class Column { Index: Component.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Component.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Component.java 9 Jan 2003 12:24:51 -0000 1.5 --- Component.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,24 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; ! import net.sf.hibernate.type.Type; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.util.JoinedIterator; public class Component extends Value { private ArrayList properties = new ArrayList(); ! private final Class componentClass; private final boolean embedded; private String parentProperty; - public String toString() { - return "Component: " + componentClass.getName(); - } - public int getPropertySpan() { return properties.size(); --- 2,31 ---- package net.sf.hibernate.mapping; ! import java.util.ArrayList; ! import java.util.Iterator; ! ! import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Cascades; + import net.sf.hibernate.type.Type; + import net.sf.hibernate.util.JoinedIterator; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.type.ComponentType; ! import net.sf.hibernate.type.DynaBeanType; ! ! import org.apache.commons.beanutils.BasicDynaClass; ! import org.apache.commons.beanutils.BasicDynaBean; ! import org.apache.commons.beanutils.DynaProperty; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public class Component extends Value { + private ArrayList properties = new ArrayList(); ! private Class componentClass; ! private BasicDynaClass dynaClass; private final boolean embedded; private String parentProperty; public int getPropertySpan() { return properties.size(); *************** *** 56,61 **** setTable(table); Node classNode = node.getAttributes().getNamedItem("class"); String className; ! if (classNode!=null) { className = classNode.getNodeValue(); try { --- 63,73 ---- setTable(table); Node classNode = node.getAttributes().getNamedItem("class"); + Node dynaclassNode = node.getAttributes().getNamedItem("dynaclass"); String className; ! if (dynaclassNode!=null) { ! className = dynaclassNode.getNodeValue(); ! embedded = false; ! } ! else if (classNode!=null) { className = classNode.getNodeValue(); try { *************** *** 73,81 **** } else { componentClass = owner.getPersistentClass(); className = owner.getName(); embedded = true; } - if (componentClass==null) throw new MappingException("Could not determine class of a component"); //an assertion //component path --- 85,93 ---- } else { + // an "embedded" component (ids only) componentClass = owner.getPersistentClass(); className = owner.getName(); embedded = true; } //component path *************** *** 109,114 **** value = new Value(subnode, isNullable, table, root, propertyName); } ! else if ( "component".equals(name) || "nested-composite-element".equals(name) ) { ! Class subreflectedClass = ReflectHelper.getGetter( componentClass, propertyName ).getReturnType(); value = new Component(subnode, subreflectedClass, path, owner, isNullable, table, root); } --- 121,128 ---- value = new Value(subnode, isNullable, table, root, propertyName); } ! else if ( "component".equals(name) || "dynabean".equals(name) || "nested-composite-element".equals(name) ) { ! Class subreflectedClass = (componentClass==null) ? ! null : ! ReflectHelper.getGetter( componentClass, propertyName ).getReturnType(); value = new Component(subnode, subreflectedClass, path, owner, isNullable, table, root); } *************** *** 117,123 **** } if ( value!=null) { ! value.setTypeByReflection(componentClass, propertyName); value.createForeignKeys(root, table); ! addProperty( new Property(subnode, value, root) ); } } --- 131,137 ---- } if ( value!=null) { ! if (componentClass!=null) value.setTypeByReflection(componentClass, propertyName); value.createForeignKeys(root, table); ! addProperty( new Property(subnode, value, root) ); } } *************** *** 128,131 **** --- 142,146 ---- Cascades.CascadeStyle[] cascade = new Cascades.CascadeStyle[span]; int[] joinedFetch = new int[span]; + DynaProperty[] dynaprops = new DynaProperty[span]; Iterator iter = getPropertyIterator(); int i=0; *************** *** 136,148 **** cascade[i] = prop.cascade(); joinedFetch[i] = prop.getValue().enableJoinedFetch(); i++; } ! setType( new net.sf.hibernate.type.ComponentType(componentClass, types, names, joinedFetch, cascade, parentProperty, embedded) ); } - public Class getComponentClass() { - return componentClass; - } public void setTypeByReflection(Class propertyClass, String propertyName) throws MappingException { } --- 151,166 ---- cascade[i] = prop.cascade(); joinedFetch[i] = prop.getValue().enableJoinedFetch(); + if (componentClass==null) dynaprops[i] = new DynaProperty( names[i], types[i].getReturnedClass() ); i++; } + if (componentClass==null) dynaClass = new BasicDynaClass(className, BasicDynaBean.class, dynaprops); ! setType( ! (componentClass==null) ? ! (Type) new DynaBeanType(dynaClass, names, types, joinedFetch, cascade) : ! (Type) new ComponentType(componentClass, names, types, joinedFetch, cascade, parentProperty, embedded) ! ); } public void setTypeByReflection(Class propertyClass, String propertyName) throws MappingException { } Index: IndexedCollection.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/IndexedCollection.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** IndexedCollection.java 5 Jan 2003 02:11:22 -0000 1.3 --- IndexedCollection.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 4,10 **** import java.util.Iterator; ! import net.sf.hibernate.*; ! import org.w3c.dom.*; public abstract class IndexedCollection extends Collection { --- 4,10 ---- import java.util.Iterator; ! import net.sf.hibernate.MappingException; ! import org.w3c.dom.Node; public abstract class IndexedCollection extends Collection { Index: IntegerValue.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/IntegerValue.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IntegerValue.java 9 Jan 2003 12:24:51 -0000 1.5 --- IntegerValue.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,9 **** package net.sf.hibernate.mapping; - import net.sf.hibernate.*; import net.sf.hibernate.Hibernate; import net.sf.hibernate.type.Type; ! import org.w3c.dom.*; public class IntegerValue extends Value { --- 2,10 ---- package net.sf.hibernate.mapping; import net.sf.hibernate.Hibernate; + import net.sf.hibernate.MappingException; import net.sf.hibernate.type.Type; ! ! import org.w3c.dom.Node; public class IntegerValue extends Value { Index: List.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/List.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** List.java 5 Jan 2003 02:11:22 -0000 1.3 --- List.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,9 **** package net.sf.hibernate.mapping; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; public class List extends IndexedCollection { --- 2,11 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; + + import org.w3c.dom.Node; + import org.w3c.dom.NodeList; public class List extends IndexedCollection { Index: Map.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Map.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Map.java 9 Jan 2003 12:24:51 -0000 1.6 --- Map.java 19 Jan 2003 11:47:07 -0000 1.7 *************** *** 4,13 **** import java.util.Comparator; ! import net.sf.hibernate.*; ! import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; ! import org.w3c.dom.*; public class Map extends IndexedCollection { --- 4,14 ---- import java.util.Comparator; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.type.PersistentCollectionType; import net.sf.hibernate.type.TypeFactory; + import net.sf.hibernate.util.ReflectHelper; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public class Map extends IndexedCollection { Index: OneToMany.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/OneToMany.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** OneToMany.java 5 Jan 2003 02:11:22 -0000 1.3 --- OneToMany.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,10 **** package net.sf.hibernate.mapping; - import org.w3c.dom.*; - import net.sf.hibernate.util.ReflectHelper; - import net.sf.hibernate.type.EntityType; import net.sf.hibernate.Hibernate; import net.sf.hibernate.MappingException; public class OneToMany { --- 2,11 ---- package net.sf.hibernate.mapping; import net.sf.hibernate.Hibernate; import net.sf.hibernate.MappingException; + import net.sf.hibernate.type.EntityType; + import net.sf.hibernate.util.ReflectHelper; + + import org.w3c.dom.Node; public class OneToMany { Index: PersistentClass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/PersistentClass.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PersistentClass.java 9 Jan 2003 12:24:51 -0000 1.5 --- PersistentClass.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 2,12 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.util.JoinedIterator; ! import net.sf.hibernate.*; public abstract class PersistentClass { --- 2,17 ---- package net.sf.hibernate.mapping; ! import java.util.ArrayList; ! import java.util.Iterator; ! ! import net.sf.hibernate.MappingException; import net.sf.hibernate.cache.CacheConcurrencyStrategy; + import net.sf.hibernate.util.JoinedIterator; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! ! import org.w3c.dom.NamedNodeMap; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public abstract class PersistentClass { *************** *** 83,87 **** value = new Value(subnode, true, table, root, propertyName); } ! else if ( "component".equals(name) ) { Class reflectedClass = ReflectHelper.getGetter( getPersistentClass(), propertyName ).getReturnType(); value = new Component(subnode, reflectedClass, path, this, true, table, root); --- 88,92 ---- value = new Value(subnode, true, table, root, propertyName); } ! else if ( "component".equals(name) || "dynabean".equals(name) ) { Class reflectedClass = ReflectHelper.getGetter( getPersistentClass(), propertyName ).getReturnType(); value = new Component(subnode, reflectedClass, path, this, true, table, root); Index: PrimitiveArray.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/PrimitiveArray.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PrimitiveArray.java 5 Jan 2003 02:11:22 -0000 1.3 --- PrimitiveArray.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,6 **** package net.sf.hibernate.mapping; ! import net.sf.hibernate.*; import org.w3c.dom.Node; --- 2,6 ---- package net.sf.hibernate.mapping; ! import net.sf.hibernate.MappingException; import org.w3c.dom.Node; Index: Property.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Property.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Property.java 5 Jan 2003 02:11:22 -0000 1.3 --- Property.java 19 Jan 2003 11:47:07 -0000 1.4 *************** *** 2,20 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.Type; public class Property { private final String name; private final Value value; private String cascade; - - public String toString() { - return "Property: " + name; - } public Type getType() { --- 2,20 ---- package net.sf.hibernate.mapping; ! import java.util.Iterator; ! ! import net.sf.hibernate.MappingException; import net.sf.hibernate.engine.Cascades; import net.sf.hibernate.type.AbstractComponentType; import net.sf.hibernate.type.Type; + import org.w3c.dom.NamedNodeMap; + import org.w3c.dom.Node; + public class Property { + private final String name; private final Value value; private String cascade; public Type getType() { Index: RootClass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/RootClass.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** RootClass.java 9 Jan 2003 12:24:51 -0000 1.5 --- RootClass.java 19 Jan 2003 11:47:07 -0000 1.6 *************** *** 5,20 **** import java.util.Iterator; ! import org.apache.commons.logging.Log; ! import org.apache.commons.logging.LogFactory; ! import org.w3c.dom.*; import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.cache.HashBelt; - import net.sf.hibernate.cache.ReadWriteCache; import net.sf.hibernate.cache.ReadOnlyCache; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! import net.sf.hibernate.*; ! import net.sf.hibernate.Hibernate; public class RootClass extends PersistentClass { --- 5,23 ---- import java.util.Iterator; ! import net.sf.hibernate.Hibernate; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.cache.HashBelt; import net.sf.hibernate.cache.ReadOnlyCache; + import net.sf.hibernate.cache.ReadWriteCache; import net.sf.hibernate.util.ReflectHelper; import net.sf.hibernate.util.StringHelper; ! ! import org.apache.commons.logging.Log; ! import org.apache.commons.logging.LogFactory; ! import org.w3c.dom.NamedNodeMap; ! import org.w3c.dom.Node; ! import org.w3c.dom.NodeList; public class RootClass extends PersistentClass { *************** *** 35,42 **** private Class persister; - public String toString() { - return "RootClass: " + getPersistentClass().getName(); - } - public Property getIdentifierProperty() { return identifierProperty; --- 38,41 ---- *************** *** 150,154 **** identifierProperty = new Property(subnode, identifier, root); } ! if ( identifier.getType().returnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); --- 149,153 ---- identifierProperty = new Property(subnode, identifier, root); } ! if ( identifier.getType().getReturnedClass().isArray() ) throw new MappingException( "illegal use of an array as an identifier (arrays don't reimplement equals)" ); Index: Subclass.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Subclass.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Subclass.java 9 Jan 2003 12:24:51 -0000 1.4 --- Subclass.java 19 Jan 2003 11:47:07 -0000 1.5 *************** *** 2,14 **** package net.sf.hibernate.mapping; ! import java.util.*; ! import org.w3c.dom.*; ! import net.sf.hibernate.*; import net.sf.hibernate.cache.CacheConcurrencyStrategy; - import net.sf.hibernate.util.JoinedIterator; - import net.sf.hibernate.util.StringHelper; import net.sf.hibernate.persister.EntityPersister; import net.sf.hibernate.persister.MultiTableEntityPersister; public class Subclass extends PersistentClass { --- 2,18 ---- package net.sf.hibernate.mapping; ! import java.util.Collections; ! import java.util.Iterator; ! import net.sf.hibernate.MappingException; import net.sf.hibernate.cache.CacheConcurrencyStrategy; import net.sf.hibernate.persister.EntityPersister; import net.sf.hibernate.persister.MultiTableEntityPersister; + import net.sf.hibernate.util.JoinedIterator; + import net.sf.hibernate.util.StringHelper; + + import org.w3c.dom.NamedNodeMap; + import org.w3c.dom.Node; + import org.w3c.dom.NodeList; public class Subclass extends PersistentClass { *************** *** 18,25 **** public CacheConcurrencyStrategy getCache() { return getSuperclass().getCache(); - } - - public String toString() { - return "Subclass: " + getPersistentClass().getName(); } --- 22,25 ---- |