[hibernate-commits] Hibernate SVN: r16011 - in branches/Branch_3_2/HibernateExt/tools: src/java/org/hibernate and 6 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Feb 20 11:11:57 EST 2009


Author: max.andersen at jboss.com
Date: 2009-02-20 11:11:57 -0500 (Fri, 20 Feb 2009)
New Revision: 16011

Added:
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/AssociationInfo.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaulAssociationInfo.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ForeignKeyCollectionInfo.java
Modified:
   branches/Branch_3_2/HibernateExt/tools/etc/log4j.properties
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/hibernate-reverse-engineering-3.0.dtd
   branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/set.hbm.ftl
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Basic.hbm.xml
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Hbm2HbmXmlTest.java
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/RevEngForeignKeyTests.java
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/foreignkeytest.reveng.xml
   branches/Branch_3_2/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java
Log:
HBX-623 provide cascade control in reveng.xml
+ fix bugs in one-to-one/inverse-one-to-one handling with respect to naming.

Modified: branches/Branch_3_2/HibernateExt/tools/etc/log4j.properties
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/etc/log4j.properties	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/etc/log4j.properties	2009-02-20 16:11:57 UTC (rev 16011)
@@ -18,6 +18,7 @@
 log4j.logger.org.hibernate.cfg.SettingsFactory=warn
 log4j.logger.org.hibernate.cfg.reveng=debug
 log4j.logger.org.hibernate.cfg.JDBCMetaDataConfiguration=debug
+log4j.logger.org.hibernate.cfg.JDBCBinder=debug
 
 #log4j.logger.freemarker=debug
 ### log just the SQL

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -22,6 +22,8 @@
 import org.hibernate.FetchMode;
 import org.hibernate.MappingException;
 import org.hibernate.cfg.reveng.DatabaseCollector;
+import org.hibernate.cfg.reveng.ForeignKeyCollectionInfo;
+import org.hibernate.cfg.reveng.AssociationInfo;
 import org.hibernate.cfg.reveng.JDBCReader;
 import org.hibernate.cfg.reveng.JDBCToHibernateTypeHelper;
 import org.hibernate.cfg.reveng.MappingsDatabaseCollector;
@@ -45,6 +47,7 @@
 import org.hibernate.mapping.RootClass;
 import org.hibernate.mapping.SimpleValue;
 import org.hibernate.mapping.Table;
+import org.hibernate.mapping.ToOne;
 import org.hibernate.mapping.Value;
 import org.hibernate.type.ForeignKeyDirection;
 import org.hibernate.type.Type;
