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 ----
|