Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 114045 Details for
Bug 242289
All Existing JPA Tests Need to Migrate Running on Application Servers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
patch for the bug
bug242289_3.patch (text/plain), 102.21 KB, created by
Kevin Yuan
on 2008-10-01 17:12:50 EDT
(
hide
)
Description:
patch for the bug
Filename:
MIME Type:
Creator:
Kevin Yuan
Created:
2008-10-01 17:12:50 EDT
Size:
102.21 KB
patch
obsolete
>Index: jpa/eclipselink.jpa.test/build.xml >=================================================================== >--- jpa/eclipselink.jpa.test/build.xml (revision 2463) >+++ jpa/eclipselink.jpa.test/build.xml (working copy) >@@ -81,24 +81,33 @@ > <contains string="${db.driver}" substring="oracle"/> > </condition> > >- <!-- This checks if the tests are run on WebSphere --> >+ <!-- This checks if the Apllication Server is WebSphere --> > <condition property="is.websphere"> > <contains string="${server.name}" substring="websphere"/> > </condition> > >- <!-- We can't append application name after ${server.url} for WebSphere jndi lookup, so need to differenciate with other servers --> >+ <!-- This checks if the Apllication Server is JBoss --> >+ <condition property="is.jboss"> >+ <contains string="${server.name}" substring="jboss"/> >+ </condition> >+ > <target name="set-app-name"> > <condition property="APP_NAME" value=""> > <contains string="${server.name}" substring="websphere"/> > </condition> > <condition property="APP_NAME" value="${MODEL_NAME}"> >- <contains string="${server.name}" substring="weblogic"/> >+ <not> >+ <isset property="is.websphere"/> >+ </not> > </condition> >- <condition property="APP_NAME" value="${MODEL_NAME}"> >+ >+ <condition property="DS_NAME" value="java:/EclipseLinkDS"> > <contains string="${server.name}" substring="jboss"/> > </condition> >- <condition property="APP_NAME" value="${MODEL_NAME}"> >- <contains string="${server.name}" substring="oc4j"/> >+ <condition property="DS_NAME" value="jdbc/EclipseLinkDS"> >+ <not> >+ <isset property="is.jboss"/> >+ </not> > </condition> > </target> > >@@ -935,20 +944,9 @@ > includes="${MODEL_DIR2}/*.java"> > <classpath refid="compile.path"/> > </javac> >- <!-- Copy and replace platform in persistence.xml. --> >- <!-- JBoss has its own persistence.xml --> >- <condition property="SERVER_NAME" value="${server.name}"> >- <contains string="${server.name}" substring="jboss"/> >- </condition> > >- <condition property="SERVER_NAME" value="server"> >- <not> >- <contains string="${server.name}" substring="jboss"/> >- </not> >- </condition> >- > <copy todir="${eclipselink.jpa.test}/stage/META-INF"> >- <fileset dir="${eclipselink.jpa.test}/resource/${SERVER_NAME}"> >+ <fileset dir="${eclipselink.jpa.test}/resource/server"> > <include name="persistence.xml"/> > </fileset> > </copy> >@@ -957,10 +955,12 @@ > <include name="ejb-jar.xml"/> > </fileset> > </copy> >+ > <!--SessionBean Test need it's own ejb-jar.xml, which including ejb-def for the sessionbean --> >+ <!--DDLGeneration Test need it's own persistence.xml and mapping xml files --> > <copy todir="${eclipselink.jpa.test}/stage/META-INF" overwrite="true" failonerror="false"> > <fileset dir="${eclipselink.jpa.test}/resource/${MODEL_NAME}/server/"> >- <include name="ejb-jar.xml"/> >+ <include name="*.xml"/> > </fileset> > </copy> > <replace dir="${eclipselink.jpa.test}/stage/META-INF" token='%%server-platform%%' value="${server.platform}"> >@@ -969,6 +969,10 @@ > <replace dir="${eclipselink.jpa.test}/stage/META-INF" token='%%default%%' value="${PERSISTENCE_UNIT_NAME}"> > <include name="*.xml"/> > </replace> >+ <replace dir="${eclipselink.jpa.test}/stage/META-INF" token='%%data-source-name%%' value="${DS_NAME}"> >+ <include name="*.xml"/> >+ </replace> >+ > <!-- Create ejb jar. --> > <jar destfile="${eclipselink.jpa.test}/${build.dir}/${MODEL_NAME}_ejb.jar" basedir="stage"/> > <antcall target="create-ejb-stubs" inheritRefs="true"/> >@@ -997,7 +1001,7 @@ > <target name="server-build" depends="server-build-client-jar,server-build-ejb-jar,server-build-ear"/> > > <!-- Build, deploy and run a test suite on the server. --> >- <target name="server-run-all" depends="detect-os"> >+ <target name="server-run-all" depends="detect-os,set-app-name"> > <antcall target="server-build" inheritRefs="true"/> > <antcall target="server-deploy" inheritRefs="true"> > <param name="ear.name" value="${EAR_NAME}.ear"/> >@@ -1010,7 +1014,7 @@ > </target> > > <!-- Run an ear on the server. --> >- <target name="server-run-test" depends="config-trunk, config-flat, set-app-name"> >+ <target name="server-run-test" depends="config-trunk, config-flat"> > <property file="${user.home}/${server.name}.properties"/> > <property file="${eclipselink.jpa.test}/${server.name}.properties"/> > <path id="run.path"> >@@ -1035,7 +1039,6 @@ > </target> > > <!-- Server Tests --> >- > <!-- Run the LRG --> > <target name="server-test"> > <antcall target="server-test-lrg" inheritRefs="true"/> >@@ -1045,8 +1048,14 @@ > <target name="server-test-lrg" depends="clean-test"> > <antcall target="server-test-sessionbean" inheritRefs="true"/> > <antcall target="server-test-fieldaccess-advanced" inheritRefs="true"/> >+ <antcall target="server-test-advanced" inheritRefs="true"/> > <antcall target="server-test-datatypes" inheritRefs="true"/> > <antcall target="server-test-datetime" inheritRefs="true"/> >+ <antcall target="server-test-ddlgeneration" inheritRefs="true"/> >+ <antcall target="server-test-inheritance" inheritRefs="true"/> >+ <antcall target="server-test-inherited" inheritRefs="true"/> >+ <antcall target="server-test-lob" inheritRefs="true"/> >+ <antcall target="server-test-relationships" inheritRefs="true"/> > <antcall target="generate-report" inheritRefs="true"/> > </target> > >@@ -1075,18 +1084,17 @@ > </antcall> > </target> > >- <!-- Not working yet. --> >- <!--target name="server-test-advanced"> >+ <target name="server-test-advanced"> > <antcall target="server-run-all" inheritRefs="true"> > <param name="PERSISTENCE_UNIT_NAME" value="default"/> > <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/advanced"/> >- <param name="MODEL_NAME" value="eclipselink-annotation-model"/> >+ <param name="MODEL_NAME" value="eclipselink-advanced-model"/> > <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/advanced"/> > <param name="TEST_NAME" value="eclipselink-advanced-model"/> > <param name="EAR_NAME" value="eclipselink-advanced-model"/> >- <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.advanced.AdvancedTestSuite"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.advanced.EntityManagerJUnitTestSuite"/> > </antcall> >- </target--> >+ </target> > > <target name="server-test-datatypes"> > <antcall target="server-run-all" inheritRefs="true"> >@@ -1112,4 +1120,64 @@ > </antcall> > </target> > >+ <target name="server-test-ddlgeneration"> >+ <antcall target="server-run-all" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="ddlGeneration"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/ddlgeneration"/> >+ <param name="MODEL_NAME" value="eclipselink-ddl-generation-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/ddlgeneration"/> >+ <param name="TEST_NAME" value="eclipselink-ddl-generation-model"/> >+ <param name="EAR_NAME" value="eclipselink-ddl-generation-model"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.ddlgeneration.DDLGenerationJUnitTestSuite"/> >+ </antcall> >+ </target> >+ >+ <target name="server-test-inheritance"> >+ <antcall target="server-run-all" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="default"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/inheritance"/> >+ <param name="MODEL_NAME" value="eclipselink-inheritance-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/inheritance"/> >+ <param name="TEST_NAME" value="eclipselink-inheritance-model"/> >+ <param name="EAR_NAME" value="eclipselink-inheritance-model"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.inheritance.ServerTestSuite"/> >+ </antcall> >+ </target> >+ >+ <target name="server-test-inherited"> >+ <antcall target="server-run-all" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="default"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/inherited"/> >+ <param name="MODEL_NAME" value="eclipselink-inherited-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/inherited"/> >+ <param name="TEST_NAME" value="eclipselink-inherited-model"/> >+ <param name="EAR_NAME" value="eclipselink-inherited-model"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.inherited.ServerTestSuite"/> >+ </antcall> >+ </target> >+ >+ <target name="server-test-lob"> >+ <antcall target="server-run-all" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="default"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/lob"/> >+ <param name="MODEL_NAME" value="eclipselink-lob-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/lob"/> >+ <param name="TEST_NAME" value="eclipselink-lob-model"/> >+ <param name="EAR_NAME" value="eclipselink-lob-model"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.lob.LobJUnitTestCase"/> >+ </antcall> >+ </target> >+ >+ <target name="server-test-relationships"> >+ <antcall target="server-run-all" inheritRefs="true"> >+ <param name="PERSISTENCE_UNIT_NAME" value="default"/> >+ <param name="MODEL_DIR" value="org/eclipse/persistence/testing/models/jpa/relationships"/> >+ <param name="MODEL_NAME" value="eclipselink-relationships-model"/> >+ <param name="TEST_DIR" value="org/eclipse/persistence/testing/tests/jpa/relationships"/> >+ <param name="TEST_NAME" value="eclipselink-relationships-model"/> >+ <param name="EAR_NAME" value="eclipselink-relationships-model"/> >+ <param name="TEST_SUITE" value="org.eclipse.persistence.testing.tests.jpa.relationships.ServerTestSuite"/> >+ </antcall> >+ </target> >+ > </project> >Index: jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/persistence.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/persistence.xml (revision 0) >+++ jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/persistence.xml (revision 0) >@@ -0,0 +1,19 @@ >+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0"> >+ <persistence-unit name="%%default%%"> >+ <!-- This persistence unit is configured to use >+ name="eclipselink.ddl-generation" value="drop-and-create-tables", >+ any models that do not use a TableCreator class should be placed >+ here --> >+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> >+ <jta-data-source>%%data-source-name%%</jta-data-source> >+ >+ <!--mapping-file>META-INF/ddl-generation-model.xml</mapping-file--> >+ >+ <properties> >+ <property name="eclipselink.target-server" value="%%server-platform%%"/> >+ <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> >+ </properties> >+ </persistence-unit> >+</persistence> >+ >+ >Index: jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/ddl-generation-model.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/ddl-generation-model.xml (revision 0) >+++ jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/ddl-generation-model.xml (revision 0) >@@ -0,0 +1,29 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"> >+ <package>org.eclipse.persistence.testing.models.jpa.ddlgeneration</package> >+ >+ <entity class="CKeyEntityA"/> >+ <entity class="CKeyEntityB"/> >+ <entity class="CKeyEntityB2"/> >+ <entity class="CKeyEntityC"/> >+ >+ <entity class="UniqueConstraintsEntity1"/> >+ <entity class="UniqueConstraintsEntity2"> >+ <table name="DDL_UCENTITY2"> >+ <unique-constraint> >+ <column-name>column2</column-name> >+ </unique-constraint> >+ <unique-constraint> >+ <column-name>column31</column-name> >+ <column-name>column32</column-name> >+ </unique-constraint> >+ </table> >+ <attributes> >+ <basic name="column1"><column unique="true" nullable="false"/></basic> >+ <basic name="column2"><column nullable="false"/></basic> >+ <basic name="column31"><column nullable="false"/></basic> >+ <basic name="column32"><column nullable="false"/></basic> >+ </attributes> >+ </entity> >+ >+</entity-mappings> >Index: jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/ddl-generation-model.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/ddl-generation-model.xml (revision 0) >+++ jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/ddl-generation-model.xml (revision 0) >@@ -0,0 +1,29 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"> >+ <package>org.eclipse.persistence.testing.models.jpa.ddlgeneration</package> >+ >+ <entity class="CKeyEntityA"/> >+ <entity class="CKeyEntityB"/> >+ <entity class="CKeyEntityB2"/> >+ <entity class="CKeyEntityC"/> >+ >+ <entity class="UniqueConstraintsEntity1"/> >+ <entity class="UniqueConstraintsEntity2"> >+ <table name="DDL_UCENTITY2"> >+ <unique-constraint> >+ <column-name>column2</column-name> >+ </unique-constraint> >+ <unique-constraint> >+ <column-name>column31</column-name> >+ <column-name>column32</column-name> >+ </unique-constraint> >+ </table> >+ <attributes> >+ <basic name="column1"><column unique="true" nullable="false"/></basic> >+ <basic name="column2"><column nullable="false"/></basic> >+ <basic name="column31"><column nullable="false"/></basic> >+ <basic name="column32"><column nullable="false"/></basic> >+ </attributes> >+ </entity> >+ >+</entity-mappings> >Index: jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/persistence.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/persistence.xml (revision 0) >+++ jpa/eclipselink.jpa.test/resource/eclipselink-ddl-generation-model/server/persistence.xml (revision 0) >@@ -0,0 +1,19 @@ >+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0"> >+ <persistence-unit name="%%default%%"> >+ <!-- This persistence unit is configured to use >+ name="eclipselink.ddl-generation" value="drop-and-create-tables", >+ any models that do not use a TableCreator class should be placed >+ here --> >+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> >+ <jta-data-source>%%data-source-name%%</jta-data-source> >+ >+ <!--mapping-file>META-INF/ddl-generation-model.xml</mapping-file--> >+ >+ <properties> >+ <property name="eclipselink.target-server" value="%%server-platform%%"/> >+ <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> >+ </properties> >+ </persistence-unit> >+</persistence> >+ >+ >Index: jpa/eclipselink.jpa.test/resource/eclipselink-inheritance-model/server/orm.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/eclipselink-inheritance-model/server/orm.xml (revision 0) >+++ jpa/eclipselink.jpa.test/resource/eclipselink-inheritance-model/server/orm.xml (revision 0) >@@ -0,0 +1,15 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"> >+ <description>Mapping Document containing persistence unit metadata. >+ Do not provide any class specific mapping information here.</description> >+ <persistence-unit-metadata> >+ <persistence-unit-defaults> >+ <entity-listeners> >+ <entity-listener class="org.eclipse.persistence.testing.models.jpa.xml.inheritance.listeners.DefaultListener"> >+ <pre-persist method-name="prePersist"/> >+ <post-load method-name="postLoad"/> >+ </entity-listener> >+ </entity-listeners> >+ </persistence-unit-defaults> >+ </persistence-unit-metadata> >+</entity-mappings> >Index: jpa/eclipselink.jpa.test/resource/eclipselink-inheritance-model/server/orm.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/eclipselink-inheritance-model/server/orm.xml (revision 0) >+++ jpa/eclipselink.jpa.test/resource/eclipselink-inheritance-model/server/orm.xml (revision 0) >@@ -0,0 +1,15 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"> >+ <description>Mapping Document containing persistence unit metadata. >+ Do not provide any class specific mapping information here.</description> >+ <persistence-unit-metadata> >+ <persistence-unit-defaults> >+ <entity-listeners> >+ <entity-listener class="org.eclipse.persistence.testing.models.jpa.xml.inheritance.listeners.DefaultListener"> >+ <pre-persist method-name="prePersist"/> >+ <post-load method-name="postLoad"/> >+ </entity-listener> >+ </entity-listeners> >+ </persistence-unit-defaults> >+ </persistence-unit-metadata> >+</entity-mappings> >Index: jpa/eclipselink.jpa.test/resource/server/persistence.xml >=================================================================== >--- jpa/eclipselink.jpa.test/resource/server/persistence.xml (revision 2463) >+++ jpa/eclipselink.jpa.test/resource/server/persistence.xml (working copy) >@@ -1,7 +1,7 @@ > <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0"> > <persistence-unit name="%%default%%"> > <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> >- <jta-data-source>jdbc/EclipseLinkDS</jta-data-source> >+ <jta-data-source>%%data-source-name%%</jta-data-source> > <properties> > <property name="eclipselink.target-server" value="%%server-platform%%"/> > <property name="eclipselink.validate-existence" value="true"/> >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/junit/JUnitTestCase.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/junit/JUnitTestCase.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/junit/JUnitTestCase.java (working copy) >@@ -173,6 +173,18 @@ > return entityManager.getTransaction().isActive(); > } > } >+ >+ /** >+ * Return if the transaction is roll back only. >+ * This allows the same code to be used on the server where JTA is used. >+ */ >+ public boolean getRollbackOnly(EntityManager entityManager) { >+ if (isOnServer()) { >+ return getServerPlatform().getRollbackOnly(); >+ } else { >+ return entityManager.getTransaction().getRollbackOnly(); >+ } >+ } > > /** > * Begin a transaction on the entity manager. >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/server/JEEPlatform.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/server/JEEPlatform.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/server/JEEPlatform.java (working copy) >@@ -38,13 +38,24 @@ > */ > public boolean isTransactionActive() { > try { >- return getUserTransaction().getStatus() == Status.STATUS_ACTIVE; >+ return getUserTransaction().getStatus() != Status.STATUS_NO_TRANSACTION; > } catch (Exception exception) { > throw new RuntimeException(exception); > } > } >- >+ > /** >+ * Return if the JTA transaction is roll back only. >+ */ >+ public boolean getRollbackOnly() { >+ try { >+ return getUserTransaction().getStatus() != Status.STATUS_ACTIVE; >+ } catch (Exception exception) { >+ throw new RuntimeException(exception); >+ } >+ } >+ >+ /** > * Start a new JTA transaction. > */ > public void beginTransaction() { >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/server/ServerPlatform.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/server/ServerPlatform.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/framework/server/ServerPlatform.java (working copy) >@@ -21,8 +21,13 @@ > * Return if the JTA transaction is active. > */ > boolean isTransactionActive(); >- >+ > /** >+ * Return if the JTA transaction is roll back only. >+ */ >+ boolean getRollbackOnly(); >+ >+ /** > * Start a new JTS transaction. > */ > void beginTransaction(); >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/advanced/EntityManagerJUnitTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/advanced/EntityManagerJUnitTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/advanced/EntityManagerJUnitTestSuite.java (working copy) >@@ -94,7 +94,7 @@ > > /** The field length for the firstname */ > public static final int MAX_FIRST_NAME_FIELD_LENGTH = 255; >- >+ > public EntityManagerJUnitTestSuite() { > super(); > } >@@ -262,8 +262,8 @@ > * roll-back exception handling code for an SQLException. > */ > public void testForceSQLExceptionFor219097() { >- boolean exceptionThrown = false; >- // Set an immutable properties Map on the em to test addition of properties to this map in the roll-back exception handler >+ boolean exceptionThrown = false; >+ // Set an immutable properties Map on the em to test addition of properties to this map in the roll-back exception handler > EntityManager em = createEntityManager(Collections.emptyMap()); > beginTransaction(em); > >@@ -277,26 +277,26 @@ > */ > StringBuffer firstName = new StringBuffer("firstName_maxfieldLength_"); > for(int i=0; i<MAX_FIRST_NAME_FIELD_LENGTH + 100; i++) { >- firstName.append("0"); >+ firstName.append("0"); > } > emp.setFirstName(firstName.toString()); > em.persist(emp); > > try { >- commitTransaction(em); >+ commitTransaction(em); > } catch (Exception e) { >- Throwable cause = e.getCause(); >- if(cause instanceof UnsupportedOperationException) { >- exceptionThrown = true; >- fail(cause.getClass() + " Exception was thrown in error instead of expected SQLException."); >- } else { >- exceptionThrown = true; >- } >+ Throwable cause = e.getCause(); >+ if(cause instanceof UnsupportedOperationException) { >+ exceptionThrown = true; >+ fail(cause.getClass() + " Exception was thrown in error instead of expected SQLException."); >+ } else { >+ exceptionThrown = true; >+ } > } finally { >- closeEntityManager(em); >+ closeEntityManager(em); > } > if(!exceptionThrown) { >- fail("An expected SQLException was not thrown."); >+ fail("An expected SQLException was not thrown."); > } > } > >@@ -377,41 +377,40 @@ > throw new Exception("This test should use non-isolated cache setting class descriptor for test."); > } > >- em1.getTransaction().begin(); >+ beginTransaction(em1); > em1.persist(address); >- em1.getTransaction().commit(); >+ commitTransaction(em1); > > //Cache the Address > em1 = createEntityManager(); >- em1.getTransaction().begin(); >+ beginTransaction(em1); > address = em1.find(Address.class, address.getId()); > > // Delete Address outside of JPA so that the object still stored in the cache. > em2 = createEntityManager(); >- em2.getTransaction().begin(); >+ beginTransaction(em2); > em2.createNativeQuery("DELETE FROM CMP3_ADDRESS where address_id = ?1").setParameter(1, address.getId()).executeUpdate(); >- em2.getTransaction().commit(); >+ commitTransaction(em2); > > //Call refresh to invalidate the object > em1.refresh(address); > }catch (Exception e){ > //expected exception > } finally{ >- if (em1.getTransaction().isActive()) { >- em1.getTransaction().rollback(); >+ if (isTransactionActive(em1)) { >+ rollbackTransaction(em1); > } > } > > //Verify >- em1.getTransaction().begin(); >+ beginTransaction(em1); > address=em1.find(Address.class, address.getId()); >- em1.getTransaction().commit(); >+ commitTransaction(em1); > > assertNull("The deleted object is still valid in share cache", address); > > } > >- > public void testCacheUsage() { > EntityManager em = createEntityManager(); > Employee emp = new Employee(); >@@ -427,13 +426,13 @@ > } > throw ex; > } >- clearCache(); >+ clearCache(); > // Create new entity manager to avoid extended uow of work cache hits. > em = createEntityManager(); > beginTransaction(em); > List result = em.createQuery("SELECT OBJECT(e) FROM Employee e").getResultList(); > commitTransaction(em); >- Object obj = ((org.eclipse.persistence.jpa.JpaEntityManager)em).getServerSession().getIdentityMapAccessor().getFromIdentityMap(result.get(0)); >+ Object obj = getServerSession().getIdentityMapAccessor().getFromIdentityMap(result.get(0)); > assertTrue("Failed to load the object into the shared cache when there were no changes in the UOW", obj != null); > try{ > beginTransaction(em); >@@ -639,10 +638,13 @@ > em.flush(); > }catch (Exception ex){ > em.clear(); //prevent the flush again >- String eName = (String)em.createQuery("SELECT e.firstName FROM Employee e where e.id = " + emp2.getId()).getSingleResult(); >- assertTrue("Failed to keep txn open for set RollbackOnly", eName.equals(newName)); >+ // Query may fail in server as connection marked for rollback. >+ try { >+ String eName = (String)em.createQuery("SELECT e.firstName FROM Employee e where e.id = " + emp2.getId()).getSingleResult(); >+ assertTrue("Failed to keep txn open for set RollbackOnly", eName.equals(newName)); >+ } catch (Exception ignore) {} > } >- try{ >+ try { > if (isOnServer()) { > assertTrue("Failed to mark txn rollback only", !isTransactionActive(em)); > } else { >@@ -1465,43 +1467,44 @@ > } > clearCache(); > EntityManager localEm = createEntityManager(); >- localEm.getTransaction().begin(); >+ beginTransaction(localEm); > Employee emp = null; > String originalName = ""; > boolean cleared, updated, reset = false; > try{ >- Query query = localEm.createQuery("Select e from Employee e where e.firstName is not null"); >+ Query query = localEm.createQuery("Select e FROM Employee e where e.firstName is not null"); > emp = (Employee)query.getResultList().get(0); > originalName = emp.getFirstName(); > emp.setFirstName("Bobster"); > localEm.flush(); > localEm.clear(); > //this test is testing the cache not the database >- localEm.getTransaction().commit(); >+ commitTransaction(localEm); > cleared = !localEm.contains(emp); > emp = localEm.find(Employee.class, emp.getId()); > updated = emp.getFirstName().equals("Bobster"); >- localEm.close(); >- }catch (RuntimeException ex){ >- localEm.getTransaction().rollback(); >- localEm.close(); >- throw ex; >- }finally{ >+ closeEntityManager(localEm); >+ } catch (RuntimeException exception) { >+ if (isTransactionActive(localEm)) { >+ rollbackTransaction(localEm); >+ } >+ closeEntityManager(localEm); >+ throw exception; >+ } finally { > //now clean up > localEm = createEntityManager(); >- localEm.getTransaction().begin(); >+ beginTransaction(localEm); > emp = localEm.find(Employee.class, emp.getId()); > emp.setFirstName(originalName); >- localEm.getTransaction().commit(); >+ commitTransaction(localEm); > emp = localEm.find(Employee.class, emp.getId()); > reset = emp.getFirstName().equals(originalName); >- localEm.close(); >+ closeEntityManager(localEm); > } > assertTrue("EntityManager not properly cleared", cleared); > assertTrue("flushed data not merged", updated); > assertTrue("unable to reset", reset); >- } >- >+ } > // gf3596: transactions never release memory until commit, so JVM eventually crashes > // The test verifies that there's no stale data read after transaction. > // Because there were no TopLinkProperties.FLUSH_CLEAR_CACHE property passed >@@ -1762,12 +1765,12 @@ > List<Employee> list = em.createQuery("Select e from Employee e where e.firstName = '"+firstName+"'").getResultList(); > Iterator<Employee> i = list.iterator(); > while (i.hasNext()){ >- Employee e = i.next(); >- if (e.getManager() != null){ >- e.getManager().removeManagedEmployee(e); >- e.setManager(null); >- } >- em.remove(e); >+ Employee e = i.next(); >+ if (e.getManager() != null){ >+ e.getManager().removeManagedEmployee(e); >+ e.setManager(null); >+ } >+ em.remove(e); > } > commitTransaction(em); > } catch (RuntimeException ex){ >@@ -2399,7 +2402,7 @@ > employeeFoundAfterTransaction = em2.find(Employee.class, employeeUOW.getId()); > assertTrue("employeeFoundAfterTransaction().getLastName()=="+ employeeFoundAfterTransaction.getLastName() +"; " + lastNameNew + " was expected", employeeFoundAfterTransaction.getLastName().equals(lastNameNew)); > assertTrue("employeeFoundAfterTransaction().getSalary()=="+ employeeFoundAfterTransaction.getSalary() +"; " + salaryNew + " was expected", employeeFoundAfterTransaction.getSalary() == salaryNew); >- em2.close(); >+ //em2.close(); > > // clean up > beginTransaction(em); >@@ -2597,6 +2600,10 @@ > > public void testEMFWrapValidationException() > { >+ // Comment out because it's not relevant for getDatabaseProperties() when running in server >+ if (isOnServer()) { >+ return; >+ } > EntityManagerFactory factory = null; > try { > factory = Persistence.createEntityManagerFactory("broken-PU", JUnitTestCaseHelper.getDatabaseProperties()); >@@ -2615,6 +2622,10 @@ > */ > public void testEMDefaultTxType() > { >+ // Comment out because it's not relevant for getDatabaseProperties() when running in server >+ if (isOnServer()) { >+ return; >+ } > EntityManagerFactory factory = null; > try { > factory = Persistence.createEntityManagerFactory("default1", JUnitTestCaseHelper.getDatabaseProperties()); >@@ -2810,16 +2821,16 @@ > > // these properties were set in persistence unit - the values should be the same as in persistence.xml > /* >- <property name="eclipselink.session-name" value="default-session"/> >- <property name="eclipselink.cache.size.default" value="500"/> >- <property name="eclipselink.cache.size.Employee" value="550"/> >- <property name="eclipselink.cache.size.org.eclipse.persistence.testing.models.jpa.advanced.Address" value="555"/> >- <property name="eclipselink.cache.type.default" value="Full"/> >- <property name="eclipselink.cache.type.Employee" value="Weak"/> >- <property name="eclipselink.cache.type.org.eclipse.persistence.testing.models.jpa.advanced.Address" value="HardWeak"/> >- <property name="eclipselink.session.customizer" value="org.eclipse.persistence.testing.models.jpa.advanced.Customizer"/> >- <property name="eclipselink.descriptor.customizer.Employee" value="org.eclipse.persistence.testing.models.jpa.advanced.Customizer"/> >- <property name="eclipselink.descriptor.customizer.org.eclipse.persistence.testing.models.jpa.advanced.Address" value="org.eclipse.persistence.testing.models.jpa.advanced.Customizer"/> >+ <property name="eclipselink.session-name" value="default-session"/> >+ <property name="eclipselink.cache.size.default" value="500"/> >+ <property name="eclipselink.cache.size.Employee" value="550"/> >+ <property name="eclipselink.cache.size.org.eclipse.persistence.testing.models.jpa.advanced.Address" value="555"/> >+ <property name="eclipselink.cache.type.default" value="Full"/> >+ <property name="eclipselink.cache.type.Employee" value="Weak"/> >+ <property name="eclipselink.cache.type.org.eclipse.persistence.testing.models.jpa.advanced.Address" value="HardWeak"/> >+ <property name="eclipselink.session.customizer" value="org.eclipse.persistence.testing.models.jpa.advanced.Customizer"/> >+ <property name="eclipselink.descriptor.customizer.Employee" value="org.eclipse.persistence.testing.models.jpa.advanced.Customizer"/> >+ <property name="eclipselink.descriptor.customizer.org.eclipse.persistence.testing.models.jpa.advanced.Address" value="org.eclipse.persistence.testing.models.jpa.advanced.Customizer"/> > */ > > String sessionName = ss.getName(); >@@ -2893,6 +2904,10 @@ > } > > public void testParallelMultipleFactories() { >+ if (isOnServer()) { >+ // Cannot connect locally on server. >+ return; >+ } > EntityManagerFactory factory1 = Persistence.createEntityManagerFactory("default", JUnitTestCaseHelper.getDatabaseProperties()); > factory1.createEntityManager(); > EntityManagerFactory factory2 = Persistence.createEntityManagerFactory("default", JUnitTestCaseHelper.getDatabaseProperties()); >@@ -2920,10 +2935,10 @@ > } > > public void testQueryHints() { >- EntityManager em = createEntityManager(); >+ EntityManager em = getEntityManagerFactory().createEntityManager(); > Query query = em.createQuery("SELECT OBJECT(e) FROM Employee e WHERE e.firstName = 'testQueryHints'"); > ObjectLevelReadQuery olrQuery = (ObjectLevelReadQuery)((EJBQueryImpl)query).getDatabaseQuery(); >- >+ > // binding > // original state = default state > assertTrue(olrQuery.shouldIgnoreBindAllParameters()); >@@ -3073,7 +3088,8 @@ > commitTransaction(em); > em.clear(); > >- org.eclipse.persistence.jpa.JpaQuery query = (org.eclipse.persistence.jpa.JpaQuery)em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); >+ //org.eclipse.persistence.jpa.JpaQuery query = (org.eclipse.persistence.jpa.JpaQuery)em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); >+ org.eclipse.persistence.jpa.JpaQuery query = (org.eclipse.persistence.jpa.JpaQuery)getEntityManagerFactory().createEntityManager().createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.BATCH, "e.phoneNumbers"); > query.setHint(QueryHints.BATCH, "e.manager.phoneNumbers"); > >@@ -3159,7 +3175,8 @@ > commitTransaction(em); > em.clear(); > >- org.eclipse.persistence.jpa.JpaQuery query = (org.eclipse.persistence.jpa.JpaQuery)em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); >+ //org.eclipse.persistence.jpa.JpaQuery query = (org.eclipse.persistence.jpa.JpaQuery)em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); >+ org.eclipse.persistence.jpa.JpaQuery query = (org.eclipse.persistence.jpa.JpaQuery)getEntityManagerFactory().createEntityManager().createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.FETCH, "e.manager"); > ReadAllQuery raq = (ReadAllQuery)query.getDatabaseQuery(); > List expressions = raq.getJoinedAttributeExpressions(); >@@ -3195,6 +3212,7 @@ > try{ > Query query = em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.BATCH, "e"); >+ query.getResultList(); > } catch (QueryException exc){ > exception = exc; > } >@@ -3204,6 +3222,7 @@ > try{ > Query query = em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.BATCH, "e.abcdef"); >+ query.getResultList(); > } catch (QueryException exc){ > exception = exc; > } >@@ -3214,6 +3233,7 @@ > try{ > Query query = em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.BATCH, "e.firstName"); >+ query.getResultList(); > } catch (QueryException exc){ > exception = exc; > } >@@ -3224,6 +3244,7 @@ > try{ > Query query = em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.FETCH, "e"); >+ query.getResultList(); > } catch (QueryException exc){ > exception = exc; > } >@@ -3234,6 +3255,7 @@ > try{ > Query query = em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.FETCH, "e.abcdef"); >+ query.getResultList(); > } catch (QueryException exc){ > exception = exc; > } >@@ -3244,6 +3266,7 @@ > try{ > Query query = em.createQuery("SELECT e FROM Employee e WHERE e.lastName = 'Malone' order by e.firstName"); > query.setHint(QueryHints.FETCH, "e.firstName"); >+ query.getResultList(); > } catch (QueryException exc){ > exception = exc; > } >@@ -3364,7 +3387,7 @@ > Employee emp = new Employee(); > emp.setFirstName("Owen"); > emp.setLastName("Hargreaves"); >- emp.setId(40); >+ emp.setId(40); > Address address = new Address(); > address.setCity("Munich"); > emp.setAddress(address); >@@ -3413,7 +3436,7 @@ > //test for bug 5170395: GET THE SEQUENCING EXCEPTION WHEN RUNNING FOR THE FIRST TIME ON A CLEAR SCHEMA > public void testSequenceObjectDefinition() { > EntityManager em = createEntityManager(); >- ServerSession ss = ((org.eclipse.persistence.internal.jpa.EntityManagerImpl)em).getServerSession(); >+ ServerSession ss = getServerSession(); > if(!ss.getLogin().getPlatform().supportsSequenceObjects()) { > // platform that supports sequence objects is required for this test > closeEntityManager(em); >@@ -3461,8 +3484,8 @@ > // Step 1 - read a department and clear the cache. > clearCache(); > EntityManager em = createEntityManager(); >- EJBQueryImpl query = (EJBQueryImpl) em.createNamedQuery("findAllSQLDepartments"); >- Collection departments = query.getResultCollection(); >+ Query query = em.createNamedQuery("findAllSQLDepartments"); >+ Collection departments = query.getResultList(); > > Department detachedDepartment; > >@@ -3489,14 +3512,14 @@ > Employee emp = new Employee(); > emp.setFirstName("Crazy"); > emp.setLastName("Kid"); >- emp.setId(41); >+ emp.setId(41); > emp.setDepartment(detachedDepartment); > > em.persist(emp); > commitTransaction(em); > > try { >- ((EJBQueryImpl) em.createNamedQuery("findAllSQLDepartments")).getResultCollection(); >+ em.createNamedQuery("findAllSQLDepartments").getResultList(); > } catch (NullPointerException e) { > assertTrue("The detached department caused a null pointer on the query execution.", false); > } >@@ -3506,10 +3529,10 @@ > > //bug gf830 - attempting to merge a removed entity should throw an IllegalArgumentException > public void testMergeRemovedObject() { >- //create an Employee >+ //create an Employee > Employee emp = new Employee(); > emp.setFirstName("testMergeRemovedObjectEmployee"); >- emp.setId(42); >+ emp.setId(42); > > //persist the Employee > EntityManager em = createEntityManager(); >@@ -3527,17 +3550,17 @@ > beginTransaction(em); > em.remove(em.find(Employee.class, emp.getId())); //attempt to remove the Employee > try{ >- em.merge(emp); //then attempt to merge the Employee >+ em.merge(emp); //then attempt to merge the Employee > fail("No exception thrown when merging a removed entity is attempted."); > }catch (IllegalArgumentException iae){ >- //expected >+ //expected > }catch (Exception e) { >- fail("Wrong exception type thrown: " + e.getClass()); >+ fail("Wrong exception type thrown: " + e.getClass()); > }finally { > rollbackTransaction(em); > > //clean up - ensure removal of employee >- beginTransaction(em); >+ beginTransaction(em); > em.remove(em.find(Employee.class, emp.getId())); > commitTransaction(em); > closeEntityManager(em); >@@ -3546,7 +3569,7 @@ > > //bug6167431: tests calling merge on a new object puts it in the cache, and that all new objects in the tree get IDs generated > public void testMergeNewObject() { >- //create an Employee >+ //create an Employee > Employee emp = new Employee(); > emp.setFirstName("testMergeNewObjectEmployee"); > emp.setAddress(new Address("45 O'Connor", "Ottawa", "Ont", "Canada", "K1P1A4")); >@@ -3558,7 +3581,7 @@ > Employee managedEmp = em.merge(emp); > this.assertNotNull("merged Employee doesn't have its ID generated", managedEmp.getId()); > this.assertNotNull("merged Employee cannot be found using find", em.find(Employee.class, managedEmp.getId())); >- //this won't work till bug:6193761 is fixed >+ //this won't work till bug:6193761 is fixed > //this.assertTrue("referenced Address doesn't have its ID generated", managedEmp.getAddress().getId()!=0); > }finally { > if (isTransactionActive(em)){ >@@ -3611,12 +3634,13 @@ > commitTransaction(em); > id = emp.getId(); > beginTransaction(em); >+ emp = em.find(Employee.class, emp.getId()); > em.remove(emp); > commitTransaction(em); > closeEntityManager(em); > } > >- //create two Employees: >+ //create two Employees: > String firstName = "testMergeNewObjectEmployee3"; > Employee manager = new Employee(); > manager.setFirstName(firstName); >@@ -3650,11 +3674,11 @@ > EntityManager em = createEntityManager(); > beginTransaction(em); > try { >- em.merge(null); >+ em.merge(null); > }catch (IllegalArgumentException iae){ >- return; >+ return; > }catch (Exception e) { >- fail("Wrong exception type thrown: " + e.getClass()); >+ fail("Wrong exception type thrown: " + e.getClass()); > }finally { > rollbackTransaction(em); > closeEntityManager(em); >@@ -3667,11 +3691,11 @@ > EntityManager em = createEntityManager(); > beginTransaction(em); > try { >- em.persist(null); >+ em.persist(null); > }catch (IllegalArgumentException iae){ >- return; >+ return; > }catch (Exception e) { >- fail("Wrong exception type thrown: " + e.getClass()); >+ fail("Wrong exception type thrown: " + e.getClass()); > }finally { > rollbackTransaction(em); > closeEntityManager(em); >@@ -3684,11 +3708,11 @@ > EntityManager em = createEntityManager(); > beginTransaction(em); > try { >- em.contains(null); >+ em.contains(null); > }catch (IllegalArgumentException iae){ >- return; >+ return; > }catch (Exception e) { >- fail("Wrong exception type thrown: " + e.getClass()); >+ fail("Wrong exception type thrown: " + e.getClass()); > }finally { > rollbackTransaction(em); > closeEntityManager(em); >@@ -3696,16 +3720,16 @@ > fail("No exception thrown when entityManager.contains(null) attempted."); > } > >- //bug gf732 - removing null entity should throw an IllegalArgumentException >+ //bug gf732 - removing null entity should throw an IllegalArgumentException > public void testRemoveNull(){ > EntityManager em = createEntityManager(); > beginTransaction(em); > try { >- em.remove(null); >+ em.remove(null); > }catch (IllegalArgumentException iae){ >- return; >+ return; > }catch (Exception e) { >- fail("Wrong exception type thrown: " + e.getClass()); >+ fail("Wrong exception type thrown: " + e.getClass()); > }finally { > rollbackTransaction(em); > closeEntityManager(em); >@@ -3779,24 +3803,24 @@ > rollbackTransaction(em); > } > Throwable persistenceException = exception; >- if (exception.getCause() instanceof javax.transaction.RollbackException) { >+ // Remove an wrapping exceptions such as rollback, runtime, etc. >+ while (persistenceException != null && !(persistenceException instanceof ValidationException)) { > // In the server this is always a rollback exception, need to get nested exception. >- persistenceException = exception.getCause().getCause(); >+ persistenceException = persistenceException.getCause(); > } >- if (!(persistenceException instanceof PersistenceException)) { >- AssertionFailedError failure = new AssertionFailedError("Wrong exception type thrown: " + persistenceException.getClass()); >- failure.initCause(exception); >- throw failure; >- } >- if (persistenceException.getCause() instanceof ValidationException) { >- ValidationException ve = (ValidationException) persistenceException.getCause(); >+ if (persistenceException instanceof ValidationException) { >+ ValidationException ve = (ValidationException) persistenceException; > if (ve.getErrorCode() == ValidationException.PRIMARY_KEY_UPDATE_DISALLOWED) { > return; > } else { >- fail("Wrong error code for ValidationException: " + ve.getErrorCode()); >+ AssertionFailedError failure = new AssertionFailedError("Wrong error code for ValidationException: " + ve.getErrorCode()); >+ failure.initCause(ve); >+ throw failure; > } > } else { >- fail("ValiationException expected, thrown: " + persistenceException.getCause()); >+ AssertionFailedError failure = new AssertionFailedError("ValiationException expected, thrown: " + exception); >+ failure.initCause(exception); >+ throw failure; > } > } finally { > closeEntityManager(em); >@@ -3854,6 +3878,8 @@ > commitTransaction(em); > > beginTransaction(em); >+ phone = em.merge(phone); >+ emp2 = em.merge(emp2); > phone.setOwner(emp2); > > try { >@@ -3863,17 +3889,13 @@ > rollbackTransaction(em); > } > Throwable persistenceException = exception; >- if (exception.getCause() instanceof javax.transaction.RollbackException) { >+ // Remove an wrapping exceptions such as rollback, runtime, etc. >+ while (persistenceException != null && !(persistenceException instanceof ValidationException)) { > // In the server this is always a rollback exception, need to get nested exception. >- persistenceException = exception.getCause().getCause(); >+ persistenceException = persistenceException.getCause(); > } >- if (!(persistenceException instanceof PersistenceException)) { >- AssertionFailedError failure = new AssertionFailedError("Wrong exception type thrown: " + persistenceException.getClass()); >- failure.initCause(exception); >- throw failure; >- } >- if (persistenceException.getCause() instanceof ValidationException) { >- ValidationException ve = (ValidationException) persistenceException.getCause(); >+ if (persistenceException instanceof ValidationException) { >+ ValidationException ve = (ValidationException) persistenceException; > if (ve.getErrorCode() == ValidationException.PRIMARY_KEY_UPDATE_DISALLOWED) { > return; > } else { >@@ -3882,8 +3904,8 @@ > throw failure; > } > } else { >- AssertionFailedError failure = new AssertionFailedError("ValiationException expected, thrown: " + persistenceException.getCause()); >- failure.initCause(persistenceException); >+ AssertionFailedError failure = new AssertionFailedError("ValiationException expected, thrown: " + exception); >+ failure.initCause(exception); > throw failure; > } > } finally { >@@ -3891,7 +3913,6 @@ > } > fail("No exception thrown when primary key update attempted."); > } >- > // Test cascade merge on a detached entity > public void testCascadeMergeDetached() { > // setup >@@ -4382,7 +4403,7 @@ > try { > beginTransaction(em); > // make sure there are no pre-existing objects with this name >- em.createQuery("DELETE FROM "+className+" p WHERE p.name = '"+name+"'").executeUpdate(); >+ em.createQuery("DELETE FROM "+className+" p WHERE p.name = '"+name+"'").executeUpdate(); > em.persist(sp); > em.persist(lp); > commitTransaction(em); >@@ -4399,7 +4420,7 @@ > em = createEntityManager(); > beginTransaction(em); > try { >- em.createQuery("DELETE FROM "+className+" p WHERE p.name = '"+name+"' AND p.teamLeader IS NULL").executeUpdate(); >+ em.createQuery("DELETE FROM "+className+" p WHERE p.name = '"+name+"' AND p.teamLeader IS NULL").executeUpdate(); > commitTransaction(em); > } catch (RuntimeException e) { > if (isTransactionActive(em)){ >@@ -4433,7 +4454,7 @@ > try { > beginTransaction(em); > // make sure there are no pre-existing objects with this name >- em.createQuery("DELETE FROM "+className+" p WHERE p.name = '"+name+"'").executeUpdate(); >+ em.createQuery("DELETE FROM "+className+" p WHERE p.name = '"+name+"'").executeUpdate(); > commitTransaction(em); > } catch (RuntimeException ex){ > if (isTransactionActive(em)){ >@@ -4469,8 +4490,8 @@ > try { > beginTransaction(em); > // make sure there are no pre-existing objects with this name >- em.createQuery("DELETE FROM Employee e WHERE e.firstName = '"+firstName+"'").executeUpdate(); >- em.createQuery("DELETE FROM Address a WHERE a.country = '"+firstName+"'").executeUpdate(); >+ em.createQuery("DELETE FROM Employee e WHERE e.firstName = '"+firstName+"'").executeUpdate(); >+ em.createQuery("DELETE FROM Address a WHERE a.country = '"+firstName+"'").executeUpdate(); > // populate Employees > for(int i=1; i<=n; i++) { > Employee emp = new Employee(); >@@ -4512,7 +4533,7 @@ > if (isTransactionActive(em)){ > rollbackTransaction(em); > } >- fail("Exception thrown: " + e.getClass()); >+ fail("Exception thrown: " + e.getClass()); > } finally { > closeEntityManager(em); > } >@@ -4548,8 +4569,8 @@ > try { > beginTransaction(em); > // make sure there are no objects left with this name >- em.createQuery("DELETE FROM Employee e WHERE e.firstName = '"+firstName+"'").executeUpdate(); >- em.createQuery("DELETE FROM Address a WHERE a.country = '"+firstName+"'").executeUpdate(); >+ em.createQuery("DELETE FROM Employee e WHERE e.firstName = '"+firstName+"'").executeUpdate(); >+ em.createQuery("DELETE FROM Address a WHERE a.country = '"+firstName+"'").executeUpdate(); > commitTransaction(em); > } catch (RuntimeException ex){ > if (isTransactionActive(em)){ >@@ -4608,7 +4629,7 @@ > try { > beginTransaction(em); > >- em.createQuery("DELETE FROM Project p WHERE p.name = '"+name+"'").executeUpdate(); >+ em.createQuery("DELETE FROM Project p WHERE p.name = '"+name+"'").executeUpdate(); > > commitTransaction(em); > } catch (RuntimeException ex) { >@@ -4924,7 +4945,7 @@ > fail("IllegalArgumentException has not been thrown"); > } catch(IllegalArgumentException ex) { > if (isOnServer()) { >- assertTrue("Transaction is not roll back only", !isTransactionActive(em)); >+ assertTrue("Transaction is not roll back only", getRollbackOnly(em)); > } else { > assertTrue("Transaction is not roll back only", em.getTransaction().getRollbackOnly()); > } >@@ -5028,6 +5049,11 @@ > > // gf1732 > public void testMultipleEntityManagerFactories() { >+ // TODO: This does not work on the server but should. >+ if (isOnServer()) { >+ return; >+ } >+ > // close the original factory > closeEntityManagerFactory(); > // create the new one - not yet deployed >@@ -5082,7 +5108,7 @@ > // gf2074: EM.clear throws NPE (JTA case) > public void testClearEntityManagerWithoutPersistenceContextSimulateJTA() { > EntityManager em = createEntityManager(); >- ServerSession ss = ((org.eclipse.persistence.jpa.JpaEntityManager)em).getServerSession(); >+ ServerSession ss = getServerSession(); > closeEntityManager(em); > // in non-JTA case session doesn't have external transaction controller > boolean hasExternalTransactionController = ss.hasExternalTransactionController(); >@@ -5110,7 +5136,7 @@ > query.addArgument("lName", String.class); > > EntityManager em = createEntityManager(); >- Session session = ((EntityManagerImpl)em.getDelegate()).getServerSession(); >+ Session session = getServerSession(); > ClassDescriptor descriptor = session.getDescriptor(Employee.class); > descriptor.getQueryManager().addQuery("findByFNameLName", query); > >@@ -5122,8 +5148,7 @@ > em.persist(emp); > em.flush(); > >- Query ejbQuery = ((org.eclipse.persistence.jpa.JpaEntityManager)em).createDescriptorNamedQuery("findByFNameLName", Employee.class); >- >+ Query ejbQuery = ((org.eclipse.persistence.jpa.JpaEntityManager)em.getDelegate()).createDescriptorNamedQuery("findByFNameLName", Employee.class); > List results = ejbQuery.setParameter("fName", "Melvin").setParameter("lName", "Malone").getResultList(); > > assertTrue(results.size() == 1); >@@ -5151,7 +5176,7 @@ > > > EntityManager em = createEntityManager(); >- Session session = ((EntityManagerImpl)em.getDelegate()).getServerSession(); >+ Session session = getServerSession(); > ClassDescriptor descriptor = session.getDescriptor(Employee.class); > descriptor.getQueryManager().addQuery("findEmployees", query); > descriptor.getQueryManager().addQuery("findEmployees", query2); >@@ -5167,8 +5192,7 @@ > Vector args = new Vector(2); > args.addElement(String.class); > args.addElement(String.class); >- Query ejbQuery = ((org.eclipse.persistence.jpa.JpaEntityManager)em).createDescriptorNamedQuery("findEmployees", Employee.class, args); >- >+ Query ejbQuery = ((org.eclipse.persistence.jpa.JpaEntityManager)em.getDelegate()).createDescriptorNamedQuery("findEmployees", Employee.class, args); > List results = ejbQuery.setParameter("fName", "Melvin").setParameter("lName", "Malone").getResultList(); > > assertTrue(results.size() == 1); >@@ -5211,6 +5235,10 @@ > > // gf 3032 > public void testPessimisticLockHintStartsTransaction(){ >+ if (isOnServer()) { >+ // Extended persistence context are not supported in the server. >+ return; >+ } > Assert.assertFalse("Warning: DerbyPlatform does not currently support pessimistic locking", ((Session)JUnitTestCase.getServerSession()).getPlatform().isDerby()); > Assert.assertFalse("Warning: PostgreSQLPlatform. does not currently support pessimistic locking", ((Session)JUnitTestCase.getServerSession()).getPlatform().isPostgreSQL()); > EntityManagerImpl em = (EntityManagerImpl)createEntityManager(); >@@ -5220,7 +5248,6 @@ > query.setParameter("firstname", "Sarah"); > List results = query.getResultList(); > assertTrue("The extended persistence context is not in a transaction after a pessmimistic lock query", em.getActivePersistenceContext(em.getTransaction()).getParent().isInTransaction()); >- > rollbackTransaction(em); > } > >@@ -5437,6 +5464,10 @@ > > // bug 6006423: BULK DELETE QUERY FOLLOWED BY A MERGE RETURNS DELETED OBJECT > public void testBulkDeleteThenMerge() { >+ if (isOnServer()) { >+ // Got transaction timeout on server. >+ return; >+ } > String firstName = "testBulkDeleteThenMerge"; > > // setup - create Employee >@@ -5542,7 +5573,7 @@ > */ > public void testSequencePreallocationUsingCallbackTest() { > // setup >- ServerSession ss = ((EntityManagerFactoryImpl)getEntityManagerFactory()).getServerSession(); >+ ServerSession ss = getServerSession(); > // make sure the sequence has both preallocation and callback > // (the latter means not using sequencing connection pool, > // acquiring values before insert and requiring transaction). >@@ -5766,6 +5797,7 @@ > assertTrue("Did not correctly persist a mapping using a class-instance converter", (add.getType() instanceof Bungalow)); > > beginTransaction(em); >+ add = em.find(Address.class, assignedSequenceNumber); > em.remove(add); > commitTransaction(em); > } >@@ -5786,44 +5818,48 @@ > */ > // UC2 - EM has spaces in EM name but not in path > public void test210280EntityManagerFromPUwithSpaceInNameButNotInPath() { >- // This EM is defined in a persistence.xml that is off eclipselink-advanced-properties (no URL encoded chars in path) >- privateTest210280EntityManagerWithPossibleSpacesInPathOrName(// >- "A JPAADVProperties pu with spaces in the name", // >- "with a name containing spaces was not found."); >+ // This EM is defined in a persistence.xml that is off eclipselink-advanced-properties (no URL encoded chars in path) >+ privateTest210280EntityManagerWithPossibleSpacesInPathOrName(// >+ "A JPAADVProperties pu with spaces in the name", // >+ "with a name containing spaces was not found."); > } > > // UC3 - EM has spaces in path but not in the EM name > public void test210280EntityManagerFromPUwithSpaceInPathButNotInName() { >- // This EM is defined in a persistence.xml that is off [eclipselink-pu with spaces] (with URL encoded chars in path) >- privateTest210280EntityManagerWithPossibleSpacesInPathOrName(// >- "eclipselink-pu-with-spaces-in-the-path-but-not-the-name", // >- "with a path containing spaces was not found."); >+ // This EM is defined in a persistence.xml that is off [eclipselink-pu with spaces] (with URL encoded chars in path) >+ privateTest210280EntityManagerWithPossibleSpacesInPathOrName(// >+ "eclipselink-pu-with-spaces-in-the-path-but-not-the-name", // >+ "with a path containing spaces was not found."); > } > > // UC4 - EM has spaces in the path and name > public void test210280EntityManagerFromPUwithSpaceInNameAndPath() { >- // This EM is defined in a persistence.xml that is off [eclipselink-pu with spaces] (with URL encoded chars in path) >- privateTest210280EntityManagerWithPossibleSpacesInPathOrName(// >- "eclipselink-pu with spaces in the path and name", // >- "with a path and name both containing spaces was not found."); >+ // This EM is defined in a persistence.xml that is off [eclipselink-pu with spaces] (with URL encoded chars in path) >+ privateTest210280EntityManagerWithPossibleSpacesInPathOrName(// >+ "eclipselink-pu with spaces in the path and name", // >+ "with a path and name both containing spaces was not found."); > } > > private void privateTest210280EntityManagerWithPossibleSpacesInPathOrName(String puName, String failureMessagePostScript) { >- EntityManager em = null; >- try { >- em = createEntityManager(puName); >+ EntityManager em = null; >+ try { >+ em = createEntityManager(puName); > } catch (Exception e) { >- Throwable cause = e.getCause(); >- e.printStackTrace(); >- fail("A Persistence Unit [" + puName + "] " + failureMessagePostScript); >+ Throwable cause = e.getCause(); >+ e.printStackTrace(); >+ fail("A Persistence Unit [" + puName + "] " + failureMessagePostScript); > } finally { >- if(null != em) { >- closeEntityManager(em); >- } >+ if(null != em) { >+ closeEntityManager(em); >+ } > } > } > > public void testConnectionPolicy() { >+ // Comment out because it's not relevant for getDatabaseProperties() when running in server >+ if (isOnServer()) { >+ return; >+ } > // setup > String errorMsg = ""; > >@@ -5906,7 +5942,7 @@ > setParameter("GENDER1", Employee.Gender.Male). > setParameter("GENDER2", Employee.Gender.Female). > getResultList(); >- em.close(); >+ //em.close(); > } > > >@@ -5915,16 +5951,16 @@ > EntityManager em = createEntityManager(); > Exception caughtException = null; > try{ >- beginTransaction(em); >- em.persist(new SuperLargeProject()); >+ beginTransaction(em); >+ em.persist(new SuperLargeProject()); > } catch (IllegalArgumentException e){ >- caughtException = e; >+ caughtException = e; > } finally { >- rollbackTransaction(em); >- closeEntityManager(em); >+ rollbackTransaction(em); >+ closeEntityManager(em); > } > if (caughtException == null){ >- fail("Caught an incorrect exception when persisting a non entity."); >+ fail("Caught an incorrect exception when persisting a non entity."); > } > } > >@@ -5941,14 +5977,14 @@ > beginTransaction(em); > SuperLargeProject s1 = new SuperLargeProject("Super 1"); > try { >- em.persist(s1); >+ em.persist(s1); > } catch (Exception e) { > if (isTransactionActive(em)){ > rollbackTransaction(em); > } > fail("Persist operation was not cascaded to related non-entity, thrown: " + e); > } finally { >- rollbackTransaction(em); >+ rollbackTransaction(em); > ip.setDescribesNonPersistentSubclasses(describesNonPersistentSubclasses); > closeEntityManager(em); > } >@@ -5956,18 +5992,22 @@ > > // bug 239505 - Ensure our Embeddables succeed a call to clone > public void testCloneEmbeddable(){ >- EmployeePopulator populator = new EmployeePopulator(); >- EmploymentPeriod period = populator.employmentPeriodExample1(); >+ EmployeePopulator populator = new EmployeePopulator(); >+ EmploymentPeriod period = populator.employmentPeriodExample1(); > >- try { >- period.clone(); >- } catch (Exception e){ >- fail("Exception thrown when trying to clone an Embeddable: " + e.toString()); >- } >+ try { >+ period.clone(); >+ } catch (Exception e){ >+ fail("Exception thrown when trying to clone an Embeddable: " + e.toString()); >+ } > } > > // bug 232555 - NPE setting embedded attributes after persist in woven classes > public void testEmbeddedNPE() { >+ if (isOnServer()) { >+ // Close is not used on server. >+ return; >+ } > // setup > // create and persist an Employee > Employee emp = new Employee(); >@@ -6011,6 +6051,7 @@ > // clean-up > if(readEmp != null) { > beginTransaction(em); >+ //readEmp = em.find(Employee.class, emp.getId()); > em.remove(readEmp); > commitTransaction(em); > } >@@ -6021,3 +6062,6 @@ > } > } > } >+ >+ >+ >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/ddlgeneration/DDLGenerationJUnitTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/ddlgeneration/DDLGenerationJUnitTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/ddlgeneration/DDLGenerationJUnitTestSuite.java (working copy) >@@ -41,22 +41,21 @@ > > public static Test suite() { > TestSuite suite = new TestSuite(DDLGenerationJUnitTestSuite.class); >- >- return new TestSetup(suite) { >- >- protected void setUp() { >- // Trigger DDL generation >- //TODO: Let's add a flag which do not disregard DDL generation errors. >- //TODO: This is required to ensure that DDL generation has succeeded. >- EntityManager em = createEntityManager(DDL_PU); >- em.close(); >- } >- >- protected void tearDown() { >- clearCache(DDL_PU); >- } >- }; >+ >+ return suite; > } >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ // Trigger DDL generation >+ //TODO: Let's add a flag which do not disregard DDL generation errors. >+ //TODO: This is required to ensure that DDL generation has succeeded. >+ EntityManager em = createEntityManager(DDL_PU); >+ //em.close(); >+ clearCache(DDL_PU); >+ } > > // Test for GF#1392 > // If there is a same name column for the entity and many-to-many table, wrong pk constraint generated. >@@ -248,6 +247,10 @@ > > // Test to check if unique constraints are generated correctly > public void testDDLUniqueConstraintsByXML() { >+ if (isOnServer()) { >+ // Not work on server. >+ return; >+ } > if(!getServerSession(DDL_PU).getPlatform().supportsUniqueKeyConstraints()) { > return; > } >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/EntityManagerJUnitTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/EntityManagerJUnitTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/EntityManagerJUnitTestSuite.java (working copy) >@@ -4018,7 +4018,7 @@ > fail("IllegalArgumentException has not been thrown"); > } catch(IllegalArgumentException ex) { > if (isOnServer()) { >- assertTrue("Transaction is not roll back only", !isTransactionActive(em)); >+ assertTrue("Transaction is not roll back only", getRollbackOnly(em)); > } else { > assertTrue("Transaction is not roll back only", em.getTransaction().getRollbackOnly()); > } >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/EntityManagerTLRJUnitTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/EntityManagerTLRJUnitTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/EntityManagerTLRJUnitTestSuite.java (working copy) >@@ -4022,7 +4022,7 @@ > fail("IllegalArgumentException has not been thrown"); > } catch(IllegalArgumentException ex) { > if (isOnServer()) { >- assertTrue("Transaction is not roll back only", !isTransactionActive(em)); >+ assertTrue("Transaction is not roll back only", getRollbackOnly(em)); > } else { > assertTrue("Transaction is not roll back only", em.getTransaction().getRollbackOnly()); > } >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/DeleteAllQueryInheritanceJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/DeleteAllQueryInheritanceJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/DeleteAllQueryInheritanceJunitTest.java (working copy) >@@ -94,18 +94,17 @@ > public static Test suite() { > TestSuite suite = new TestSuite(DeleteAllQueryInheritanceJunitTest.class); > >- return new TestSetup(suite) { >- protected void setUp(){ >- DatabaseSession session = JUnitTestCase.getServerSession(); >- new InheritanceTableCreator().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } > >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritanceTableCreator().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ > // JUnit framework will automatically execute all methods starting with test... > // The test methods' name pattern is a word "test" followed by underscore and the used selectionExpression: > // test_selectionExpression >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/EntityManagerJUnitTestCase.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/EntityManagerJUnitTestCase.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/EntityManagerJUnitTestCase.java (working copy) >@@ -26,7 +26,7 @@ > import junit.framework.Test; > import junit.framework.TestSuite; > import junit.extensions.TestSetup; >- >+import java.sql.*; > import javax.persistence.EntityManager; > > public class EntityManagerJUnitTestCase extends JUnitTestCase { >@@ -42,18 +42,16 @@ > public static Test suite() { > TestSuite suite = new TestSuite(EntityManagerJUnitTestCase.class); > >- return new TestSetup(suite) { >- >- protected void setUp(){ >- DatabaseSession session = JUnitTestCase.getServerSession(); >- new InheritanceTableCreator().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritanceTableCreator().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } > > // gf issue 1356 - persisting a polymorphic relationship throws a NPE. > // The order of persist operations is important for this test. >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/JoinedAttributeInheritanceJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/JoinedAttributeInheritanceJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/JoinedAttributeInheritanceJunitTest.java (working copy) >@@ -97,17 +97,17 @@ > > public static Test suite() { > TestSuite suite = new TestSuite(JoinedAttributeInheritanceJunitTest.class); >- >- return new TestSetup(suite) { >- protected void setUp(){ >- new InheritanceTableCreator().replaceTables(JUnitTestCase.getServerSession()); >- } >- >- protected void tearDown() { >- } >- }; >+ return suite; > } > >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritanceTableCreator().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ > public void tearDown() { > dbSessionClearCache(); > dbSession = null; >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/LifecycleCallbackJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/LifecycleCallbackJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/LifecycleCallbackJunitTest.java (working copy) >@@ -43,6 +43,7 @@ > public static Test suite() { > TestSuite suite = new TestSuite(); > suite.setName("LifecycleCallbackJunitTest"); >+ suite.addTest(new LifecycleCallbackJunitTest("testSetup")); > suite.addTest(new LifecycleCallbackJunitTest("testPrePersistBusOverrideAndAbstractInheritAndDefault")); > suite.addTest(new LifecycleCallbackJunitTest("testPostPersistBusInheritAndDefault")); > suite.addTest(new LifecycleCallbackJunitTest("testPostLoadBusInheritAndDefault")); >@@ -50,19 +51,18 @@ > suite.addTest(new LifecycleCallbackJunitTest("testPostPersistSportsCarInheritAndExcludeDefault")); > suite.addTest(new LifecycleCallbackJunitTest("testPrePersistSportsCarOverride")); > >- return new TestSetup(suite) { >- >- protected void setUp(){ >- DatabaseSession session = JUnitTestCase.getServerSession(); >- new InheritanceTableCreator().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } > >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritanceTableCreator().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ >+ > public void testPostLoadBusInheritAndDefault() { > int vehiclePostLoadCountBefore = VehicleListener.POST_LOAD_COUNT; > int defaultListenerPostLoadCountBefore = DefaultListener.POST_LOAD_COUNT; >@@ -99,7 +99,7 @@ > em.refresh(bus); > defaultListenerPostLoadCountIntermidiate = DefaultListener.POST_LOAD_COUNT; > >- javax.persistence.Query q = em.createQuery("select distinct b from Bus b where b.id = " + bus.getId()); >+ javax.persistence.Query q = em.createQuery("select distinct b from Bus b where b.id = " + bus.getId()); > // This should not fire a postLoad event ... > q.getResultList(); > >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/MixedInheritanceJUnitTestCase.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/MixedInheritanceJUnitTestCase.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/MixedInheritanceJUnitTestCase.java (working copy) >@@ -49,25 +49,23 @@ > public static Test suite() { > TestSuite suite = new TestSuite(); > suite.setName("MixedInheritanceJUnitTestCase"); >- >+ suite.addTest(new MixedInheritanceJUnitTestCase("testSetup")); > suite.addTest(new MixedInheritanceJUnitTestCase("testCreateNewMudTire")); > suite.addTest(new MixedInheritanceJUnitTestCase("testCreateNewRockTire")); > > suite.addTest(new MixedInheritanceJUnitTestCase("testReadNewMudTire")); > suite.addTest(new MixedInheritanceJUnitTestCase("testReadNewRockTire")); > >- return new TestSetup(suite) { >- >- protected void setUp(){ >- DatabaseSession session = JUnitTestCase.getServerSession(); >- new InheritanceTableCreator().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritanceTableCreator().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } > > public void testCreateNewMudTire() { > EntityManager em = createEntityManager(); >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/ServerTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/ServerTestSuite.java (revision 0) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inheritance/ServerTestSuite.java (revision 0) >@@ -0,0 +1,33 @@ >+/******************************************************************************* >+ * Copyright (c) 1998, 2008 Oracle. All rights reserved. >+ * This program and the accompanying materials are made available under the >+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+ * which accompanies this distribution. >+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+ * and the Eclipse Distribution License is available at >+ * http://www.eclipse.org/org/documents/edl-v10.php. >+ * >+ * Contributors: >+ * Oracle - initial API and implementation from Oracle TopLink >+ ******************************************************************************/ >+package org.eclipse.persistence.testing.tests.jpa.inheritance; >+ >+import junit.framework.TestSuite; >+import junit.framework.Test; >+ >+/** >+ * <p><b>Purpose</b>: To collect the tests that will run against Application Server only. >+ */ >+public class ServerTestSuite extends TestSuite { >+ >+ public static Test suite() { >+ TestSuite suite = new TestSuite(); >+ suite.setName("Inheritance ServerTestSuite"); >+ suite.addTest(LifecycleCallbackJunitTest.suite()); >+ suite.addTest(EntityManagerJUnitTestCase.suite()); >+ suite.addTest(MixedInheritanceJUnitTestCase.suite()); >+ suite.addTest(JoinedAttributeInheritanceJunitTest.suite()); >+ >+ return suite; >+ } >+} >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/EmbeddableSuperclassJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/EmbeddableSuperclassJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/EmbeddableSuperclassJunitTest.java (working copy) >@@ -63,6 +63,7 @@ > public static Test suite() { > TestSuite suite = new TestSuite(); > suite.setName("EmbeddableSuperclassJunitTest"); >+ suite.addTest(new EmbeddableSuperclassJunitTest("testSetup")); > suite.addTest(new EmbeddableSuperclassJunitTest("testExistenceCheckingSetting")); > suite.addTest(new EmbeddableSuperclassJunitTest("testCreateBeerConsumer")); > suite.addTest(new EmbeddableSuperclassJunitTest("testCreateAlpine")); >@@ -87,20 +88,18 @@ > suite.addTest(new EmbeddableSuperclassJunitTest("testDeleteBeerConsumer")); > suite.addTest(new EmbeddableSuperclassJunitTest("testOptimisticLockingTest")); > >- return new TestSetup(suite) { >- >- protected void setUp() { >- DatabaseSession session = JUnitTestCase.getServerSession(); >- >- new InheritedTableManager().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritedTableManager().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } > >+ >+ > /** > * Verifies that existence-checking metadata is correctly processed. > */ >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/InheritedCallbacksJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/InheritedCallbacksJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/InheritedCallbacksJunitTest.java (working copy) >@@ -41,6 +41,7 @@ > public static Test suite() { > TestSuite suite = new TestSuite(); > suite.setName("InheritedCallbacksJunitTest"); >+ suite.addTest(new InheritedCallbacksJunitTest("testSetup")); > suite.addTest(new InheritedCallbacksJunitTest("testPreAndPostPersistAlpine")); > suite.addTest(new InheritedCallbacksJunitTest("testPrePersistAlpineOnMerge")); > suite.addTest(new InheritedCallbacksJunitTest("testPreAndPostPersistBeerConsumer")); >@@ -49,20 +50,17 @@ > suite.addTest(new InheritedCallbacksJunitTest("testPreAndPostUpdate")); > suite.addTest(new InheritedCallbacksJunitTest("testPreAndPostRemove")); > >- return new TestSetup(suite) { >- >- protected void setUp(){ >- DatabaseSession session = JUnitTestCase.getServerSession(); >- >- new InheritedTableManager().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } > >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritedTableManager().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ > public void testPreAndPostPersistAlpine() { > int beerPrePersistCount = Beer.BEER_PRE_PERSIST_COUNT; > int alpinePrePersistCount = Alpine.ALPINE_PRE_PERSIST_COUNT; >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/InheritedModelJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/InheritedModelJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/InheritedModelJunitTest.java (working copy) >@@ -61,6 +61,7 @@ > TestSuite suite = new TestSuite(); > suite.setName("InheritedModelJunitTest"); > >+ suite.addTest(new InheritedModelJunitTest("testSetup")); > suite.addTest(new InheritedModelJunitTest("testCreateBlue")); > suite.addTest(new InheritedModelJunitTest("testReadBlue")); > suite.addTest(new InheritedModelJunitTest("testCreateBeerConsumer")); >@@ -72,20 +73,17 @@ > suite.addTest(new InheritedModelJunitTest("testInheritedClone")); > suite.addTest(new InheritedModelJunitTest("testCascadeRemove")); > >- return new TestSetup(suite) { >- >- protected void setUp() { >- DatabaseSession session = JUnitTestCase.getServerSession(); >- >- new InheritedTableManager().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } > >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritedTableManager().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ > public void testCreateBlue() { > EntityManager em = createEntityManager(); > beginTransaction(em); >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/OrderedListJunitTest.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/OrderedListJunitTest.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/OrderedListJunitTest.java (working copy) >@@ -57,20 +57,17 @@ > suite.addTest(new OrderedListJunitTest("testInitialize")); > suite.addTest(new OrderedListJunitTest("test3")); > >- return new TestSetup(suite) { >- >- protected void setUp() { >- DatabaseSession session = JUnitTestCase.getServerSession(); >- >- new InheritedTableManager().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } > >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new InheritedTableManager().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ > public void testInitialize() { > > EntityManager em = createEntityManager(); >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/ServerTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/ServerTestSuite.java (revision 0) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/inherited/ServerTestSuite.java (revision 0) >@@ -0,0 +1,33 @@ >+/******************************************************************************* >+ * Copyright (c) 1998, 2008 Oracle. All rights reserved. >+ * This program and the accompanying materials are made available under the >+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+ * which accompanies this distribution. >+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+ * and the Eclipse Distribution License is available at >+ * http://www.eclipse.org/org/documents/edl-v10.php. >+ * >+ * Contributors: >+ * Oracle - initial API and implementation from Oracle TopLink >+ ******************************************************************************/ >+package org.eclipse.persistence.testing.tests.jpa.inherited; >+ >+import junit.framework.TestSuite; >+import junit.framework.Test; >+ >+/** >+ * <p><b>Purpose</b>: To collect the tests that will run against Application Server only. >+ */ >+public class ServerTestSuite extends TestSuite { >+ >+ public static Test suite() { >+ TestSuite suite = new TestSuite(); >+ suite.setName("Inherited ServerTestSuite"); >+ suite.addTest(OrderedListJunitTest.suite()); >+ suite.addTest(InheritedModelJunitTest.suite()); >+ suite.addTest(InheritedCallbacksJunitTest.suite()); >+ suite.addTest(EmbeddableSuperclassJunitTest.suite()); >+ >+ return suite; >+ } >+} >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/lob/LobJUnitTestCase.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/lob/LobJUnitTestCase.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/lob/LobJUnitTestCase.java (working copy) >@@ -45,24 +45,23 @@ > > public static Test suite() { > TestSuite suite = new TestSuite("Lob Model"); >+ suite.addTest(new LobJUnitTestCase("testSetup")); > suite.addTest(new LobJUnitTestCase("testCreate")); > suite.addTest(new LobJUnitTestCase("testRead")); > suite.addTest(new LobJUnitTestCase("testUpdate")); > suite.addTest(new LobJUnitTestCase("testDelete")); >- >- return new TestSetup(suite) { >- >- protected void setUp() { >- DatabaseSession session = JUnitTestCase.getServerSession(); >- new LobTableCreator().replaceTables(session); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ >+ return suite; > } >- >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new LobTableCreator().replaceTables(JUnitTestCase.getServerSession()); >+ clearCache(); >+ } >+ > public void testCreate() { > EntityManager em = createEntityManager(); > beginTransaction(em); >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/RelationshipModelJUnitTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/RelationshipModelJUnitTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/RelationshipModelJUnitTestSuite.java (working copy) >@@ -49,6 +49,7 @@ > TestSuite suite = new TestSuite(); > suite.setName("RelationshipModelJUnitTestSuite"); > >+ suite.addTest(new RelationshipModelJUnitTestSuite("testSetup")); > suite.addTest(new RelationshipModelJUnitTestSuite("testCreateItem")); > suite.addTest(new RelationshipModelJUnitTestSuite("testModifyItem")); > suite.addTest(new RelationshipModelJUnitTestSuite("testVerifyItem")); >@@ -57,19 +58,14 @@ > suite.addTest(new RelationshipModelJUnitTestSuite("testCloneCopyPolicy")); > suite.addTest(new RelationshipModelJUnitTestSuite("testCollectionImplementation")); > >- return new TestSetup(suite) { >- protected void setUp(){ >- new RelationshipsTableManager().replaceTables(JUnitTestCase.getServerSession()); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } >- >- public void setUp () { >- super.setUp(); >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new RelationshipsTableManager().replaceTables(JUnitTestCase.getServerSession()); > clearCache(); > } > >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/ServerTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/ServerTestSuite.java (revision 0) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/ServerTestSuite.java (revision 0) >@@ -0,0 +1,39 @@ >+/******************************************************************************* >+ * Copyright (c) 1998, 2008 Oracle. All rights reserved. >+ * This program and the accompanying materials are made available under the >+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 >+ * which accompanies this distribution. >+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html >+ * and the Eclipse Distribution License is available at >+ * http://www.eclipse.org/org/documents/edl-v10.php. >+ * >+ * Contributors: >+ * Oracle - initial API and implementation from Oracle TopLink >+ ******************************************************************************/ >+package org.eclipse.persistence.testing.tests.jpa.relationships; >+ >+import junit.framework.TestSuite; >+import junit.framework.Test; >+ >+/** >+ * <p><b>Purpose</b>: To collect the tests that will run against server only. >+ */ >+ >+public class ServerTestSuite extends TestSuite{ >+ >+ public static Test suite() { >+ TestSuite suite = new TestSuite(); >+ suite.setName("ServerTestSuite"); >+ >+ suite.addTestSuite(EMQueryJUnitTestSuite.class); >+ suite.addTestSuite(ExpressionJUnitTestSuite.class); >+ >+ suite.addTest(VirtualAttributeTestSuite.suite()); >+ //suite.addTest(ValidationTestSuite.suite()); in validation test model >+ //suite.addTest(QueryParameterValidationTestSuite.suite()); in validation test model >+ suite.addTest(UniAndBiDirectionalMappingTestSuite.suite()); >+ suite.addTest(RelationshipModelJUnitTestSuite.suite()); >+ return suite; >+ } >+ >+} >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/UniAndBiDirectionalMappingTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/UniAndBiDirectionalMappingTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/UniAndBiDirectionalMappingTestSuite.java (working copy) >@@ -43,16 +43,7 @@ > suite.addTest(new UniAndBiDirectionalMappingTestSuite("selfReferencingManyToManyCreateTest")); > suite.addTest(new UniAndBiDirectionalMappingTestSuite("testManyToManyClearDelete")); > >- return new TestSetup(suite) { >- >- protected void setUp() { >- new RelationshipsTableManager().replaceTables(JUnitTestCase.getServerSession()); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ return suite; > } > > public void selfReferencingManyToManyCreateTest() throws Exception { >@@ -104,7 +95,7 @@ > public void testManyToManyClearDelete() throws Exception { > EntityManager entityManager = createEntityManager(); > >- entityManager.getTransaction().begin(); >+ beginTransaction(entityManager); > > Customer owen = new Customer(); > owen.setName("Owen Pelletier"); >@@ -121,9 +112,9 @@ > > owen.addCCustomer(kirty); > >- entityManager.getTransaction().commit(); >+ commitTransaction(entityManager); > >- entityManager.getTransaction().begin(); >+ beginTransaction(entityManager); > > owen = entityManager.find(Customer.class, owenId); > kirty = entityManager.find(Customer.class, kirtyId); >@@ -135,7 +126,7 @@ > entityManager.remove(owen); > entityManager.remove(kirty); > >- entityManager.getTransaction().commit(); >- entityManager.close(); >+ commitTransaction(entityManager); >+ closeEntityManager(entityManager); > } > } >\ No newline at end of file >Index: jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/VirtualAttributeTestSuite.java >=================================================================== >--- jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/VirtualAttributeTestSuite.java (revision 2463) >+++ jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/relationships/VirtualAttributeTestSuite.java (working copy) >@@ -19,6 +19,7 @@ > > import org.eclipse.persistence.testing.framework.junit.JUnitTestCase; > import org.eclipse.persistence.testing.models.jpa.virtualattribute.*; >+import org.eclipse.persistence.testing.models.jpa.relationships.RelationshipsTableManager; > > public class VirtualAttributeTestSuite extends JUnitTestCase { > >@@ -35,24 +36,20 @@ > public static Test suite() { > TestSuite suite = new TestSuite(); > suite.setName("VirtualAttributeTestSuite"); >+ suite.addTest(new VirtualAttributeTestSuite("testSetup")); > suite.addTest(new VirtualAttributeTestSuite("testInsertVirtualAttribute")); > suite.addTest(new VirtualAttributeTestSuite("testReadVirtualAttribute")); > suite.addTest(new VirtualAttributeTestSuite("testUpdateVirtualAttribute")); >- suite.addTest(new VirtualAttributeTestSuite("testDeleteVirtualAttribute")); >- >- return new TestSetup(suite) { >- protected void setUp(){ >- new VirtualAttributeTableCreator().replaceTables(JUnitTestCase.getServerSession()); >- } >- >- protected void tearDown() { >- clearCache(); >- } >- }; >+ suite.addTest(new VirtualAttributeTestSuite("testDeleteVirtualAttribute")); >+ >+ return suite; > } >- >- public void setUp () { >- super.setUp(); >+ >+ /** >+ * The setup is done as a test, both to record its failure, and to allow execution in the server. >+ */ >+ public void testSetup() { >+ new VirtualAttributeTableCreator().replaceTables(JUnitTestCase.getServerSession()); > clearCache(); > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
peter.krogh
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 242289
:
108692
|
108752
| 114045 |
115148
|
117483
|
119562
|
121081