@@ -239,9 +242,9 @@
 						foreignKey.getColumns(), 
 						TableIdentifier.create(foreignKey.getReferencedTable() ),
 						foreignKey.getReferencedColumns())) {
-					log.debug("Rev.eng excluded one-to-many for foreignkey " + foreignKey.getName());
+					log.debug("Rev.eng excluded one-to-many or one-to-one for foreignkey " + foreignKey.getName());
 				} else if (revengStrategy.isOneToOne(foreignKey)){
-					Property property = bindOneToOne(rc, foreignKey.getTable(), foreignKey, processed, false);
+					Property property = bindOneToOne(rc, foreignKey.getTable(), foreignKey, processed, false, true);
 					rc.addProperty(property);
 				} else {										
 					Property property = bindOneToMany(rc, foreignKey, processed, mapping);
@@ -253,7 +256,7 @@
 
     
     private Property bindOneToOne(PersistentClass rc, Table targetTable,
-            ForeignKey fk, Set processedColumns, boolean constrained) {
+            ForeignKey fk, Set processedColumns, boolean constrained, boolean inverseProperty) {
 
     	
         OneToOne value = new OneToOne(targetTable, rc);
@@ -261,11 +264,18 @@
                 .tableToClassName(TableIdentifier.create(targetTable)));
 
         boolean isUnique = isUniqueReference(fk);
-        String propertyName =
-                revengStrategy.foreignKeyToEntityName(fk.getName(),
+        String propertyName = null;
+        if(inverseProperty) {
+            propertyName = revengStrategy.foreignKeyToInverseEntityName(fk.getName(),
+                    TableIdentifier.create(fk.getReferencedTable()), fk
+                            .getReferencedColumns(), TableIdentifier
+                            .create(targetTable), fk.getColumns(), isUnique);
+        } else {
+                propertyName = revengStrategy.foreignKeyToEntityName(fk.getName(),
                         TableIdentifier.create(fk.getReferencedTable()), fk
                                 .getReferencedColumns(), TableIdentifier
                                 .create(targetTable), fk.getColumns(), isUnique);
+        }
 
         Iterator columns = fk.getColumnIterator();
         while (columns.hasNext()) {
@@ -282,11 +292,14 @@
 				ForeignKeyDirection.FOREIGN_KEY_FROM_PARENT :
 				ForeignKeyDirection.FOREIGN_KEY_TO_PARENT );
 
-        return makeProperty(TableIdentifier.create(targetTable), propertyName, value,
-                true, true, value.getFetchMode() != FetchMode.JOIN, null, null);
+        
+        return makeEntityProperty(propertyName, true, targetTable, fk, value, inverseProperty);
+        //return makeProperty(TableIdentifier.create(targetTable), propertyName, value,
+        //        true, true, value.getFetchMode() != FetchMode.JOIN, null, null);
     }
 
     /**
+     * @param mutable 
      * @param table
      * @param fk
      * @param columnsToBind 
@@ -294,7 +307,7 @@
      * @param rc
      * @param propName 
      */
-    private Property bindManyToOne(String propertyName, Table table, ForeignKey fk, Set processedColumns) {
+    private Property bindManyToOne(String propertyName, boolean mutable, Table table, ForeignKey fk, Set processedColumns) {
         ManyToOne value = new ManyToOne(table);
         value.setReferencedEntityName( fk.getReferencedEntityName() );
 		Iterator columns = fk.getColumnIterator();
@@ -304,10 +317,84 @@
             value.addColumn(fkcolumn);
             processedColumns.add(fkcolumn);
 		}
-        value.setFetchMode(FetchMode.SELECT);        
-        return makeProperty(TableIdentifier.create( table ), propertyName, value, true, true, value.getFetchMode()!=FetchMode.JOIN, null, null);
+        value.setFetchMode(FetchMode.SELECT);
+        
+        return makeEntityProperty(propertyName, mutable, table, fk, value, false);
      }
 
+    private Property makeCollectionProperty(String propertyName, boolean mutable,
+			Table table, ForeignKey fk, Collection value, boolean inverseProperty) {
+    	AssociationInfo fkei = inverseProperty?revengStrategy.foreignKeyToInverseAssociationInfo(fk):revengStrategy.foreignKeyToAssociationInfo(fk);
+        
+        String fetchMode = null;
+        String cascade = null;
+        boolean update = mutable;
+        boolean insert = mutable;
+
+        if(fkei != null){        	
+        	cascade = fkei.getCascade();
+        	if(fkei.getUpdate()!=null) {
+        		update = fkei.getUpdate().booleanValue();
+        	}
+        	if(fkei.getInsert()!=null) {
+        		insert = fkei.getInsert().booleanValue();
+        	}
+        	
+        	fetchMode = fkei.getFetch();
+        	
+        	
+        }
+
+        if(FetchMode.JOIN.toString().equalsIgnoreCase(fetchMode)) {
+        	value.setFetchMode(FetchMode.JOIN);
+        }
+        else if(FetchMode.SELECT.toString().equalsIgnoreCase(fetchMode)) {
+        	value.setFetchMode(FetchMode.SELECT);
+        }
+        else {
+        	value.setFetchMode(FetchMode.SELECT);
+        }
+
+        return makeProperty(TableIdentifier.create( table ), propertyName, value, insert, update, value.getFetchMode()!=FetchMode.JOIN, cascade, null);
+
+	}
+
+	private Property makeEntityProperty(String propertyName, boolean mutable,
+			Table table, ForeignKey fk, ToOne value, boolean inverseProperty) {
+		AssociationInfo fkei = inverseProperty?revengStrategy.foreignKeyToInverseAssociationInfo(fk):revengStrategy.foreignKeyToAssociationInfo(fk);
+        
+        String fetchMode = null;
+        String cascade = null;
+        boolean update = mutable;
+        boolean insert = mutable;
+
+        if(fkei != null){        	
+        	cascade = fkei.getCascade();
+        	if(fkei.getUpdate()!=null) {
+        		update = fkei.getUpdate().booleanValue();
+        	}
+        	if(fkei.getInsert()!=null) {
+        		insert = fkei.getInsert().booleanValue();
+        	}
+        	
+        	fetchMode = fkei.getFetch();
+        	
+        	
+        }
+
+        if(FetchMode.JOIN.toString().equalsIgnoreCase(fetchMode)) {
+        	value.setFetchMode(FetchMode.JOIN);
+        }
+        else if(FetchMode.SELECT.toString().equalsIgnoreCase(fetchMode)) {
+        	value.setFetchMode(FetchMode.SELECT);
+        }
+        else {
+        	value.setFetchMode(FetchMode.SELECT);
+        }
+
+        return makeProperty(TableIdentifier.create( table ), propertyName, value, insert, update, value.getFetchMode()!=FetchMode.JOIN, cascade, null);
+	}
+
 	/**
 	 * @param rc
 	 * @param processed
@@ -326,7 +413,7 @@
 		
 		boolean manyToMany = revengStrategy.isManyToManyTable( collectionTable );
 		if(manyToMany) {
-			log.debug("Rev.eng said here is a many-to-many");
+			//log.debug("Rev.eng said here is a many-to-many");
 			// TODO: handle "the other side should influence the name"
 		}
         
@@ -395,10 +482,13 @@
 		
 		mappings.addCollection(collection);
 		
-		return makeProperty(TableIdentifier.create( rc.getTable() ), StringHelper.unqualify( collection.getRole() ), collection, true, true, true, "all", null); // TODO: cascade isn't all by default
+		return makeCollectionProperty(StringHelper.unqualify( collection.getRole() ), true, rc.getTable(), foreignKey, collection, true); 
+		//return makeProperty(TableIdentifier.create( rc.getTable() ), StringHelper.unqualify( collection.getRole() ), collection, true, true, true, "none", null); // TODO: cascade isn't all by default
 		
+		
 	}
 
+	
 	private String bindCollection(PersistentClass rc, ForeignKey fromForeignKey, ForeignKey toForeignKey, Collection collection) {
 		ForeignKey targetKey = fromForeignKey;
 		String collectionRole = null;
@@ -458,8 +548,8 @@
 		collection.setInverse(collectionInverse); // TODO: allow overriding this
 		collection.setLazy(collectionLazy); 
 		collection.setFetchMode(FetchMode.SELECT);
+					
 		
-		
 		return tableToClassName;
 	}
 
@@ -583,9 +673,9 @@
         			TableIdentifier.create(foreignKey.getReferencedTable() ),
         			foreignKey.getReferencedColumns())) {
             	// TODO: if many-to-one is excluded should the column be marked as processed so it won't show up at all ?
-            	log.debug("Rev.eng excluded many-to-one for foreignkey " + foreignKey.getName());
+            	log.debug("Rev.eng excluded *-to-one for foreignkey " + foreignKey.getName());
             } else if (revengStrategy.isOneToOne(foreignKey)){
-				Property property = bindOneToOne(rc, foreignKey.getReferencedTable(), foreignKey, processedColumns, true);
+				Property property = bindOneToOne(rc, foreignKey.getReferencedTable(), foreignKey, processedColumns, true, false);
 				rc.addProperty(property);
 			} else {
             	boolean isUnique = isUniqueReference(foreignKey);
@@ -599,13 +689,12 @@
             	);
             	
             	Property property = bindManyToOne(
-            			makeUnique(rc, propertyName), 
+            			makeUnique(rc, propertyName),
+            			mutable,
             			table, 
             			foreignKey,
             			processedColumns
             	);
-            	property.setUpdateable(mutable);
-            	property.setInsertable(mutable);
             	
             	rc.addProperty(property);
             }
@@ -816,7 +905,7 @@
 						TableIdentifier.create(foreignKey.getTable() ),
 						foreignKey.getColumns(), TableIdentifier.create(foreignKey.getReferencedTable() ), foreignKey.getReferencedColumns(), true
 					);
-                property = bindManyToOne( makeUnique(pkc, propertyName), table, foreignKey, processedColumns);
+                property = bindManyToOne( makeUnique(pkc, propertyName), true, table, foreignKey, processedColumns);
                 processedColumns.addAll(fkfc.columns);
             }
 			else {

Added: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/AssociationInfo.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/AssociationInfo.java	                        (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/AssociationInfo.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -0,0 +1,12 @@
+package org.hibernate.cfg.reveng;
+
+public interface AssociationInfo {
+
+		String getCascade();
+		
+		String getFetch();
+		
+		Boolean getUpdate();
+		Boolean getInsert();					
+
+}

Added: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaulAssociationInfo.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaulAssociationInfo.java	                        (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaulAssociationInfo.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -0,0 +1,35 @@
+package org.hibernate.cfg.reveng;
+
+public class DefaulAssociationInfo implements AssociationInfo {
+
+	String cascade;
+	String fetch;
+	Boolean insert;
+	Boolean update;
+	
+	public String getCascade() {
+		return cascade;
+	}
+	public void setCascade(String cascade) {
+		this.cascade = cascade;
+	}
+	public String getFetch() {
+		return fetch;
+	}
+	public void setFetch(String fetch) {
+		this.fetch = fetch;
+	}
+	public Boolean getInsert() {
+		return insert;
+	}
+	public void setInsert(Boolean insert) {
+		this.insert = insert;
+	}
+	public Boolean getUpdate() {
+		return update;
+	}
+	public void setUpdate(Boolean update) {
+		this.update = update;
+	}
+
+}

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -79,6 +79,14 @@
 		return ReverseEngineeringStrategyUtil.simplePluralize(singular);
 	}
 
+	public String foreignKeyToInverseEntityName(String keyname,
+			TableIdentifier fromTable, List fromColumnNames,
+			TableIdentifier referencedTable, List referencedColumnNames,
+			boolean uniqueReference) {		
+		return foreignKeyToEntityName(keyname, fromTable, fromColumnNames, referencedTable, referencedColumnNames, uniqueReference);
+	}
+	
+	
     public String foreignKeyToEntityName(String keyname, TableIdentifier fromTable, List fromColumnNames, TableIdentifier referencedTable, List referencedColumnNames, boolean uniqueReference) {
         String propertyName = Introspector.decapitalize( StringHelper.unqualify( getRoot().tableToClassName(referencedTable) ) );
         
@@ -339,5 +347,15 @@
 	public Map columnToMetaAttributes(TableIdentifier identifier, String column) {
 		return null;
 	}
+
+	public AssociationInfo foreignKeyToAssociationInfo(ForeignKey foreignKey) {
+		return null;
+	}
+
+	public AssociationInfo foreignKeyToInverseAssociationInfo(ForeignKey foreignKey) {
+		return null;
+	}
+
 	
+	
 }

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -137,6 +137,21 @@
 
 	public Map columnToMetaAttributes(TableIdentifier identifier, String column) {
 		return delegate==null?null:delegate.columnToMetaAttributes( identifier, column );
+	}
+
+	public AssociationInfo foreignKeyToAssociationInfo(ForeignKey foreignKey) {
+		return delegate==null?null:delegate.foreignKeyToAssociationInfo(foreignKey);
+	}
+	
+	public AssociationInfo foreignKeyToInverseAssociationInfo(ForeignKey foreignKey) {
+		return delegate==null?null:delegate.foreignKeyToInverseAssociationInfo(foreignKey);
+	}
+	
+	public String foreignKeyToInverseEntityName(String keyname,
+			TableIdentifier fromTable, List fromColumnNames,
+			TableIdentifier referencedTable, List referencedColumnNames,
+			boolean uniqueReference) {
+		return delegate==null?null:delegate.foreignKeyToInverseEntityName(keyname, fromTable, fromColumnNames, referencedTable, referencedColumnNames, uniqueReference);
 	}	
 	
 }

Added: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ForeignKeyCollectionInfo.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ForeignKeyCollectionInfo.java	                        (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ForeignKeyCollectionInfo.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -0,0 +1,16 @@
+package org.hibernate.cfg.reveng;
+
+public interface ForeignKeyCollectionInfo {
+
+	String getCascade();
+	
+	String getFetch();
+	
+	Boolean getUpdate();
+	Boolean getInsert();
+	
+	String getLazy();
+	
+}
+
+

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -47,6 +47,37 @@
 		
 	}
 
+	static boolean bindManyToOneAndCollection(Element element, String constraintName, OverrideRepository repository) {
+		
+		String manyToOneProperty = null;
+		Boolean excludeManyToOne = null;
+		
+		DefaulAssociationInfo associationInfo = null;
+		DefaulAssociationInfo inverseAssociationInfo = null;
+		Element manyToOne = element.element("many-to-one");
+		if(manyToOne!=null) {
+			manyToOneProperty = manyToOne.attributeValue("property");
+			excludeManyToOne = BooleanValue(manyToOne.attributeValue("exclude"));										
+			associationInfo = extractAssociationInfo(manyToOne);										
+		}
+		
+		String collectionProperty = null;
+		Boolean excludeCollection = null;
+		Element collection = element.element("set");
+		if(collection!=null) {
+			collectionProperty = collection.attributeValue("property");
+			excludeCollection = BooleanValue(collection.attributeValue("exclude"));
+			inverseAssociationInfo = extractAssociationInfo(collection);
+		}
+		
+		if ( (manyToOne!=null) || (collection!=null) ) {
+			repository.addForeignKeyInfo(constraintName, manyToOneProperty, excludeManyToOne, collectionProperty, excludeCollection, associationInfo, inverseAssociationInfo);
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
 	private static void bindSchemaSelection(List selection, OverrideRepository repository) {
 		Iterator iterator = selection.iterator();
 		
@@ -162,66 +193,100 @@
 			if(StringHelper.isNotEmpty(constraintName)) {
 				if (!validateFkAssociations(element))
 					throw new IllegalArgumentException("you can't mix <many-to-one/> or <set/> with <(inverse-)one-to-one/> ");
-				String manyToOneProperty = null;
-				Boolean excludeManyToOne = null;
 				
-				Element manyToOne = element.element("many-to-one");
-				if(manyToOne!=null) {
-					manyToOneProperty = manyToOne.attributeValue("property");
-					excludeManyToOne = BooleanValue(manyToOne.attributeValue("exclude"));					
-				}
-				
-				String collectionProperty = null;
-				Boolean excludeCollection = null;
-				Element collection = element.element("set");
-				if(collection!=null) {
-					collectionProperty = collection.attributeValue("property");
-					excludeCollection = BooleanValue(collection.attributeValue("exclude"));
-				}
-				
-				if ( (manyToOne!=null) || (collection!=null) ) {
-					repository.addForeignKeyInfo(constraintName, manyToOneProperty, excludeManyToOne, collectionProperty, excludeCollection);
-					continue;
-				}
-				
-				String oneToOneProperty = null;
-				Boolean excludeOneToOne = null;
-				Element oneToOne = element.element("one-to-one");
-				if(oneToOne!=null) {
-					oneToOneProperty = oneToOne.attributeValue("property");
-					excludeOneToOne = BooleanValue(oneToOne.attributeValue("exclude"));					
-				}
-				
-				String inverseOneToOneProperty = null;
-				Boolean excludeInverseOneToOne = null;
-				Element inverseOneToOne = element.element("inverse-one-to-one");
-				if(inverseOneToOne!=null) {
-					inverseOneToOneProperty = oneToOne.attributeValue("property");
-					excludeInverseOneToOne = BooleanValue(inverseOneToOne.attributeValue("exclude"));					
-				}	
-				
-				// having oneToOne = null and inverseOneToOne != null doesn't make sense
-				// we cannot have the inserse side without the owning side in this case
-				
-				if ( (oneToOne!=null) ) {
-					repository.addForeignKeyInfo(constraintName, oneToOneProperty, excludeOneToOne, inverseOneToOneProperty, excludeInverseOneToOne);
-				}
+				if(!bindManyToOneAndCollection(element, constraintName, repository)) {
+					bindOneToOne(element, constraintName, repository);
+				}								
 			}
 		}
 		
 	}
 
+	private static void bindOneToOne(Element element, String constraintName,
+			OverrideRepository repository) {
+		String oneToOneProperty = null;
+		Boolean excludeOneToOne = null;
+		Element oneToOne = element.element("one-to-one");
+		DefaulAssociationInfo associationInfo = null;
+		if(oneToOne!=null) {
+			oneToOneProperty = oneToOne.attributeValue("property");
+			excludeOneToOne = BooleanValue(oneToOne.attributeValue("exclude"));
+			associationInfo = extractAssociationInfo(oneToOne);										
+		}
+		
+		String inverseOneToOneProperty = null;
+		Boolean excludeInverseOneToOne = null;
+		Element inverseOneToOne = element.element("inverse-one-to-one");
+		DefaulAssociationInfo inverseAssociationInfo = null;
+		if(inverseOneToOne!=null) {
+			inverseOneToOneProperty = inverseOneToOne.attributeValue("property");
+			excludeInverseOneToOne = BooleanValue(inverseOneToOne.attributeValue("exclude"));
+			inverseAssociationInfo = extractAssociationInfo(inverseOneToOne);
+		}	
+		
+		// having oneToOne = null and inverseOneToOne != null doesn't make sense
+		// we cannot have the inverse side without the owning side in this case
+		
+		if ( (oneToOne!=null) ) {
+			repository.addForeignKeyInfo(constraintName, oneToOneProperty, excludeOneToOne, inverseOneToOneProperty, excludeInverseOneToOne, associationInfo, inverseAssociationInfo);
+		}
+	}
+
+	private static DefaulAssociationInfo extractAssociationInfo(Element manyToOne) {
+		String attributeValue = manyToOne.attributeValue("cascade");
+		DefaulAssociationInfo associationInfo = null;
+		if(attributeValue!=null) {
+			associationInfo = ensureInit(associationInfo);
+			associationInfo.setCascade(attributeValue);
+		}
+		
+		
+		attributeValue = manyToOne.attributeValue("fetch");
+		if(attributeValue!=null) {
+			associationInfo = ensureInit(associationInfo);
+			associationInfo.setFetch(attributeValue);
+		}					
+		
+		
+		attributeValue = manyToOne.attributeValue("insert");
+		if(attributeValue!=null) {
+			associationInfo = ensureInit(associationInfo);
+			associationInfo.setInsert(new Boolean(attributeValue));
+		}					
+		
+		
+		attributeValue = manyToOne.attributeValue("update");
+		if(attributeValue!=null) {
+			associationInfo = ensureInit(associationInfo);
+			associationInfo.setUpdate(new Boolean(attributeValue));
+		}
+		return associationInfo;
+	}
+
+	private static DefaulAssociationInfo ensureInit(
+			DefaulAssociationInfo associationInfo) {
+		return associationInfo==null?new DefaulAssociationInfo():associationInfo;
+	}
+
 	private static boolean validateFkAssociations(Element element){
 		Element manyToOne = element.element("many-to-one");
 		Element oneToOne = element.element("one-to-one");
 		Element set = element.element("set");
 		Element inverseOneToOne = element.element("inverse-one-to-one");
 		
-		if (manyToOne != null && ( oneToOne != null || inverseOneToOne != null)
-				|| oneToOne != null && set != null
-				|| inverseOneToOne != null && set != null)
+		if((manyToOne != null) && ( (oneToOne != null) || (inverseOneToOne != null))) {
 			return false;
+			
+		}
+				
+		if((oneToOne != null) && (set != null)) {
+			return false;
+		}
 		
+		if ((inverseOneToOne != null) && (set != null)) {
+			return false;
+		}
+		
 		return true;
 	}
 	
@@ -384,6 +449,7 @@
 	String getMatchString(String input) {
 		return input.toUpperCase();
 	}
+
 	
 
 }

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -69,6 +69,9 @@
 	final private Map foreignKeyInverseExclude;
 
 	final private Map foreignKeyToOneExclude;
+	
+	final private Map foreignKeyToEntityInfo;
+	final private Map foreignKeyToInverseEntityInfo;
 
 	final private Map tableMetaAttributes; // TI -> MultiMap of SimpleMetaAttributes
 
@@ -102,6 +105,8 @@
 		foreignKeyToOneExclude = new HashMap();
 		tableMetaAttributes = new HashMap();
 		columnMetaAttributes = new HashMap();
+		foreignKeyToEntityInfo = new HashMap();
+		foreignKeyToInverseEntityInfo = new HashMap();
 	}
 	
 	public OverrideRepository addFile(File xmlFile) {
@@ -426,6 +431,20 @@
 				}
 			}
 			
+			@Override
+			public String foreignKeyToInverseEntityName(String keyname,
+					TableIdentifier fromTable, List fromColumnNames,
+					TableIdentifier referencedTable,
+					List referencedColumnNames, boolean uniqueReference) {
+				
+				String property = (String) foreignKeyToInverseName.get(keyname);
+				if(property==null) {
+					return super.foreignKeyToInverseEntityName(keyname, fromTable, fromColumnNames, referencedTable, referencedColumnNames, uniqueReference);
+				} else {
+					return property;
+				}
+			}
+			
 			public String foreignKeyToCollectionName(String keyname, TableIdentifier fromTable, List fromColumns, TableIdentifier referencedTable, List referencedColumns, boolean uniqueReference) {
 				String property = (String) foreignKeyToInverseName.get(keyname);
 				if(property==null) {
@@ -454,6 +473,25 @@
 							referencedTable, referencedColumns );
 				}
 			}
+			
+			
+			public AssociationInfo foreignKeyToInverseAssociationInfo(ForeignKey foreignKey) {
+				AssociationInfo fkei = (AssociationInfo) foreignKeyToInverseEntityInfo.get(foreignKey.getName());
+				if(fkei!=null) {
+					return fkei;
+				} else {
+					return super.foreignKeyToInverseAssociationInfo(foreignKey);
+				}
+			}
+			
+			public AssociationInfo foreignKeyToAssociationInfo(ForeignKey foreignKey) {
+				AssociationInfo fkei = (AssociationInfo) foreignKeyToEntityInfo.get(foreignKey.getName());
+				if(fkei!=null) {
+					return fkei;
+				} else {
+					return super.foreignKeyToAssociationInfo(foreignKey);
+				}
+			}
 		}; 
 	}
 
@@ -609,7 +647,7 @@
 	 * the owning side can generate a toOne (ManyToOne or OneToOne), we call this side foreignKeyToOne
 	 * the inverse side can generate a OneToMany OR a OneToOne (in case we have a pure bidirectional OneToOne, we call this side foreignKeyToInverse
 	 */
-	public void addForeignKeyInfo(String constraintName, String toOneProperty, Boolean excludeToOne, String inverseProperty, Boolean excludeInverse) {
+	public void addForeignKeyInfo(String constraintName, String toOneProperty, Boolean excludeToOne, String inverseProperty, Boolean excludeInverse, AssociationInfo associationInfo, AssociationInfo inverseAssociationInfo) {
 		if(StringHelper.isNotEmpty(toOneProperty)) {
 			foreignKeyToOneName.put(constraintName, toOneProperty);
 		}		
@@ -622,6 +660,13 @@
 		if(excludeToOne!=null) {
 			foreignKeyToOneExclude.put(constraintName, excludeToOne);
 		}
+		if(associationInfo!=null) {
+			foreignKeyToEntityInfo.put(constraintName, associationInfo);
+		}
+		if(inverseAssociationInfo!=null) {
+			foreignKeyToInverseEntityInfo.put(constraintName, inverseAssociationInfo);
+		}
+		
 	}
 
 	public void addMetaAttributeInfo(Table table, Map map) {

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -166,6 +166,16 @@
      */
     public String foreignKeyToEntityName(String keyname, TableIdentifier fromTable, List fromColumnNames, TableIdentifier referencedTable, List referencedColumnNames, boolean uniqueReference);
 
+    /**
+     * Used to rename the inverse one-to-one properties.
+     * 
+     * @param fromColumns list of Column instances on the fromTable. Only col.getName() should be assumed to be correct 
+     * @param referencedColumns list of Column instances on the referenced Table. Only col.getName() should be assumed to be correct
+     * @param uniqueReference true if there is no other references to the same table
+     * @return null if use defaults or non-empty String with a specific name 
+     */
+    public String foreignKeyToInverseEntityName(String keyname, TableIdentifier fromTable, List fromColumnNames, TableIdentifier referencedTable, List referencedColumnNames, boolean uniqueReference);
+    
 	/**
 	 * @param table
 	 * @return true if this table is considered to be a many-to-many table.
@@ -184,7 +194,7 @@
 
 	public boolean isOneToOne(ForeignKey foreignKey);
 
-	
-	
-	
+	public AssociationInfo foreignKeyToAssociationInfo(ForeignKey foreignKey);
+	public AssociationInfo foreignKeyToInverseAssociationInfo(ForeignKey foreignKey);
+		
 }

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/hibernate-reverse-engineering-3.0.dtd
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/hibernate-reverse-engineering-3.0.dtd	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/hibernate-reverse-engineering-3.0.dtd	2009-02-20 16:11:57 UTC (rev 16011)
@@ -60,11 +60,6 @@
 <!ATTLIST column type           CDATA        #IMPLIED >
 <!ATTLIST column property       CDATA        #IMPLIED >
 <!ATTLIST column exclude        (true|false) "false" >
-<!-- too much flexibility to maintain; just use a foreign-key definition
-<!ATTLIST column foreign-catalog CDATA  #IMPLIED >
-<!ATTLIST column foreign-schema CDATA   #IMPLIED >
-<!ATTLIST column foreign-table  CDATA   #IMPLIED >
-<!ATTLIST column foreign-column CDATA   #IMPLIED > -->
 
 <!ELEMENT key-column EMPTY >
 <!ATTLIST key-column name           CDATA        #REQUIRED >
@@ -97,20 +92,31 @@
 <!ELEMENT many-to-one EMPTY >
 <!ATTLIST many-to-one property CDATA #IMPLIED>
 <!ATTLIST many-to-one exclude (true|false) #IMPLIED>
+<!ATTLIST many-to-one cascade CDATA #IMPLIED>
+<!ATTLIST many-to-one fetch (join|select) #IMPLIED>
+<!ATTLIST many-to-one update (true|false) "true">
+<!ATTLIST many-to-one insert (true|false) "true">
 
 <!-- pure one to one (shared pk) are managed) -->
 <!ELEMENT one-to-one EMPTY >
 <!ATTLIST one-to-one property CDATA #IMPLIED>
 <!ATTLIST one-to-one exclude (true|false) #IMPLIED>
+<!ATTLIST one-to-one cascade CDATA #IMPLIED>
+<!ATTLIST one-to-one fetch (join|select) #IMPLIED>
 
+
 <!ELEMENT inverse-one-to-one EMPTY >
 <!ATTLIST inverse-one-to-one property CDATA #IMPLIED>
 <!ATTLIST inverse-one-to-one exclude (true|false) #IMPLIED>
+<!ATTLIST inverse-one-to-one cascade CDATA #IMPLIED>
+<!ATTLIST inverse-one-to-one fetch (join|select) #IMPLIED>
 
 <!ELEMENT set EMPTY >
 <!ATTLIST set property CDATA #IMPLIED>
 <!ATTLIST set exclude (true|false) #IMPLIED>
+<!ATTLIST set cascade CDATA #IMPLIED>
 
+
 <!-- <!ELEMENT bag EMPTY >
 <!ATTLIST bag property CDATA #REQUIRED> -->
 

Modified: branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/set.hbm.ftl
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/set.hbm.ftl	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/set.hbm.ftl	2009-02-20 16:11:57 UTC (rev 16011)
@@ -1,6 +1,9 @@
 	<set
 		name="${property.name}"
 		inverse="${property.value.inverse?string}"
+<#if property.cascade != "none">
+        cascade="${property.cascade}"
+</#if>
 		<#if !c2h.isOneToMany(property)>
 		table="${property.value.collectionTable.name}"
 		</#if>

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Basic.hbm.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Basic.hbm.xml	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Basic.hbm.xml	2009-02-20 16:11:57 UTC (rev 16011)
@@ -36,7 +36,7 @@
     	
     	<property name="numberAvailable" type="int" column="`number-Available`"/>
     	
-    	<set name="aSet">
+    	<set name="aSet" cascade="delete, update">
     	 <meta attribute="set-desc">anotherone</meta>    	 
     	 <key/>
     	 <one-to-many class="Basic"/>

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Hbm2HbmXmlTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Hbm2HbmXmlTest.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Hbm2HbmXmlTest.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -155,7 +155,38 @@
 		
 		
 	}
+
+	public void testCollectionAttributes() throws DocumentException {
+		File outputXml = new File(getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/hbm2hbmxml/Basic.hbm.xml");
+		assertFileAndExists(outputXml);
+
+		SAXReader xmlReader =  this.getSAXReader();
+		
+		Document document = xmlReader.read(outputXml);		
 	
+		XPath xpath = DocumentHelper.createXPath("//hibernate-mapping/class/set");
+		List list = xpath.selectNodes(document);
+		assertEquals("Expected to get one set element", 1, list.size());
+		Element node = (Element) list.get(0);
+		assertEquals("delete, update", node.attributeValue("cascade"));
+		
+		
+		
+//		xpath = DocumentHelper.createXPath("//hibernate-mapping/class/property/meta");
+//		list = xpath.selectNodes(document);
+//		assertEquals("Expected to get one meta element", 1, list.size());
+//		node = (Node) list.get(0);
+//		assertEquals(node.getText(),"description");
+//		
+//		xpath = DocumentHelper.createXPath("//hibernate-mapping/class/set/meta");
+//		list = xpath.selectNodes(document);
+//		assertEquals("Expected to get one meta element", 1, list.size());
+//		node = (Node) list.get(0);
+//		assertEquals(node.getText(),"anotherone");
+		
+		
+	}
+
 	
 	public void testComments() throws DocumentException {
 		File outputXml = new File(getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/hbm2hbmxml/ClassFullAttribute.hbm.xml");

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/RevEngForeignKeyTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/RevEngForeignKeyTests.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/RevEngForeignKeyTests.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -29,7 +29,7 @@
  */
 public class RevEngForeignKeyTests extends JDBCMetaDataBinderTestCase {
 	
-	private static final String OVERRIDETEST_FOREIGNKEY_XML = "org/hibernate/tool/test/jdbc2cfg/foreignkeytest.reveng.xml";
+	private static final String FOREIGN_KEY_TEST_XML = "org/hibernate/tool/test/jdbc2cfg/foreignkeytest.reveng.xml";
 	private static final String BAD_FOREIGNKEY_XML = "org/hibernate/tool/test/jdbc2cfg/badforeignkeytest.reveng.xml";;
 	
 	public static Test suite() {
@@ -69,7 +69,7 @@
 		
 		OverrideRepository or = buildOverrideRepository();
 		
-		or.addResource(OVERRIDETEST_FOREIGNKEY_XML);
+		or.addResource(FOREIGN_KEY_TEST_XML);
 		ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(new DefaultReverseEngineeringStrategy());
 	
 		JDBCMetaDataConfiguration localCfg = new JDBCMetaDataConfiguration();
@@ -91,8 +91,11 @@
 		assertNotNull(employee.getProperty("worksOns"));
 		assertNotNull("property should be renamed by reveng.xml", employee.getProperty("manager"));		
 		assertPropertyNotExists( employee, "employees", "set should be excluded by reveng.xml" );
-		assertNotNull("should be renamed by reveng.xml", employee.getProperty("managedProjects"));
+		Property setProperty = employee.getProperty("managedProjects");
+		assertNotNull("should be renamed by reveng.xml", setProperty);
 		
+		assertEquals("delete, update", setProperty.getCascade());
+		
 		assertEquals(4, employee.getPropertyClosureSpan());
 		assertEquals("id", employee.getIdentifierProperty().getName());
 		
@@ -119,7 +122,7 @@
 		
 		OverrideRepository or = buildOverrideRepository();
 		
-		or.addResource(OVERRIDETEST_FOREIGNKEY_XML);
+		or.addResource(FOREIGN_KEY_TEST_XML);
 		ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(new DefaultReverseEngineeringStrategy());
 
 		JDBCMetaDataConfiguration localCfg = new JDBCMetaDataConfiguration();
@@ -134,10 +137,19 @@
 		assertPropertyNotExists(addressPerson, "person", "should be removed by reveng.xml");
 		assertPropertyNotExists(person, "addressPerson", "should be removed by reveng.xml");
 		
-		Property property = addressMultiPerson.getProperty("multiPerson");
+		Property property = addressMultiPerson.getProperty("renamedOne");
 		assertNotNull(property);
 		
-		assertPropertyNotExists(multiPerson, "addressMultiPerson", "should be removed by reveng.xml");
+		assertEquals("Casade should be set to delete by reveng.xml", "delete", property.getCascade());
+				
+		
+		assertPropertyNotExists(multiPerson, "addressMultiPerson", "should not be there");
+		Property o2o = multiPerson.getProperty("renamedInversedOne");
+		assertNotNull(o2o);
+		
+		assertEquals("update", o2o.getCascade());
+		assertEquals("JOIN", o2o.getValue().getFetchMode().toString());
+
 	}
 	
 	public void testDuplicateForeignKeyDefinition() {
@@ -159,6 +171,43 @@
 		
 	}
 
+	public void testManyToOneAttributeDefaults() {	
+
+		PersistentClass classMapping = cfg.getClassMapping("Employee");
+		Property property = classMapping.getProperty("employee");	
+
+		assertEquals("none", property.getCascade());
+		assertEquals(true, property.isUpdateable());
+		assertEquals(true, property.isInsertable());
+		assertEquals("SELECT", property.getValue().getFetchMode().toString());
+		
+	}
+	
+	public void testManyToOneAttributeOverrides() {
+
+		OverrideRepository or = buildOverrideRepository();
+		
+		or.addResource(FOREIGN_KEY_TEST_XML);
+		ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(new DefaultReverseEngineeringStrategy());
+	
+		JDBCMetaDataConfiguration localCfg = new JDBCMetaDataConfiguration();
+		localCfg.setReverseEngineeringStrategy(repository);
+		localCfg.readFromJDBC();			
+			
+		PersistentClass classMapping = localCfg.getClassMapping("Employee");
+		Property property = classMapping.getProperty("manager");	
+
+		assertEquals("all", property.getCascade());
+		assertEquals(false, property.isUpdateable());
+		assertEquals(false, property.isInsertable());
+		assertEquals("JOIN", property.getValue().getFetchMode().toString());
+
+		
+	}	
+
+	
+	
+
 	private void assertPropertyNotExists(PersistentClass employee, String name, String msg) {
 		try {
 			employee.getProperty(name);

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/foreignkeytest.reveng.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/foreignkeytest.reveng.xml	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/foreignkeytest.reveng.xml	2009-02-20 16:11:57 UTC (rev 16011)
@@ -7,7 +7,7 @@
 
     <table name="EMPLOYEE">
 		<foreign-key constraint-name="EMPLOYEE_MANAGER"> 
-			<many-to-one property="manager"/>
+			<many-to-one property="manager" cascade="all" update="false" insert="false" fetch="join"/>
 			<set exclude="true"/>
 		</foreign-key>
 	</table> 
@@ -15,7 +15,7 @@
 	<table name="PROJECT">
 	    <foreign-key constraint-name="PROJECT_MANAGER">
 	    	<many-to-one exclude="true"/>
-	    	<set property="managedProjects"/>
+	    	<set property="managedProjects" cascade="delete, update"/>
 	    </foreign-key>
 	</table>	
 	
@@ -28,8 +28,8 @@
 	
 	<table name="ADDRESS_MULTI_PERSON">
 	    <foreign-key constraint-name="ADDRESS_MULTI_PERSON">
-	    	<one-to-one exclude="false"/>
-	    	<inverse-one-to-one exclude="true"/>
+	    	<one-to-one property="renamedOne" exclude="false" cascade="delete"/>
+	    	<inverse-one-to-one property="renamedInversedOne" exclude="false" cascade="update" fetch="join"/>
 	    </foreign-key>
 	</table>
 	

Modified: branches/Branch_3_2/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java	2009-02-20 14:53:16 UTC (rev 16010)
+++ branches/Branch_3_2/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java	2009-02-20 16:11:57 UTC (rev 16011)
@@ -2,6 +2,7 @@
 import java.util.Map;
 import java.util.Properties;
 
+import org.hibernate.cfg.reveng.AssociationInfo;
 import org.hibernate.cfg.reveng.ReverseEngineeringRuntimeInfo;
 import org.hibernate.cfg.reveng.ReverseEngineeringSettings;
 import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
@@ -167,4 +168,25 @@
 		// TODO Auto-generated method stub
 		return false;
 	}
+
+	@Override
+	public AssociationInfo foreignKeyToAssociationInfo(ForeignKey foreignKey) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String foreignKeyToInverseEntityName(String keyname,
+			TableIdentifier fromTable, List fromColumnNames,
+			TableIdentifier referencedTable, List referencedColumnNames,
+			boolean uniqueReference) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public AssociationInfo foreignKeyToInverseAssociationInfo(ForeignKey foreignKey) {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }




More information about the hibernate-commits mailing list