[hibernate-commits] Hibernate SVN: r10592 - in trunk/Hibernate3/test/org/hibernate/test: . any

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Oct 17 13:25:57 EDT 2006


Author: steve.ebersole at jboss.com
Date: 2006-10-17 13:25:55 -0400 (Tue, 17 Oct 2006)
New Revision: 10592

Added:
   trunk/Hibernate3/test/org/hibernate/test/any/Address.java
   trunk/Hibernate3/test/org/hibernate/test/any/AnyTypeTest.java
   trunk/Hibernate3/test/org/hibernate/test/any/ComplexPropertyValue.java
   trunk/Hibernate3/test/org/hibernate/test/any/Person.hbm.xml
   trunk/Hibernate3/test/org/hibernate/test/any/Person.java
Modified:
   trunk/Hibernate3/test/org/hibernate/test/AllTests.java
   trunk/Hibernate3/test/org/hibernate/test/any/Properties.hbm.xml
Log:
HHH-1663 : <any/> -> mappings during flush

Modified: trunk/Hibernate3/test/org/hibernate/test/AllTests.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/AllTests.java	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/AllTests.java	2006-10-17 17:25:55 UTC (rev 10592)
@@ -131,6 +131,7 @@
 import org.hibernate.test.version.db.DbVersionTest;
 import org.hibernate.test.version.sybase.SybaseTimestampVersioningTest;
 import org.hibernate.test.where.WhereTest;
