[hibernate-commits] Hibernate SVN: r17778 - in core/trunk/annotations/src/test/java/org/hibernate/test/annotations: manytoonewithformula and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Oct 16 09:02:53 EDT 2009


Author: hardy.ferentschik
Date: 2009-10-16 09:02:53 -0400 (Fri, 16 Oct 2009)
New Revision: 17778

Added:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java
Modified:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java
Log:
 HHH-4497
Skipping  ManyToOneWithFormulaTest.testManyToOneToPkWithOnlyFormula for now. Added a SkipForDialectAnnotation as counterpart for RequiresDialect

Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java (from rev 17773, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/RequiresDialect.java)
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/SkipForDialect.java	2009-10-16 13:02:53 UTC (rev 17778)
@@ -0,0 +1,22 @@
+// $Id$
+package org.hibernate.test.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.hibernate.dialect.Dialect;
+
+/**
+ * Annotations used to mark a test to be specific to a given dialect.
+ *
+ * @author Hardy Ferentschik
+ */
+ at Target({ ElementType.METHOD, ElementType.TYPE })
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface SkipForDialect {
+	Class<? extends Dialect>[] value();
+
+	String comment();
+}
\ No newline at end of file

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java	2009-10-16 12:35:19 UTC (rev 17777)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/TestCase.java	2009-10-16 13:02:53 UTC (rev 17778)
@@ -56,6 +56,11 @@
 	 */
 	private final Set<Class<? extends Dialect>> requiredDialectList = new HashSet<Class<? extends Dialect>>();
 
+	/**
+	 * List of dialects for which the current {@code runMethod} should be skipped.
+	 */
+	private final Set<Class<? extends Dialect>> skipForDialectList = new HashSet<Class<? extends Dialect>>();
+
 	public TestCase() {
 		super();
 	}
@@ -121,6 +126,7 @@
 
 	private void setRunTestFlag(Method runMethod) {
 		updateRequiredDialectList( runMethod );
+		updateSkipForDialectList( runMethod );
 
 		if ( runForCurrentDialect() ) {
 			runTest = true;
@@ -150,19 +156,44 @@
 		}
 	}
 
