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

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue May 19 07:50:10 EDT 2009


Author: max.andersen at jboss.com
Date: 2009-05-19 07:50:10 -0400 (Tue, 19 May 2009)
New Revision: 16596

Added:
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/AbstractTest.java
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Order.hbm.xml
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/TypeParamsTest.java
Modified:
   branches/Branch_3_2/HibernateExt/tools/build.xml
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java
   branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java
   branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl
   branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/property.hbm.ftl
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Aliens.hbm.xml
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Car.hbm.xml
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/CarPart.java
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java
   branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/InheritanceTest.java
Log:
JBIDE-3914 ( Cfg2HbmTool.needsTable() method returns true for Subclass object), 
JBIDE-4050 (Abstract attribute is never exported in persistent class.), 
JBIDE-4052 (getFetchMode calles NullPointerException when was not set)
JBIDE-4198 ( Parametrized type should be exported with it's parameters )


Modified: branches/Branch_3_2/HibernateExt/tools/build.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/build.xml	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/build.xml	2009-05-19 11:50:10 UTC (rev 16596)
@@ -7,7 +7,7 @@
     <!-- Name of project and version, used to create filenames -->
     <property name="Name" value="Hibernate Tools"/>
     <property name="name" value="hibernate-tools"/>
-    <property name="version" value="3.2.4.GA"/>
+    <property name="version" value="3.2.5.GA"/>
 
 	<property name="javadoc.packagenames" value="org.hibernate.tool"/>	
 

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/Version.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -5,7 +5,7 @@
 
 final public class Version {
 
-	public static final String VERSION = "3.2.4.GA";
+	public static final String VERSION = "3.2.5.Beta";
 	
 	private static final Version instance = new Version();
 	

Modified: branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -17,12 +17,10 @@
 import org.hibernate.engine.query.sql.NativeSQLQueryReturn;
 import org.hibernate.engine.query.sql.NativeSQLQueryRootReturn;
 import org.hibernate.mapping.Any;
-import org.hibernate.mapping.Backref;
 import org.hibernate.mapping.Collection;
 import org.hibernate.mapping.Column;
 import org.hibernate.mapping.Component;
 import org.hibernate.mapping.Formula;
-import org.hibernate.mapping.IndexBackref;
 import org.hibernate.mapping.JoinedSubclass;
 import org.hibernate.mapping.ManyToOne;
 import org.hibernate.mapping.OneToMany;
@@ -312,7 +310,7 @@
 	}
 	public String getFetchMode(Property property) {
 		FetchMode fetchMode = property.getValue().getFetchMode();
-		return fetchMode.toString().toLowerCase();
+		return (fetchMode== null) ? null : fetchMode.toString().toLowerCase();
 	}
 
 
@@ -382,6 +380,11 @@
 		return !(cfg.getImports().isEmpty());
 	}
 