+import org.hibernate.test.any.AnyTypeTest;
 
 /**
  * @author Gavin King
@@ -291,6 +292,7 @@
 			suite.addTest( AbstractComponentPropertyRefTest.suite() );
 			suite.addTest( AbstractCompositeIdTest.suite() );
 			suite.addTest( UtilSuite.suite() );
+			suite.addTest( AnyTypeTest.suite() );
 
 			return filter( suite );
 			//return suite;

Added: trunk/Hibernate3/test/org/hibernate/test/any/Address.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/any/Address.java	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/any/Address.java	2006-10-17 17:25:55 UTC (rev 10592)
@@ -0,0 +1,31 @@
+package org.hibernate.test.any;
+
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ * todo: describe Address
+ *
+ * @author Steve Ebersole
+ */
+public class Address {
+	private Long id;
+	private Set lines = new HashSet();
+
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Set getLines() {
+		return lines;
+	}
+
+	public void setLines(Set lines) {
+		this.lines = lines;
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/any/AnyTypeTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/any/AnyTypeTest.java	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/any/AnyTypeTest.java	2006-10-17 17:25:55 UTC (rev 10592)
@@ -0,0 +1,58 @@
+package org.hibernate.test.any;
+
+import org.hibernate.test.TestCase;
+import org.hibernate.Session;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * todo: describe AnyTypeTest
+ *
+ * @author Steve Ebersole
+ */
+public class AnyTypeTest extends TestCase {
+	public AnyTypeTest(String name) {
+		super( name );
+	}
+
+	protected String[] getMappings() {
+		return new String[] { "any/Person.hbm.xml" };
+	}
+
+	protected String getCacheConcurrencyStrategy() {
+		// having second level cache causes a condition whereby the original test case would not fail...
+		return null;
+	}
+
+	public static Test suite() {
+		return new TestSuite( AnyTypeTest.class );
+	}
+
+	/**
+	 * Specific test for HHH-1663...
+	 */
+	public void testFlushProcessing() {
+		Session session = openSession();
+		session.beginTransaction();
+		Person person = new Person();
+		Address address = new Address();
+		person.setData( address );
+		session.saveOrUpdate(person);
+		session.saveOrUpdate(address);
+		session.getTransaction().commit();
+		session.close();
+
+		session = openSession();
+		session.beginTransaction();
+        person = (Person) session.load( Person.class, person.getId() );
+        person.setName("makingpersondirty");
+		session.getTransaction().commit();
+		session.close();
+
+		session = openSession();
+		session.beginTransaction();
+		session.delete( person );
+		session.getTransaction().commit();
+		session.close();
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/any/ComplexPropertyValue.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/any/ComplexPropertyValue.java	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/any/ComplexPropertyValue.java	2006-10-17 17:25:55 UTC (rev 10592)
@@ -0,0 +1,47 @@
+package org.hibernate.test.any;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * todo: describe ${NAME}
+ *
+ * @author Steve Ebersole
+ */
+public class ComplexPropertyValue implements PropertyValue {
+	private Long id;
+	private Map subProperties = new HashMap();
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Map getSubProperties() {
+		return subProperties;
+	}
+
+	public void setSubProperties(Map subProperties) {
+		this.subProperties = subProperties;
+	}
+
+	public String asString() {
+		return "complex[" + keyString() + "]";
+	}
+
+	private String keyString() {
+		StringBuffer buff = new StringBuffer();
+		Iterator itr = subProperties.keySet().iterator();
+		while ( itr.hasNext() ) {
+			buff.append( itr.next() );
+			if ( itr.hasNext() ) {
+				buff.append( ", " );
+			}
+		}
+		return buff.toString();
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/any/Person.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/any/Person.hbm.xml	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/any/Person.hbm.xml	2006-10-17 17:25:55 UTC (rev 10592)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.any">
+
+    <class name="Person" table="T_ANY_PERSON">
+        <id name="id" column="ID_">
+            <generator class="increment" />
+        </id>
+        <property name="name" />
+        <any name="data" id-type="long" cascade="none">
+            <meta-value value="A" class="Address"/>
+            <column name="DATATYPE_"/>
+            <column name="DATAID_"/>
+        </any>
+    </class>
+
+    <class name="Address" table="T_ANY_ADDRESS">
+        <id name="id" column="ID_">
+            <generator class="increment" />
+        </id>
+        <set name="lines" table="LINE">
+            <key column="ADDRESS" />
+            <element type="string" />
+        </set>
+    </class>
+
+</hibernate-mapping>

Added: trunk/Hibernate3/test/org/hibernate/test/any/Person.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/any/Person.java	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/any/Person.java	2006-10-17 17:25:55 UTC (rev 10592)
@@ -0,0 +1,37 @@
+package org.hibernate.test.any;
+
+/**
+ * todo: describe Person
+ *
+ * @author Steve Ebersole
+ */
+public class Person {
+	private Long id;
+	private String name;
+	private Object data;
+
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Object getData() {
+		return data;
+	}
+
+	public void setData(Object data) {
+		this.data = data;
+	}
+}

Modified: trunk/Hibernate3/test/org/hibernate/test/any/Properties.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/any/Properties.hbm.xml	2006-10-17 08:57:26 UTC (rev 10591)
+++ trunk/Hibernate3/test/org/hibernate/test/any/Properties.hbm.xml	2006-10-17 17:25:55 UTC (rev 10592)
@@ -13,6 +13,7 @@
         <any name="someSpecificProperty" id-type="long" meta-type="string" cascade="all">
             <meta-value value="I" class="IntegerPropertyValue"/>
             <meta-value value="S" class="StringPropertyValue"/>
+            <meta-value value="C" class="ComplexPropertyValue" />
             <column name="S_S_PROP_TYPE"/>
             <column name="S_S_PROP_ID"/>
         </any>
@@ -42,4 +43,14 @@
         <property name="value" column="VAL" not-null="true" type="integer"/>
     </class>
 
+    <class name="ComplexPropertyValue" table="T_COMPLEX_PROP">
+        <id name="id" column="ID" type="long">
+            <generator class="increment"/>
+        </id>
+        <map name="subProperties" table="T_COMPLEX_SUB_PROPS" lazy="true">
+            <key column="PROP_ID" />
+            <map-key type="string" column="SUB_PROP_NAME" />
+            <element type="string" column="SUB_PROP_VAL" />
+        </map>
+    </class>
 </hibernate-mapping>
\ No newline at end of file




More information about the hibernate-commits mailing list