Author: max...@jb... Date: 2006-07-12 05:42:03 -0400 (Wed, 12 Jul 2006) New Revision: 10105 Added: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/DriverMetaDataTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/MetaDataTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/newformat.reveng.xml Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCReader.java trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java trunk/HibernateExt/tools/src/templates/hbm/set.hbm.ftl trunk/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/JDBCMetaDataBinderTestCase.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/NonReflectiveTestCase.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ToolAllTests.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/BuildFileTestCase.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/HashcodeEqualsTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2SeamTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Order.hbm.xml trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/ManyToManyTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryExporterTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleCompositeIdOrderTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleViewsTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/SearchEscapeStringTest.java trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java trunk/HibernateExt/tools/src/testsupport/anttest-build.xml Log: fixing tests so they don't leave garbage tables behind. Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCReader.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCReader.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCReader.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -508,7 +508,9 @@ String sqlTypeName = (String) columnRs.get("TYPE_NAME"); String columnName = (String) columnRs.get("COLUMN_NAME"); + + String comment = (String) columnRs.get("REMARKS"); TableIdentifier ti = TableIdentifier.create(table); Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -268,7 +268,8 @@ while (iterator.hasNext() ) { Element element = (Element) iterator.next(); - SQLTypeMapping mapping = new SQLTypeMapping(JDBCToHibernateTypeHelper.getJDBCType(element.attributeValue("jdbc-type") ) ); + int jdbcType = JDBCToHibernateTypeHelper.getJDBCType(element.attributeValue("jdbc-type") ); + SQLTypeMapping mapping = new SQLTypeMapping(jdbcType ); mapping.setHibernateType( getHibernateType( element ) ); mapping.setLength(getInteger(element.attributeValue("length"), SQLTypeMapping.UNKNOWN_LENGTH) ); mapping.setPrecision(getInteger(element.attributeValue("precision"), SQLTypeMapping.UNKNOWN_PRECISION) ); Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2HbmTool.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -260,6 +260,10 @@ } } + public String getClassName(OneToMany om) { + return om.getAssociatedClass().getClassName(); + } + public String getProxyInterfaceName(PersistentClass pc) { if (pc.hasPojoRepresentation() ) { return pc.getClassName(); Modified: trunk/HibernateExt/tools/src/templates/hbm/set.hbm.ftl =================================================================== --- trunk/HibernateExt/tools/src/templates/hbm/set.hbm.ftl 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/templates/hbm/set.hbm.ftl 2006-07-12 09:42:03 UTC (rev 10105) @@ -16,7 +16,7 @@ /> <#elseif c2h.isManyToMany(property)> <many-to-many - entity-name="${property.getValue().getElement().referencedEntityName}"> <#-- lookup needed classname --> + entity-name="$c2h.getClassName($property.getValue().getElement())"> <#-- lookup needed classname --> <#foreach column in property.getValue().getElement().columnIterator> <#include "column.hbm.ftl"> </#foreach> Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/BaseTestCase.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -1,13 +1,25 @@ package org.hibernate.tool; import java.io.File; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Iterator; +import junit.framework.ComparisonFailure; +import junit.framework.TestCase; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hibernate.cfg.Configuration; +import org.hibernate.cfg.Settings; +import org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect; +import org.hibernate.dialect.Dialect; import org.hibernate.tool.test.TestHelper; -import junit.framework.TestCase; - public abstract class BaseTestCase extends TestCase { + protected static final Log SKIP_LOG = LogFactory.getLog("org.hibernate.tool.test.SKIPPED"); + private File outputdir; public BaseTestCase(String name) { @@ -29,9 +41,11 @@ } protected void tearDown() throws Exception { + if (getOutputDir()!=null) TestHelper.deleteDir(getOutputDir()); + //assertEquals("Method not found errors during template processing:\n " + HibernateUberspect.getMethodErrors(),0,HibernateUberspect.getMethodNotFoundCount()); - //assertEquals("Method not found errors during template processing:\n " + HibernateUberspect.getMethodErrors(),0,HibernateUberspect.getMethodNotFoundCount()); + assertNoTables(); } @@ -45,5 +59,62 @@ return outputdir; } + public void assertNoTables() throws SQLException { + Configuration configuration = new Configuration(); + Settings testSettings = configuration.buildSettings(); + + Connection con = null; + try { + + con = testSettings.getConnectionProvider().getConnection(); + + JDBCMetaDataDialect dialect = new JDBCMetaDataDialect(); + dialect.configure( testSettings.getConnectionProvider(), testSettings.getSQLExceptionConverter() ); + Iterator tables = dialect.getTables( testSettings.getDefaultCatalogName(), testSettings.getDefaultSchemaName(), null ); + + assertHasNext( 0, tables ); + } finally { + testSettings.getConnectionProvider().closeConnection(con); + } + + } + + protected void assertHasNext(int expected, Iterator iterator) { + assertHasNext(null, expected, iterator); + } + + /** + * @param i + * @param iterator + */ + protected void assertHasNext(String reason, int expected, Iterator iterator) { + int actual = 0; + Object last = null; + while(iterator.hasNext() && actual <= expected) { + last = iterator.next(); + actual ++; + } + + if(actual < expected) { + throw new ComparisonFailure(reason==null?"Expected were less":reason, ""+expected, ""+actual); + } + + if(actual > expected) { + throw new ComparisonFailure((reason==null?"Expected were higher":reason)+", Last: " + last, ""+expected, ""+actual); + } + } + + /** + * Intended to indicate that this test class as a whole is intended for + * a dialect or series of dialects. Skips here (appliesTo = false), therefore + * simply indicate that the given tests target a particular feature of the + * current database... + * + * @param dialect + */ + public boolean appliesTo(Dialect dialect) { + return true; + } + } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/JDBCMetaDataBinderTestCase.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/JDBCMetaDataBinderTestCase.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/JDBCMetaDataBinderTestCase.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -10,12 +10,12 @@ import java.sql.Statement; import java.util.Iterator; -import junit.framework.ComparisonFailure; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.JDBCMetaDataConfiguration; import org.hibernate.cfg.Settings; import org.hibernate.cfg.reveng.TableIdentifier; +import org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect; import org.hibernate.mapping.ForeignKey; import org.hibernate.mapping.Table; @@ -67,13 +67,20 @@ * @param sqls * @throws SQLException */ - protected void executeDDL(String[] sqls, boolean ignoreErrors) throws SQLException { + protected void executeDDL(String[] sqls, boolean ignoreErrors) throws SQLException { Configuration configuration = new Configuration(); Settings testSettings = configuration.buildSettings(); - - Connection con = testSettings.getConnectionProvider().getConnection(); + if(!appliesTo( testSettings.getDialect() )) { + fail("test case does not apply to " + testSettings.getDialect()); + return; // don't do anything to avoid crippled db + } + Connection con = null; + try { + + con = testSettings.getConnectionProvider().getConnection(); + DatabaseMetaData metaData = con.getMetaData(); storesLowerCaseIdentifiers = metaData.storesLowerCaseIdentifiers(); storesUpperCaseIdentifiers = metaData.storesUpperCaseIdentifiers(); @@ -99,7 +106,9 @@ } if (statement!=null) statement.close(); con.commit(); - testSettings.getConnectionProvider().closeConnection(con); + } finally { + testSettings.getConnectionProvider().closeConnection(con); + } } protected abstract String[] getCreateSQL(); @@ -130,6 +139,7 @@ protected void tearDown() throws Exception { executeDDL(getDropSQL(), false); + assertNoTables(); super.tearDown(); } /** @@ -140,30 +150,7 @@ } - protected void assertHasNext(int expected, Iterator foreignKeyIterator) { - assertHasNext(null, expected, foreignKeyIterator); - } /** - * @param i - * @param foreignKeyIterator - */ - protected void assertHasNext(String reason, int expected, Iterator foreignKeyIterator) { - int actual = 0; - while(foreignKeyIterator.hasNext() && actual <= expected) { - foreignKeyIterator.next(); - actual ++; - } - - if(actual < expected) { - throw new ComparisonFailure(reason==null?"Expected were less":reason, ""+expected, ""+actual); - } - - if(actual > expected) { - throw new ComparisonFailure(reason==null?"Expected were higher":reason, ""+expected, ""+actual); - } - } - - /** * @param column * @return */ @@ -233,5 +220,8 @@ return value.equals(tf); } - + public Configuration getConfiguration() { + return cfg; + } + } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/NonReflectiveTestCase.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/NonReflectiveTestCase.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/NonReflectiveTestCase.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -2,9 +2,6 @@ package org.hibernate.tool; import java.io.File; -import java.sql.Blob; -import java.sql.Clob; -import java.util.Iterator; import org.hibernate.HibernateException; import org.hibernate.Interceptor; @@ -13,10 +10,6 @@ import org.hibernate.cfg.Environment; import org.hibernate.dialect.Dialect; import org.hibernate.engine.SessionFactoryImplementor; -import org.hibernate.mapping.Collection; -import org.hibernate.mapping.PersistentClass; -import org.hibernate.mapping.Property; -import org.hibernate.mapping.SimpleValue; import org.hibernate.tool.test.TestHelper; public abstract class NonReflectiveTestCase extends BaseTestCase { @@ -59,7 +52,7 @@ getCfg().addResource( files[i], this.getClass().getClassLoader() ); } - if ( getCacheConcurrencyStrategy()!=null ) { + /*if ( getCacheConcurrencyStrategy()!=null ) { Iterator iter = cfg.getClassMappings(); while ( iter.hasNext() ) { @@ -91,7 +84,7 @@ ); } - } + }*/ setDialect( Dialect.getDialect() ); getCfg().buildMappings(); @@ -199,4 +192,7 @@ return TestHelper.findFirstString(string, file); } + public Configuration getConfiguration() { + return getCfg(); + } } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ToolAllTests.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ToolAllTests.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ToolAllTests.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -1,5 +1,8 @@ package org.hibernate.tool; +import org.hibernate.tool.hbm2x.query.QueryAllTests; +import org.hibernate.tool.ide.completion.CompletionAllTests; + import junit.framework.Test; import junit.framework.TestSuite; @@ -12,6 +15,8 @@ suite.addTest(org.hibernate.tool.hbm2x.hbm2hbmxml.Cfg2HbmAllTests.suite() ); suite.addTest(org.hibernate.tool.test.jdbc2cfg.Jdbc2CfgAllTests.suite() ); suite.addTest(org.hibernate.tool.hbm2x.Hbm2XAllTests.suite() ); + suite.addTest(CompletionAllTests.suite() ); + suite.addTest(QueryAllTests.suite() ); return suite; }} Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/BuildFileTestCase.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/BuildFileTestCase.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/BuildFileTestCase.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -21,13 +21,12 @@ import java.io.PrintStream; import java.net.URL; -import junit.framework.TestCase; - import org.apache.tools.ant.BuildEvent; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildListener; import org.apache.tools.ant.Project; import org.apache.tools.ant.ProjectHelper; +import org.hibernate.tool.BaseTestCase; /** * A BuildFileTest is a TestCase which executes targets from an Ant buildfile @@ -38,7 +37,7 @@ * * Copied into hibernate to avoid dependency on ant test src directory. */ -public abstract class BuildFileTestCase extends TestCase { +public abstract class BuildFileTestCase extends BaseTestCase { protected Project project; @@ -502,4 +501,5 @@ } + } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -25,7 +25,9 @@ } protected void tearDown() throws Exception { - System.out.println(getLog() ); + executeTarget("cleanup"); + System.out.println(getLog()); + super.tearDown(); } protected void setUp() throws Exception { configureProject("src/testsupport/anttest-build.xml"); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -36,6 +36,7 @@ protected void tearDown() throws Exception { System.out.println(getLog() ); + super.tearDown(); } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/HashcodeEqualsTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/HashcodeEqualsTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/HashcodeEqualsTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -38,10 +38,6 @@ super( name, "hashcodeequals" ); } - protected void tearDown() throws Exception { - // TODO Auto-generated method stub - // super.tearDown(); - } protected void setUp() throws Exception { super.setUp(); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -17,7 +17,6 @@ import org.hibernate.mapping.Property; import org.hibernate.mapping.RootClass; import org.hibernate.mapping.SingleTableSubclass; -import org.hibernate.mapping.Value; import org.hibernate.tool.NonReflectiveTestCase; import org.hibernate.tool.hbm2x.pojo.BasicPOJOClass; import org.hibernate.tool.hbm2x.pojo.ImportContext; @@ -200,6 +199,7 @@ "org.hibernate.tool.hbm2x.Order" ); Property property = pc.getProperty( "lineItems" ); assertEquals( "java.util.Collection", c2j.getJavaTypeName( property, false ) ); + } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2SeamTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2SeamTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2SeamTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -31,9 +31,6 @@ } - protected void tearDown() throws Exception { - super.tearDown(); - } public void testFileExistence() { assertFileAndExists(new File(getOutputDir(), "src/org/hibernate/tool/hbm2x/Article.java") ); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Order.hbm.xml =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Order.hbm.xml 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Order.hbm.xml 2006-07-12 09:42:03 UTC (rev 10105) @@ -6,22 +6,6 @@ <hibernate-mapping package="org.hibernate.tool.hbm2x"> <!-- - This mapping demonstrates - - (1) composite keys and one-to-many associations on - composite keys - - (2) use of insert="false" update="false" on an - association mapping, when the foreign key is - also part of the primary key - - (3) use of a derived property which performs a - subselect against associated tables - - (4) use of <synchronize/> to ensure that auto-flush - works correctly for an entity with a property - derived from other tables - --> Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/Cfg2HbmAllTests.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -8,6 +8,7 @@ public static Test suite() { TestSuite suite = new TestSuite( "Test for org.hibernate.tool.cfg2hbm" ); //$JUnit-BEGIN$ + suite.addTest( ManyToManyTest.suite() ); suite.addTest( Hbm2HbmXmlTest.suite() ); //$JUnit-END$ return suite; Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/ManyToManyTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/ManyToManyTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/hbm2hbmxml/ManyToManyTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -8,10 +8,17 @@ package org.hibernate.tool.hbm2x.hbm2hbmxml; import java.io.File; +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.Node; +import org.dom4j.XPath; import org.dom4j.io.SAXReader; import org.hibernate.cfg.Configuration; import org.hibernate.tool.NonReflectiveTestCase; @@ -57,11 +64,24 @@ } - protected void tearDown() throws Exception { - // TODO Auto-generated method stub - // super.tearDown(); + public void testManyToManyFailureExpected() throws DocumentException { + File outputXml = new File(getOutputDir(), getBaseForMappings() + "User.hbm.xml"); + assertFileAndExists(outputXml); + + SAXReader xmlReader = this.getSAXReader(); + + Document document = xmlReader.read(outputXml); + + XPath xpath = DocumentHelper.createXPath("//hibernate-mapping/class/set/many-to-many"); + List list = xpath.selectNodes(document); + assertEquals("Expected to get one many-to-many element", 1, list.size()); + Element node = (Element) list.get(0); + assertEquals(node.attribute( "class" ).getText(),"Group"); + + } - + + private SAXReader getSAXReader() { SAXReader xmlReader = new SAXReader(); xmlReader.setEntityResolver(new DTDEntityResolver() ); Added: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryAllTests.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -0,0 +1,17 @@ +package org.hibernate.tool.hbm2x.query; + +import junit.framework.Test; +import junit.framework.TestSuite; + +public class QueryAllTests { + + public static Test suite() { + TestSuite suite = new TestSuite( + "Test for org.hibernate.tool.hbm2x.query" ); + //$JUnit-BEGIN$ + suite.addTestSuite( QueryExporterTest.class ); + //$JUnit-END$ + return suite; + } + +} Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryExporterTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryExporterTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/query/QueryExporterTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -5,9 +5,11 @@ import java.util.List; import org.hibernate.SessionFactory; +import org.hibernate.Transaction; import org.hibernate.cfg.Environment; import org.hibernate.classic.Session; import org.hibernate.tool.NonReflectiveTestCase; +import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2x.QueryExporter; public class QueryExporterTest extends NonReflectiveTestCase { @@ -51,8 +53,14 @@ queries.add("from java.lang.Object"); exporter.setQueries( queries ); - exporter.start(); + exporter.start(); + } + + protected void tearDown() throws Exception { + SchemaExport export = new SchemaExport(getCfg()); + export.drop( false, true ); + super.tearDown(); } Added: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/CompletionAllTests.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -0,0 +1,19 @@ +package org.hibernate.tool.ide.completion; + +import junit.framework.Test; +import junit.framework.TestSuite; + +public class CompletionAllTests { + + public static Test suite() { + TestSuite suite = new TestSuite( + "Test for org.hibernate.tool.ide.completion" ); + //$JUnit-BEGIN$ + suite.addTestSuite( CompletionHelperTest.class ); + suite.addTestSuite( HqlAnalyzerTest.class ); + suite.addTestSuite( ModelCompletionTest.class ); + //$JUnit-END$ + return suite; + } + +} Added: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/DriverMetaDataTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/DriverMetaDataTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/DriverMetaDataTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -0,0 +1,94 @@ +package org.hibernate.tool.test; + +import java.util.Iterator; +import java.util.Map; + +import org.hibernate.cfg.JDBCReaderFactory; +import org.hibernate.cfg.Settings; +import org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect; +import org.hibernate.cfg.reveng.dialect.MetaDataDialect; +import org.hibernate.tool.JDBCMetaDataBinderTestCase; + + +/** + * Various tests to validate the "sanity" of the jdbc drivers meta data implementation. + * + * @author Max Rydahl Andersen + * + */ +public class DriverMetaDataTest extends JDBCMetaDataBinderTestCase { + +protected String[] getCreateSQL() { + + return new String[] { + "create table tab_master ( id char not null, name varchar(20), primary key (id) )", + "create table tab_child ( childid character not null, masterref character, primary key (childid), foreign key (masterref) references tab_master(id) )", + }; + } + + protected String[] getDropSQL() { + + return new String[] { + "drop table tab_child", + "drop table tab_master", + }; + } + + public void testExportedKeys() { + + MetaDataDialect dialect = new JDBCMetaDataDialect(); + + Settings settings = cfg.buildSettings(); + + dialect.configure( settings.getConnectionProvider(), settings.getSQLExceptionConverter() ); + + Iterator tables = dialect.getTables( settings.getDefaultCatalogName(), settings.getDefaultSchemaName(), identifier("tab_master") ); + + boolean foundMaster = false; + while(tables.hasNext()) { + Map map = (Map) tables.next(); + + String tableName = (String) map.get("TABLE_NAME"); + String schemaName = (String) map.get("TABLE_SCHEM"); + String catalogName = (String) map.get("TABLE_CAT"); + + if(tableName.equals(identifier("tab_master"))) { + foundMaster = true; + Iterator exportedKeys = dialect.getExportedKeys( catalogName, schemaName, tableName ); + int cnt = 0; + while ( exportedKeys.hasNext() ) { + Map element = (Map) exportedKeys.next(); + cnt++; + } + assertEquals(1,cnt); + /* assertEquals(schemaName, settings.getDefaultSchemaName()); + assertEquals(catalogName, settings.getDefaultCatalogName());*/ + } + } + + assertTrue(foundMaster); + } + + public void testDataType() { + + MetaDataDialect dialect = new JDBCMetaDataDialect(); + + Settings settings = cfg.buildSettings(); + + dialect.configure( settings.getConnectionProvider(), settings.getSQLExceptionConverter() ); + + Iterator tables = dialect.getColumns( settings.getDefaultCatalogName(), settings.getDefaultSchemaName(), "test", null ); + + + while(tables.hasNext()) { + Map map = (Map) tables.next(); + + System.out.println(map); + + } + + + } + + +} Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/Jdbc2CfgAllTests.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -7,18 +7,26 @@ public static Test suite() { TestSuite suite = new TestSuite( - "Test for org.hibernate.tool.test.jdbc2cfg"); + "Test for org.hibernate.tool.test.jdbc2cfg" ); //$JUnit-BEGIN$ - suite.addTest(NoPrimaryKeyTest.suite() ); - suite.addTest(DefaultReverseEngineeringStrategyTest.suite() ); - suite.addTest(AutoQuoteTest.suite() ); - suite.addTest(OverrideBinderTest.suite() ); - suite.addTest(CompositeIdTest.suite() ); - suite.addTest(KeyPropertyCompositeIdTest.suite() ); - suite.addTest(IndexTest.suite() ); - suite.addTest(ForeignKeysTest.suite() ); - suite.addTest(BasicTest.suite() ); - suite.addTest(PersistentClassesTest.suite() ); + suite.addTest( BasicMultiSchemaTest.suite() ); + suite.addTest( PerformanceTest.suite() ); + suite.addTest( NoPrimaryKeyTest.suite() ); + suite.addTest( SearchEscapeStringTest.suite() ); + suite.addTest( OverrideBinderTest.suite() ); + suite.addTest( VersioningTest.suite() ); + suite.addTest( MetaDataTest.suite() ); + suite.addTest( CompositeIdTest.suite() ); + suite.addTest( IndexTest.suite() ); + suite.addTest( OracleCompositeIdOrderTest.suite() ); + suite.addTest( ForeignKeysTest.suite() ); + suite.addTest( RevEngForeignKeyTests.suite() ); + suite.addTest( BasicTest.suite() ); + suite.addTest( OracleViewsTest.suite() ); + suite.addTest( AutoQuoteTest.suite() ); + suite.addTest( KeyPropertyCompositeIdTest.suite() ); + suite.addTest( PersistentClassesTest.suite() ); + suite.addTest( DefaultReverseEngineeringStrategyTest.suite() ); //$JUnit-END$ return suite; } Added: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/MetaDataTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/MetaDataTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/MetaDataTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -0,0 +1,109 @@ +/* + * Created on 2004-11-23 + * + */ +package org.hibernate.tool.test.jdbc2cfg; + +import java.sql.SQLException; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.hibernate.mapping.Column; +import org.hibernate.mapping.PrimaryKey; +import org.hibernate.mapping.Table; +import org.hibernate.tool.JDBCMetaDataBinderTestCase; + +/** + * @author max + * + */ +public class MetaDataTest extends JDBCMetaDataBinderTestCase { + + /** + * @return + */ + protected String[] getDropSQL() { + return new String[] { + "drop table basic", + "drop table somecolumnsnopk", + "drop table multikeyed" }; + } + + /** + * @return + */ + protected String[] getCreateSQL() { + + return new String[] { + "create table basic ( a int not null, name varchar(20), primary key (a) )", + "create table somecolumnsnopk ( pk varchar(25) not null, b char, c int not null, aBoolean boolean )", + "create table multikeyed ( orderid varchar(10), customerid varchar(10), name varchar(10), primary key(orderid, customerid) )" }; + } + + public void testBasic() throws SQLException { + + assertHasNext( "There should be three tables!", 3, cfg + .getTableMappings() ); + + Table table = getTable( identifier( "basic" ) ); + + assertEqualIdentifiers( "basic", table.getName() ); + assertEquals( 2, table.getColumnSpan() ); + + Column basicColumn = table.getColumn( 0 ); + assertEqualIdentifiers( "a", basicColumn.getName() ); + // TODO: we cannot call getSqlType(dialect,cfg) without a + // MappingassertEquals("INTEGER", basicColumn.getSqlType() ); // at + // least on hsqldb + // assertEquals(22, basicColumn.getLength() ); // at least on oracle + + PrimaryKey key = table.getPrimaryKey(); + assertNotNull( "There should be a primary key!", key ); + assertEquals( key.getColumnSpan(), 1 ); + + Column column = key.getColumn( 0 ); + assertTrue( column.isUnique() ); + + assertSame( basicColumn, column ); + + } + + public void testScalePrecisionLength() { + + Table table = getTable( identifier( "basic" ) ); + + Column nameCol = table.getColumn( new Column( identifier( "name" ) ) ); + assertEquals( nameCol.getLength(), 20 ); + assertEquals( nameCol.getPrecision(), Column.DEFAULT_PRECISION ); + assertEquals( nameCol.getScale(), Column.DEFAULT_SCALE ); + } + + /* + * public void testGetTables() { + * + * Table table = new Table(); table.setName("dummy"); cfg.addTable(table); + * + * Table foundTable = cfg.getTable(null,null,"dummy"); + * + * assertSame(table,foundTable); + * + * foundTable = cfg.getTable(null,"dschema", "dummy"); + * + * assertNotSame(table, foundTable); } + */ + + public void testCompositeKeys() { + + Table table = getTable( identifier( "multikeyed" ) ); + + PrimaryKey primaryKey = table.getPrimaryKey(); + + assertEquals( 2, primaryKey.getColumnSpan() ); + } + + public static Test suite() { + return new TestSuite( MetaDataTest.class ); + } + +} Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleCompositeIdOrderTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleCompositeIdOrderTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleCompositeIdOrderTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -10,6 +10,8 @@ import junit.framework.TestSuite; import org.hibernate.cfg.JDBCMetaDataConfiguration; +import org.hibernate.dialect.Dialect; +import org.hibernate.dialect.Oracle9Dialect; import org.hibernate.mapping.Column; import org.hibernate.mapping.ForeignKey; import org.hibernate.mapping.PersistentClass; @@ -105,6 +107,10 @@ }; } + public boolean appliesTo(Dialect dialect) { + return dialect instanceof Oracle9Dialect; + } + public void testMultiColumnForeignKeys() { Table table = getTable(identifier("Course") ); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleViewsTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleViewsTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OracleViewsTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -9,6 +9,8 @@ import junit.framework.Test; import junit.framework.TestSuite; +import org.hibernate.dialect.Dialect; +import org.hibernate.dialect.Oracle9Dialect; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Table; import org.hibernate.tool.JDBCMetaDataBinderTestCase; @@ -19,6 +21,7 @@ */ public class OracleViewsTest extends JDBCMetaDataBinderTestCase { + /** * @return */ @@ -48,6 +51,9 @@ }; } + public boolean appliesTo(Dialect dialect) { + return dialect instanceof Oracle9Dialect; + } public void testViewAndSynonyms() throws SQLException { PersistentClass classMapping = cfg.getClassMapping(toClassName("basicview") ); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/SearchEscapeStringTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/SearchEscapeStringTest.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/SearchEscapeStringTest.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -59,7 +59,6 @@ } protected void setUp() throws Exception { - //oracle.jdbc.driver.OracleLog.setTrace(true); super.setUp(); } } Added: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/newformat.reveng.xml =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/newformat.reveng.xml 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/newformat.reveng.xml 2006-07-12 09:42:03 UTC (rev 10105) @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE hibernate-reverse-engineering SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > + +<hibernate-reverse-engineering case-match="exact|upper|lower"> + + <!-- .* is valid, will be translated into % --> + <database-selection match-catalog="PUBLIC.*" match-schema="OVRTEST" match-table=".*"/> + + <type-mapping> + <from-sql-type native-type="varchar" jdbc-type="VARCHAR" length='20'> + <hibernate-type name="SomeUserType"><param></param></hibernate-type> + </from-sql-type> + </type-mapping> + + <table-filter match-schema=".*" match-name="TBL_.*"> + <entity package="org.werd"/> + </table-filter> + + + <table-filter match-name="DEFUNCT_TABLE" exclude="true" /> + <table-filter match-name="DoNotWantIt" exclude="true" /> + <table-filter match-name="WantedTable" /> + <table-filter match-catalog="BAD" match-schema="SCHEMA" + match-name=".*" exclude="true" /> + + <table-filter match-catalog=".*" match-schema=".*" + match-name="BIN$.*" exclude="true" /> + + <table-filter match-name=".*" exclude="false"/> + <!-- + <table name="CUSTOMER" package="org.funk" class-name="MyCustomer"> + <column name="order" property-name="orderName" /> + </table> + + <table name="CUSTOMER"> + <column name="ORDER" /> + </table> + + <table catalog="CUSTOMER" schema="WHATEVER" name="ORDER"> + <column name="name" exclude="true"> + <meta attribute="property-name">Name</meta> + </column> + </table> + --> + +<!-- hack for disable many-to-many + <table name="CategoryItem"> + <foreign-key constraint-name="CAT_FK" foreign-table="CATEGORY" > + <column-ref local-column="catid" foreign-column="id" /> + <many-to-one name="dfdf"/> + </foreign-key> + </table> +--> + <!-- + alter table Customer add constraint 'max' foreign key (addressid, x) references address (dfdf) + + default_schema PUBLIC + --> + <table name="ORDERS" class="Order"> + <primary-key property="id" key-class="OrderId"> + <generator class="sequence"> + <param name="table">seq_table</param> + </generator> + <key-column name="CUSTID1" property="val1" type="string"/> <!-- no exclude --> + <key-column name="CUSTID2" /> + <key-column name="CUSTID3" /> + </primary-key> + + <column name="generated" exclude="true" property="price"/> + + <for-columns exclude="false" property="price" type="MonetaryAmount"> + <column name="PRICE"/> + <column name="CURRENCY"/> + </for-columns> + + <!-- if constraint-name exist in db, use it! ignore foreign-x --> + <foreign-key constraint-name="SYS_CP20" foreign-table="PARENT" > + <column-ref local-column="parentid" foreign-column="id" /> + <column-ref local-column="extraparentid" foreign-column="extraid" /> + <many-to-one property="order"/> + <set name="orders"/> + </foreign-key> + + + <foreign-key constraint-name="SYS_CP20" foreign-table="PARENT" > + <column-ref local-column="parentid" foreign-column="id" /> + <column-ref local-column="extraparentid" foreign-column="extraid" /> + <many-to-one property="order"/> + <map name="orders"> + <map-key column="xxx"/> + </map> + </foreign-key> + + <foreign-key foreign-table="PARENT"> + <column-ref local-column="parentid" foreign-column="id" /> + <column-ref local-column="extraparentid" foreign-column="extraid" /> + </foreign-key> + + + bidirectionality + cardinality + + entity-name + collection-name + + <many-to-one ...> + < + + + </table> + + + <table name="CHILDREN"> + <foreign-key foreign-table="PARENT"> + <column-ref local-column="parentid" foreign-column="id" /> + <column-ref local-column="extraparentid" + foreign-column="extraid" /> + </foreign-key> + </table> + + <table name="EXCOLUMNS"> + <column name="EXCOLUMN" exclude="true"/> + </table> + + <table name="TblTest" class="org.test.Test"/> + + +</hibernate-reverse-engineering> \ No newline at end of file Modified: trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java =================================================================== --- trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java 2006-07-12 09:42:03 UTC (rev 10105) @@ -37,10 +37,6 @@ exporter.start(); } - protected void tearDown() throws Exception { - //super.tearDown(); - } - public void testFileExistence() { assertFileAndExists( new File( getOutputDir().getAbsolutePath() + "/org/hibernate/tool/hbm2x/Train.java" ) ); assertFileAndExists( Modified: trunk/HibernateExt/tools/src/testsupport/anttest-build.xml =================================================================== --- trunk/HibernateExt/tools/src/testsupport/anttest-build.xml 2006-07-11 17:18:43 UTC (rev 10104) +++ trunk/HibernateExt/tools/src/testsupport/anttest-build.xml 2006-07-12 09:42:03 UTC (rev 10105) @@ -21,6 +21,8 @@ </path> + <target name="cleanup" description="task used for ensuring cleanup to be done even in the case of test failure" depends="afterCfg2hbm"/> + <target name="testantcfg"> <mkdir dir="build/testsupport" /> @@ -61,7 +63,7 @@ <hbm2java /> <hbm2java templatepath="templates" /> - <hbm2cfgxml /> + <hbm2cfgxml/> </hibernatetool> </target> @@ -224,7 +226,7 @@ <hibernatetool destdir="${build.dir}/bottomup"> <configuration propertyfile="../../etc/hibernate.properties"> <fileset dir="../test/org/hibernate/tool/hbm2x"> - <include name="**/*.hbm.xml" /> + <include name="*.hbm.xml" /> </fileset> </configuration> |