+ 	public boolean needsDiscriminatorElement(PersistentClass clazz) {
+ 			return clazz instanceof RootClass
+ 			  && (clazz.getDiscriminator() != null);
+ 		}
+ 		  		
 	public boolean needsDiscriminator(PersistentClass clazz) {
 
 		return clazz instanceof Subclass

Modified: branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/persistentclass.hbm.ftl	2009-05-19 11:50:10 UTC (rev 16596)
@@ -38,7 +38,7 @@
 <#elseif !clazz.isLazy()>
     lazy="false"
 </#if>
-<#if clazz.abstract?exists && clazz.abstract>
+<#if clazz.isAbstract()?exists && clazz.isAbstract()>
     abstract="true"
 </#if>
 <#if c2h.isClassLevelOptimisticLockMode(clazz)>
@@ -102,6 +102,15 @@
  </key>
 </#if>
 
+<#if c2h.needsDiscriminatorElement(clazz)>
+    <discriminator type="${clazz.discriminator.typeName}">
+    	<#foreach column in clazz.discriminator.columnIterator>
+        	<#include "column.hbm.ftl">
+  	</#foreach>
+    </discriminator>
+</#if>
+
+
 <#-- version has to be done explicitly since Annotation's does not list version first -->
 <#if pojo.hasVersionProperty()>
 <#assign property=clazz.getVersion()/>

Modified: branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/property.hbm.ftl
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/property.hbm.ftl	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/templates/hbm/property.hbm.ftl	2009-05-19 11:50:10 UTC (rev 16596)
@@ -1,6 +1,8 @@
     <property
         name="${property.name}"
-        type="${property.value.typeName}"
+<#if !property.value.typeParameters?exists>
+	    type="${property.value.typeName}"
+</#if>        
 <#if !property.updateable>
         update="false"
 </#if>
@@ -28,5 +30,12 @@
   <#foreach column in property.columnIterator>
         <#include "column.hbm.ftl">
   </#foreach>	
+  <#if property.value.typeParameters?exists>
+  <type name="${property.value.typeName}">
+  		<#foreach entry in property.value.typeParameters.entrySet()>
+              		<param name="${entry.key}">${entry.value}</param>
+        </#foreach>  	  
+  </type>
+  </#if>
   </property>
 

Added: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/AbstractTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/AbstractTest.java	                        (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/AbstractTest.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -0,0 +1,105 @@
+/*******************************************************************************
+  * Copyright (c) 2007-2009 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is made available under the terms of the
+  * Eclipse Public License v1.0 which accompanies this distribution,
+  * and is available at http://www.eclipse.org/legal/epl-v10.html
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.hibernate.tool.hbm2x.hbm2hbmxml;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.mapping.Backref;
+import org.hibernate.mapping.PersistentClass;
+import org.hibernate.tool.NonReflectiveTestCase;
+import org.hibernate.tool.hbm2x.Exporter;
+import org.hibernate.tool.hbm2x.HibernateMappingExporter;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class AbstractTest extends NonReflectiveTestCase {
+
+	private String mappingFile = "Car.hbm.xml";
+
+	private Exporter hbmexporter;
+	
+	/**
+	 * @param name
+	 */
+	public AbstractTest(String name) {
+		super(name, "cfg2hbmoutput");
+	}
+	
+	protected String[] getMappings() {
+		return new String[] {
+				mappingFile
+		};
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		hbmexporter = new HibernateMappingExporter(getCfg(), getOutputDir() );
+		hbmexporter.start();
+	}
+
+	public void testAllFilesExistence() {
+		assertFileAndExists(new File(getOutputDir().getAbsolutePath(),  getBaseForMappings() + "Car.hbm.xml") );
+		assertFileAndExists(new File(getOutputDir().getAbsolutePath(),  getBaseForMappings() + "CarPart.hbm.xml") );
+	}
+	
+	public void testAbstractPresent() {
+		File outputXml = new File(getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/hbm2hbmxml/CarPart.hbm.xml");
+		assertFileAndExists(outputXml);
+
+		SAXReader xmlReader =  this.getSAXReader();
+
+		Document document;
+		try {
+				document = xmlReader.read(outputXml);
+				XPath xpath = DocumentHelper.createXPath("//hibernate-mapping/class");
+				List list = xpath.selectNodes(document);
+				assertEquals("Expected to get one class element", 1, list.size());
+				Element node = (Element) list.get(0);
+				assertNotNull("Abstract attrinute was not exported.", node.attribute( "abstract" ));
+				assertEquals(node.attribute( "abstract" ).getText(),"true");
+			} catch (DocumentException e) {
+				fail("Can't parse file " + outputXml.getAbsolutePath());
+			}
+	}
+	
+	public void testReadable() {
+        Configuration cfg = new Configuration();
+
+        cfg.addFile(new File(getOutputDir(), getBaseForMappings() + "Car.hbm.xml"));
+        cfg.addFile(new File(getOutputDir(), getBaseForMappings() + "CarPart.hbm.xml"));
+        
+        cfg.buildMappings();
+    }
+
+	protected String getBaseForMappings() {
+		return "org/hibernate/tool/hbm2x/hbm2hbmxml/";
+	}
+	
+	public static Test suite() {
+		return new TestSuite(AbstractTest.class);
+	}
+
+}

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Aliens.hbm.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Aliens.hbm.xml	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Aliens.hbm.xml	2009-05-19 11:50:10 UTC (rev 16596)
@@ -18,6 +18,9 @@
 		<id name="id" type="long">
 			<generator class="assigned"/>
 		</id>
+		  <discriminator type="string">
+            	<column name="HIER_TYPE" length="5" not-null="true" />
+  		  </discriminator>
 		<property name="legs" type="int"/>
 	</class>
 	

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Car.hbm.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Car.hbm.xml	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Car.hbm.xml	2009-05-19 11:50:10 UTC (rev 16596)
@@ -16,7 +16,7 @@
 		</set>
 	</class>
 	
-	<class name="CarPart" node="carPart">
+	<class name="CarPart" node="carPart" abstract="true">
 		<id name="id" node="@id" type="long">
 			<generator class="increment"/>
 		</id>

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/CarPart.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/CarPart.java	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/CarPart.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -1,35 +1,35 @@
-package org.hibernate.tool.hbm2x.hbm2hbmxml;
-
-/**
- * @author Paco Hern�ndez
- */
-public class CarPart implements java.io.Serializable {
-
-	private long id;
-	private String partName;
-
-	/**
-	 * @return Returns the id.
-	 */
-	public long getId() {
-		return id;
-	}
-	/**
-	 * @param id The id to set.
-	 */
-	public void setId(long id) {
-		this.id = id;
-	}
-	/**
-	 * @return Returns the typeName.
-	 */
-	public String getPartName() {
-		return partName;
-	}
-	/**
-	 * @param typeName The typeName to set.
-	 */
-	public void setPartName(String typeName) {
-		this.partName = typeName;
-	}
-}
+package org.hibernate.tool.hbm2x.hbm2hbmxml;
+
+/**
+ * @author Paco Hern�ndez
+ */
+public abstract class CarPart implements java.io.Serializable {
+
+	private long id;
+	private String partName;
+
+	/**
+	 * @return Returns the id.
+	 */
+	public long getId() {
+		return id;
+	}
+	/**
+	 * @param id The id to set.
+	 */
+	public void setId(long id) {
+		this.id = id;
+	}
+	/**
+	 * @return Returns the typeName.
+	 */
+	public String getPartName() {
+		return partName;
+	}
+	/**
+	 * @param typeName The typeName to set.
+	 */
+	public void setPartName(String typeName) {
+		this.partName = typeName;
+	}
+}

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -20,6 +20,8 @@
 		suite.addTest(SetElementTest.suite());
 		suite.addTest(BackrefTest.suite());
 		suite.addTest(Cfg2HbmToolTest.suite());
+		suite.addTest(AbstractTest.suite());
+		suite.addTest(TypeParamsTest.suite());
 		//$JUnit-END$
 		return suite;
 	}

Modified: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/InheritanceTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/InheritanceTest.java	2009-05-19 10:29:18 UTC (rev 16595)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/InheritanceTest.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -16,6 +16,7 @@
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
 import org.dom4j.XPath;
 import org.dom4j.io.SAXReader;
 import org.hibernate.cfg.Configuration;
@@ -82,9 +83,24 @@
 			} catch (DocumentException e) {
 				fail("Can't parse file " + outputXml.getAbsolutePath());
 			}