+	private void updateSkipForDialectList(Method runMethod) {
+		skipForDialectList.clear();
+
+		SkipForDialect skipForDialectMethodAnn = runMethod.getAnnotation( SkipForDialect.class );
+		if ( skipForDialectMethodAnn != null ) {
+			Class<? extends Dialect>[] skipDialects = skipForDialectMethodAnn.value();
+			skipForDialectList.addAll( Arrays.asList( skipDialects ) );
+		}
+
+		SkipForDialect skipForDialectClassAnn = getClass().getAnnotation( SkipForDialect.class );
+		if ( skipForDialectClassAnn != null ) {
+			Class<? extends Dialect>[] skipDialects = skipForDialectClassAnn.value();
+			skipForDialectList.addAll( Arrays.asList( skipDialects ) );
+		}
+	}
+
 	protected boolean runForCurrentDialect() {
-		if ( requiredDialectList.isEmpty() ) {
-			return true;
+		boolean runTestForCurrentDialect = true;
+
+		// check whether the current dialect is assignableFrom from any of the specified required dialects.
+		for ( Class<? extends Dialect> dialect : requiredDialectList ) {
+			if ( dialect.isAssignableFrom( Dialect.getDialect().getClass() ) ) {
+				runTestForCurrentDialect = true;
+				break;
+			}
+			runTestForCurrentDialect = false;
 		}
-		else {
-			// check whether the current dialect is assignableFrom from any of the specified required dialects.
-			for ( Class<? extends Dialect> dialect : requiredDialectList ) {
-				if ( dialect.isAssignableFrom( Dialect.getDialect().getClass() ) ) {
-					return true;
-				}
+
+		// check whether the current dialect is assignableFrom from any of the specified skip for dialects.
+		for ( Class<? extends Dialect> dialect : skipForDialectList ) {
+			if ( dialect.isAssignableFrom( Dialect.getDialect().getClass() ) ) {
+				runTestForCurrentDialect = false;
+				break;
 			}
-			return false;
+			runTestForCurrentDialect = true;
 		}
+
+		return runTestForCurrentDialect;
 	}
 
 	private void runTestMethod(Method runMethod) throws Throwable {

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java	2009-10-16 12:35:19 UTC (rev 17777)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytoonewithformula/ManyToOneWithFormulaTest.java	2009-10-16 13:02:53 UTC (rev 17778)
@@ -24,11 +24,12 @@
   * 51 Franklin Street, Fifth Floor
   * Boston, MA  02110-1301  USA
   */
-
 package org.hibernate.test.annotations.manytoonewithformula;
 
 import org.hibernate.Session;
 import org.hibernate.Transaction;
+import org.hibernate.dialect.HSQLDialect;
+import org.hibernate.test.annotations.SkipForDialect;
 import org.hibernate.test.annotations.TestCase;
 
 /**
@@ -39,13 +40,13 @@
 	public ManyToOneWithFormulaTest(String x) {
 		super( x );
 	}
-	
+
 	public void testManyToOneFromNonPk() throws Exception {
 		Session s = openSession();
 		Transaction tx = s.beginTransaction();
 		Menu menu = new Menu();
 		menu.setOrderNbr( "123" );
-		menu.setDefault("F");
+		menu.setDefault( "F" );
 		s.persist( menu );
 		FoodItem foodItem = new FoodItem();
 		foodItem.setItem( "Mouse" );
@@ -53,65 +54,66 @@
 		s.persist( foodItem );
 		s.flush();
 		s.clear();
-		foodItem = (FoodItem) s.get( FoodItem.class, foodItem.getId() );
+		foodItem = ( FoodItem ) s.get( FoodItem.class, foodItem.getId() );
 		assertNotNull( foodItem.getOrder() );
 		assertEquals( "123", foodItem.getOrder().getOrderNbr() );
 		tx.rollback();
 		s.close();
 	}
 
-	
+
 	public void testManyToOneFromPk() throws Exception {
 		Session s = openSession();
 		Transaction tx = s.beginTransaction();
-		
+
 		Company company = new Company();
 		s.persist( company );
-		
+
 		Person person = new Person();
-		person.setDefaultFlag("T");
-		person.setCompanyId(company.getId());
-		s.persist(person);
-						
+		person.setDefaultFlag( "T" );
+		person.setCompanyId( company.getId() );
+		s.persist( person );
+
 		s.flush();
 		s.clear();
-		
-		company = (Company) s.get( Company.class, company.getId() );
+
+		company = ( Company ) s.get( Company.class, company.getId() );
 		assertNotNull( company.getDefaultContactPerson() );
 		assertEquals( person.getId(), company.getDefaultContactPerson().getId() );
 		tx.rollback();
 		s.close();
 	}
 
+	@SkipForDialect(value = { HSQLDialect.class }, comment = "The used join conditions does not work in HSQLDB. See HHH-4497")
 	public void testManyToOneToPkWithOnlyFormula() throws Exception {
 		Session s = openSession();
 		Transaction tx = s.beginTransaction();
-		
+
 		Language language = new Language();
-		language.setCode("EN");
-		language.setName("English");
+		language.setCode( "EN" );
+		language.setName( "English" );
 		s.persist( language );
-		
+
 		Message msg = new Message();
-		msg.setLanguageCode("en");
-		msg.setLanguageName("English");
-		s.persist(msg);
-						
+		msg.setLanguageCode( "en" );
+		msg.setLanguageName( "English" );
+		s.persist( msg );
+
 		s.flush();
 		s.clear();
-		
-		msg = (Message) s.get( Message.class, msg.getId() );
-		assertNotNull( msg.getLanguage());
+
+		msg = ( Message ) s.get( Message.class, msg.getId() );
+		assertNotNull( msg.getLanguage() );
 		assertEquals( "EN", msg.getLanguage().getCode() );
 		tx.rollback();
 		s.close();
 	}
-		
+
 	/**
 	 * @see org.hibernate.test.annotations.TestCase#getMappings()
 	 */
 	protected java.lang.Class<?>[] getMappings() {
-		return new java.lang.Class[]{
+		return new java.lang.Class[] {
 				Menu.class,
 				FoodItem.class,
 				Company.class,



More information about the hibernate-commits mailing list