[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