-   }
+    }
+	
+	public void testDiscriminator() throws DocumentException {
+		File outputXml = new File(getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/hbm2hbmxml/Animal.hbm.xml");
+		assertFileAndExists(outputXml);
 
+		SAXReader xmlReader =  this.getSAXReader();
 
+		Document document = xmlReader.read(outputXml);
+		XPath xpath = DocumentHelper.createXPath("//hibernate-mapping/class/discriminator");
+		List list = xpath.selectNodes(document);
+		assertEquals("Expected to get one discriminator element", 1, list.size());
+			
+		Element node = (Element) list.get(0);
+		assertEquals(node.attribute( "type" ).getText(), "string");
+
+	}
+
 	protected String getBaseForMappings() {
 		return "org/hibernate/tool/hbm2x/hbm2hbmxml/";
 	}

Added: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Order.hbm.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Order.hbm.xml	                        (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Order.hbm.xml	2009-05-19 11:50:10 UTC (rev 16596)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<!-- Generated 17.04.2009 10:41:19 by Hibernate Tools 3.2.4.GA -->
+<hibernate-mapping>
+ <class name="org.hibernate.tool.hbm2x.hbm2hbmxml.Order" table="ORDERS">
+  <id name="orderId" type="long">
+   <column name="ORDERID"/>
+   <generator class="native"/>
+  </id>
+  <property generated="never" lazy="false" name="status">
+   <column name="STATUS"/>
+   <type name="org.hibernate.type.EnumType">
+    <param name="catalog"/>
+    <param name="column">STATUS</param>
+    <param name="table">ORDERS</param>
+    <param name="schema"/>
+    <param name="enumClass">org.hibernate.tool.hbm2x.hbm2hbmxml.Order$Status</param>
+   </type>
+  </property>
+  <property name="name" type="string"/>
+ </class>
+</hibernate-mapping>

Added: branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/TypeParamsTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/TypeParamsTest.java	                        (rev 0)
+++ branches/Branch_3_2/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/TypeParamsTest.java	2009-05-19 11:50:10 UTC (rev 16596)
@@ -0,0 +1,195 @@
+/*******************************************************************************
+  * Copyright (c) 2007-2009 Red Hat, Inc.
+  * Distributed under license by Red Hat, Inc. All rights reserved.
+  * This program is made available under the terms of the
+  * Eclipse Public License v1.0 which accompanies this distribution,
+  * and is available at http://www.eclipse.org/legal/epl-v10.html
+  *
+  * Contributor:
+  *     Red Hat, Inc. - initial API and implementation
+  ******************************************************************************/
+package org.hibernate.tool.hbm2x.hbm2hbmxml;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.tool.NonReflectiveTestCase;
+import org.hibernate.tool.hbm2x.Exporter;
+import org.hibernate.tool.hbm2x.HibernateMappingExporter;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class TypeParamsTest extends NonReflectiveTestCase {
+	
+	private String mappingFile = "Order.hbm.xml";
+
+	private Exporter hbmexporter;
+
+	/**
+	 * @param name
+	 */
+	public TypeParamsTest(String name) {
+		super(name, "cfg2hbmoutput");
+	}
+
+
+	protected String[] getMappings() {
+		return new String[] {
+				mappingFile
+		};
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		hbmexporter = new HibernateMappingExporter(getCfg(), getOutputDir() );
+		hbmexporter.start();
+	}
+
+	public void testAllFilesExistence() {
+		assertFileAndExists(new File(getOutputDir().getAbsolutePath(),  getBaseForMappings() + mappingFile) );
+	}
+
+	public void testReadable() {
+        Configuration cfg = new Configuration();
+        cfg.addFile(new File(getOutputDir(), getBaseForMappings() + "Order.hbm.xml"));
+        cfg.buildMappings();
+    }
+
+	public void testTypeParamsElements() throws DocumentException {
+		File outputXml = new File(getOutputDir(),  getBaseForMappings() + mappingFile);
+		assertFileAndExists(outputXml);
+
+		SAXReader xmlReader =  getSAXReader();
+
+		Document document = xmlReader.read(outputXml);
+
+		XPath xpath = DocumentHelper.createXPath("//hibernate-mapping/class/property");
+		List list = xpath.selectNodes(document);
+		assertEquals("Expected to get one property element", 2, list.size());
+		Element statusElement = (Element) list.get(0);
+		Element nameElement = (Element) list.get(1);
+		if(!statusElement.attribute( "name" ).getText().equals("status")) {
+			Element temp = nameElement;
+			nameElement = statusElement;
+			statusElement = temp;
+		}
+		assertEquals(statusElement.attribute( "name" ).getText(),"status");
+		
+		list = statusElement.elements("type");
+		assertEquals("Expected to get one type element", 1, list.size());
+		
+		list =  ((Element) list.get(0)).elements("param");		
+		assertEquals("Expected to get 5 params elements", list.size(), 5);
+		
+		Map params = new HashMap();
+		for (int i = 0; i < list.size(); i++) {
+			Element param = (Element) list.get(i);
+			params.put(param.attribute( "name" ).getText(), param.getText());
+		}
+		
+		Set set = params.entrySet();
+		assertEquals("Expected to get 5 different params elements", set.size(), 5);
+		
+		assertTrue("Can't find 'catalog' param", 
+				set.contains(new TestEntry("catalog", "")));
+		
+		assertTrue("Can't find 'column' param", 
+				set.contains(new TestEntry("column", "STATUS")));
+		
+		assertTrue("Can't find 'table' param", 
+				set.contains(new TestEntry("table", "ORDERS")));
+		
+		assertTrue("Can't find 'schema' param", 
+				set.contains(new TestEntry("schema", "")));
+		
+		assertTrue("Can't find 'enumClass' param", 
+				set.contains(new TestEntry("enumClass", "org.hibernate.tool.hbm2x.hbm2hbmxml.Order$Status")));
+
+		assertTrue("property name should not have any type element",nameElement.elements("type").isEmpty());
+		assertEquals(nameElement.attribute("type").getText(), "string");
+	}
+
+	protected String getBaseForMappings() {
+		return "org/hibernate/tool/hbm2x/hbm2hbmxml/";
+	}
+
+	public static Test suite() {
+		return new TestSuite(TypeParamsTest.class);
+	}
+
+}
+
+class TestEntry implements Entry{
+	
+	private Object key;
+	
+	private Object value;
+	
+	public TestEntry(Object key, Object value){
+		this.key = key;
+		this.value = value;
+	}
+
+	public Object getKey() {
+		return key;
+	}
+
+	public Object getValue() {
+		return value;
+	}
+
+	public Object setValue(Object value) {
+		return this.value = value;
+	}
+
+	
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((key == null) ? 0 : key.hashCode());
+		result = prime * result + ((value == null) ? 0 : value.hashCode());
+		return result;
+	}
+
+	
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (!(obj instanceof Entry)){
+			return false;
+		}
+		
+		Entry other = (Entry) obj;		
+		if (key == null) {
+			if (other.getKey() != null)
+				return false;
+		} else if (!key.equals(other.getKey()))
+			return false;
+		if (value == null) {
+			if (other.getValue() != null)
+				return false;
+		} else if (!value.equals(other.getValue()))
+			return false;
+		return true;
+	}
+	
+	
+	
+}




More information about the hibernate-commits mailing list