HHH-4942 Refactored JarVistitorTest and PackagedEntityManagerTest to use Shrinkwrap to build the packages needed for the tests. This removed the need for some custom antrun plugin stuff. Also created a baseclass for the packaged tests.
HHH-4845 Refactored PersistTest to extend from the main em base test case. This allows the em test to run in forkMode 'once' git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@18858 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
parent
ddd1d72e5a
commit
b4e5322cfb
|
@ -1,10 +1,11 @@
|
||||||
|
// $Id:$
|
||||||
/*
|
/*
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
*
|
*
|
||||||
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
|
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
|
||||||
* indicated by the @author tags or express copyright attribution
|
* indicated by the @author tags or express copyright attribution
|
||||||
* statements applied by the authors. All third-party contributions are
|
* statements applied by the authors. All third-party contributions are
|
||||||
* distributed under license by Red Hat Middleware LLC.
|
* distributed under license by Red Hat Inc.
|
||||||
*
|
*
|
||||||
* This copyrighted material is made available to anyone wishing to use, modify,
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
* copy, or redistribute it subject to the terms and conditions of the GNU
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
@ -183,7 +184,7 @@ public class XMLContext {
|
||||||
classOverriding.put( listenerClassName, listener );
|
classOverriding.put( listenerClassName, listener );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.debug( "Adding XML overriding information for listener: {}", listeners );
|
log.debug( "Adding XML overriding information for listener: {}", localAddedClasses );
|
||||||
addedClasses.addAll( localAddedClasses );
|
addedClasses.addAll( localAddedClasses );
|
||||||
return localAddedClasses;
|
return localAddedClasses;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,97 +26,4 @@
|
||||||
</uptodate>
|
</uptodate>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="packjar">
|
|
||||||
<property name="extension" value="jar"/>
|
|
||||||
<property name="packagename" value="${jarname}"/>
|
|
||||||
<property name="headerdirectory" value="."/>
|
|
||||||
<mkdir dir="${package.dir}"/>
|
|
||||||
<mkdir dir="${package.tmp.dir}/${headerdirectory}"/>
|
|
||||||
<copy todir="${package.tmp.dir}/${headerdirectory}">
|
|
||||||
<fileset dir="${classes.dir}">
|
|
||||||
<include name="**/test/pack/${packagename}/**.*"/>
|
|
||||||
</fileset>
|
|
||||||
</copy>
|
|
||||||
<jar destfile="${package.dir}/${jarname}.${extension}">
|
|
||||||
<fileset dir="${package.tmp.dir}">
|
|
||||||
<include name="**/*.*"/>
|
|
||||||
</fileset>
|
|
||||||
<fileset dir="${testresources.dir}/${jarname}">
|
|
||||||
<include name="**/*.*"/>
|
|
||||||
</fileset>
|
|
||||||
</jar>
|
|
||||||
<delete dir="${package.tmp.dir}"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="packexploded">
|
|
||||||
<property name="extension" value="jar"/>
|
|
||||||
<mkdir dir="${package.dir}/${jarname}.${extension}"/>
|
|
||||||
<copy todir="${package.dir}/${jarname}.${extension}">
|
|
||||||
<fileset dir="${classes.dir}">
|
|
||||||
<include name="**/test/pack/${jarname}/**.*"/>
|
|
||||||
</fileset>
|
|
||||||
<fileset dir="${testresources.dir}/${jarname}">
|
|
||||||
<include name="**/*.*"/>
|
|
||||||
</fileset>
|
|
||||||
</copy>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="package" description="Prepare all needed jars and pars">
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="defaultpar"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="defaultpar_1_0"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="space par"/>
|
|
||||||
<param name="packagename" value="spacepar"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="explicitpar"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="excludehbmpar"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="jar"/>
|
|
||||||
<param name="jarname" value="externaljar"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="cfgxmlpar"/>
|
|
||||||
</antcall>
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="jar"/>
|
|
||||||
<param name="jarname" value="overridenpar"/>
|
|
||||||
</antcall>
|
|
||||||
|
|
||||||
<!-- nested jar -->
|
|
||||||
<jar destfile="${package.dir}/nestedjar.ear">
|
|
||||||
<fileset dir="${package.dir}">
|
|
||||||
<include name="defaultpar.par"/>
|
|
||||||
</fileset>
|
|
||||||
</jar>
|
|
||||||
<copy todir="${package.dir}/nesteddir.ear">
|
|
||||||
<fileset dir="${package.dir}">
|
|
||||||
<include name="defaultpar.par"/>
|
|
||||||
</fileset>
|
|
||||||
</copy>
|
|
||||||
|
|
||||||
<antcall target="packjar" inheritall="true">
|
|
||||||
<param name="extension" value="war"/>
|
|
||||||
<param name="jarname" value="war"/>
|
|
||||||
<param name="headerdirectory" value="WEB-INF/classes"/>
|
|
||||||
</antcall>
|
|
||||||
|
|
||||||
<antcall target="packexploded" inheritall="true">
|
|
||||||
<param name="extension" value="par"/>
|
|
||||||
<param name="jarname" value="explodedpar"/>
|
|
||||||
</antcall>
|
|
||||||
</target>
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -56,6 +58,18 @@
|
||||||
<version>${version}</version>
|
<version>${version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.shrinkwrap</groupId>
|
||||||
|
<artifactId>shrinkwrap-api</artifactId>
|
||||||
|
<version>1.0.0-alpha-6</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.shrinkwrap</groupId>
|
||||||
|
<artifactId>shrinkwrap-impl-base</artifactId>
|
||||||
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<!--
|
<!--
|
||||||
Only really needed for the antrun plugin defined below (which in turn is only really needed
|
Only really needed for the antrun plugin defined below (which in turn is only really needed
|
||||||
|
@ -134,24 +148,6 @@
|
||||||
<goal>run</goal>
|
<goal>run</goal>
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
<execution>
|
|
||||||
<id>package-tests</id>
|
|
||||||
<phase>process-test-classes</phase>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<property name="package.dir" value="${basedir}/target/test-packages"/>
|
|
||||||
<property name="package.tmp.dir" value="${basedir}/target/tmp"/>
|
|
||||||
<property name="classes.dir" value="${project.build.directory}/test-classes"/>
|
|
||||||
<property name="testresources.dir" value="${basedir}/target/bundles"/>
|
|
||||||
<ant antfile="${basedir}/build.xml">
|
|
||||||
<target name="package"/>
|
|
||||||
</ant>
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
@ -162,40 +158,13 @@
|
||||||
<target>1.5</target>
|
<target>1.5</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
|
||||||
<groupId>org.jboss.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-test-ext-plugin</artifactId>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<forkMode>pertest</forkMode>
|
<excludes>
|
||||||
<additionalClasspathElements>
|
<exclude>**/*TestCase.java</exclude>
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/cfgxmlpar.par
|
</excludes>
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/defaultpar.par
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/defaultpar_1_0.par
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/excludehbmpar.par
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/explicitpar.par
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/explodedpar.par
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/externaljar.jar
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/nesteddir.ear
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/nestedjar.ear
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/overridenpar.jar
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/space par.par
|
|
||||||
</additionalClasspathElement>
|
|
||||||
<additionalClasspathElement>${basedir}/target/test-packages/war.war</additionalClasspathElement>
|
|
||||||
</additionalClasspathElements>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
|
@ -4,12 +4,11 @@
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
|
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
|
||||||
version="2.0">
|
version="2.0">
|
||||||
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
|
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
|
||||||
<jar-file>./target/test-packages/externaljar.jar</jar-file>
|
<jar-file>${basedir}/target/externaljar.jar</jar-file>
|
||||||
<class>org.hibernate.ejb.test.Cat</class>
|
<class>org.hibernate.ejb.test.Cat</class>
|
||||||
<class>org.hibernate.ejb.test.Kitten</class>
|
<class>org.hibernate.ejb.test.Kitten</class>
|
||||||
<class>org.hibernate.ejb.test.Distributor</class>
|
<class>org.hibernate.ejb.test.Distributor</class>
|
||||||
<class>org.hibernate.ejb.test.Item</class>
|
<class>org.hibernate.ejb.test.Item</class>
|
||||||
<class>org.hibernate.ejb.test</class>
|
|
||||||
<exclude-unlisted-classes>true</exclude-unlisted-classes>
|
<exclude-unlisted-classes>true</exclude-unlisted-classes>
|
||||||
<properties>
|
<properties>
|
||||||
<property name="hibernate.dialect" value="${db.dialect}"/>
|
<property name="hibernate.dialect" value="${db.dialect}"/>
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
|
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
|
||||||
version="2.0">
|
version="2.0">
|
||||||
<persistence-unit name="explodedpar" transaction-type="RESOURCE_LOCAL">
|
<persistence-unit name="explodedpar" transaction-type="RESOURCE_LOCAL">
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<property name="hibernate.dialect" value="${db.dialect}"/>
|
<property name="hibernate.dialect" value="${db.dialect}"/>
|
||||||
<property name="hibernate.connection.driver_class" value="${jdbc.driver}"/>
|
<property name="hibernate.connection.driver_class" value="${jdbc.driver}"/>
|
||||||
|
|
|
@ -3,18 +3,11 @@
|
||||||
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
||||||
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
||||||
|
|
||||||
<hibernate-mapping
|
<hibernate-mapping package="org.hibernate.ejb.test.pack.explodedpar">
|
||||||
package="org.hibernate.ejb.test.pack.explodedpar"
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
<class name="Elephant">
|
<class name="Elephant">
|
||||||
|
|
||||||
<id name="id">
|
<id name="id">
|
||||||
<generator class="native"/>
|
<generator class="native"/>
|
||||||
</id>
|
</id>
|
||||||
<property name="name"/>
|
<property name="name"/>
|
||||||
|
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
</hibernate-mapping>
|
</hibernate-mapping>
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
Manifest-Version: 1.0
|
|
||||||
Ant-Version: Apache Ant 1.6.3
|
|
||||||
Created-By: 1.5.0_03-b07 (Sun Microsystems Inc.)
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<entity-mappings 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"
|
|
||||||
version="1.0"
|
|
||||||
>
|
|
||||||
<persistence-unit-metadata>
|
|
||||||
<persistence-unit-defaults>
|
|
||||||
<entity-listeners>
|
|
||||||
<entity-listener class="org.hibernate.ejb.test.pack.defaultpar.IncrementListener">
|
|
||||||
<pre-persist method-name="increment"/>
|
|
||||||
</entity-listener>
|
|
||||||
</entity-listeners>
|
|
||||||
</persistence-unit-defaults>
|
|
||||||
</persistence-unit-metadata>
|
|
||||||
<package>org.hibernate.ejb.test.pack.defaultpar</package>
|
|
||||||
<entity class="Lighter" access="FIELD" metadata-complete="true">
|
|
||||||
<attributes>
|
|
||||||
<id name="name">
|
|
||||||
<column name="fld_id"/>
|
|
||||||
</id>
|
|
||||||
<basic name="power"></basic>
|
|
||||||
</attributes>
|
|
||||||
</entity>
|
|
||||||
<entity class="ApplicationServer">
|
|
||||||
<entity-listeners>
|
|
||||||
<entity-listener class="OtherIncrementListener">
|
|
||||||
<pre-persist method-name="increment"/>
|
|
||||||
</entity-listener>
|
|
||||||
</entity-listeners>
|
|
||||||
</entity>
|
|
||||||
</entity-mappings>
|
|
|
@ -1,20 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- example of a default persistence.xml -->
|
|
||||||
<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 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
|
|
||||||
version="2.0">
|
|
||||||
<persistence-unit name="defaultpar">
|
|
||||||
<class>org.hibernate.ejb.test.pack.defaultpar.Lighter</class>
|
|
||||||
<properties>
|
|
||||||
<property name="hibernate.dialect" value="${db.dialect}"/>
|
|
||||||
<property name="hibernate.connection.driver_class" value="${jdbc.driver}"/>
|
|
||||||
<property name="hibernate.connection.username" value="${jdbc.user}"/>
|
|
||||||
<property name="hibernate.connection.password" value="${jdbc.pass}"/>
|
|
||||||
<property name="hibernate.connection.url" value="${jdbc.url}"/>
|
|
||||||
<property name="hibernate.connection.isolation" value="${jdbc.isolation}"/>
|
|
||||||
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
|
|
||||||
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
|
|
||||||
</properties>
|
|
||||||
</persistence-unit>
|
|
||||||
</persistence>
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?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.ejb.test.pack.war"
|
|
||||||
>
|
|
||||||
|
|
||||||
<class name="Mouse">
|
|
||||||
|
|
||||||
<id name="id">
|
|
||||||
<generator class="native"/>
|
|
||||||
</id>
|
|
||||||
<property name="name"/>
|
|
||||||
|
|
||||||
</class>
|
|
||||||
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// $Id:$
|
||||||
/*
|
/*
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
*
|
*
|
||||||
|
@ -81,11 +82,16 @@ public abstract class TestCase extends HibernateTestCase {
|
||||||
cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
|
cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
|
||||||
}
|
}
|
||||||
cfg.setProperty( AnnotationConfiguration.USE_NEW_ID_GENERATOR_MAPPINGS, "true" );
|
cfg.setProperty( AnnotationConfiguration.USE_NEW_ID_GENERATOR_MAPPINGS, "true" );
|
||||||
|
|
||||||
|
for ( String mappingFile : getMappings() ) {
|
||||||
|
cfg.addResource( mappingFile );
|
||||||
|
}
|
||||||
|
|
||||||
factory = ejbconfig.createEntityManagerFactory( getConfig() );
|
factory = ejbconfig.createEntityManagerFactory( getConfig() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cleanUnclosed(EntityManager em){
|
private void cleanUnclosed(EntityManager em) {
|
||||||
if(em == null) {
|
if ( em == null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( em.getTransaction().isActive() ) {
|
if ( em.getTransaction().isActive() ) {
|
||||||
|
@ -99,10 +105,11 @@ public abstract class TestCase extends HibernateTestCase {
|
||||||
log.warn( "The EntityManager is not closed. Closing it." );
|
log.warn( "The EntityManager is not closed. Closing it." );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected void handleUnclosedResources(){
|
|
||||||
|
protected void handleUnclosedResources() {
|
||||||
cleanUnclosed( this.em );
|
cleanUnclosed( this.em );
|
||||||
for ( Iterator iter = isolatedEms.iterator(); iter.hasNext();) {
|
for ( Iterator iter = isolatedEms.iterator(); iter.hasNext(); ) {
|
||||||
cleanUnclosed( (EntityManager)iter.next() );
|
cleanUnclosed( ( EntityManager ) iter.next() );
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg = null;
|
cfg = null;
|
||||||
|
@ -122,7 +129,7 @@ public abstract class TestCase extends HibernateTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManager createIsolatedEntityManager() {
|
protected EntityManager createIsolatedEntityManager() {
|
||||||
EntityManager isolatedEm = factory.createEntityManager( );
|
EntityManager isolatedEm = factory.createEntityManager();
|
||||||
isolatedEms.add( isolatedEm );
|
isolatedEms.add( isolatedEm );
|
||||||
return isolatedEm;
|
return isolatedEm;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// $Id:$
|
||||||
/*
|
/*
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
*
|
*
|
||||||
|
@ -61,8 +62,6 @@ public abstract class TestCase extends junit.framework.TestCase {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
private void buildConfiguration() {
|
private void buildConfiguration() {
|
||||||
configuration = new Ejb3Configuration();
|
configuration = new Ejb3Configuration();
|
||||||
configuration.addProperties( loadProperties() );
|
configuration.addProperties( loadProperties() );
|
||||||
|
|
|
@ -1,223 +1,235 @@
|
||||||
//$Id$
|
// $Id:$
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
package org.hibernate.ejb.test.ops;
|
package org.hibernate.ejb.test.ops;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.PersistenceException;
|
||||||
|
import javax.persistence.RollbackException;
|
||||||
|
|
||||||
import junit.framework.Test;
|
|
||||||
import junit.framework.TestSuite;
|
|
||||||
import org.hibernate.PersistentObjectException;
|
|
||||||
import org.hibernate.Session;
|
|
||||||
import org.hibernate.Transaction;
|
|
||||||
import org.hibernate.cfg.Configuration;
|
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.ejb.test.EJB3TestCase;
|
import org.hibernate.ejb.EntityManagerFactoryImpl;
|
||||||
import org.hibernate.exception.ConstraintViolationException;
|
import org.hibernate.ejb.test.TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Gavin King
|
* @author Gavin King
|
||||||
|
* @author Hardy Ferentschik
|
||||||
*/
|
*/
|
||||||
public class PersistTest extends EJB3TestCase {
|
public class PersistTest extends TestCase {
|
||||||
|
|
||||||
public PersistTest(String str) {
|
|
||||||
super( str );
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCreateTree() {
|
public void testCreateTree() {
|
||||||
|
|
||||||
clearCounts();
|
clearCounts();
|
||||||
|
EntityManager em = getOrCreateEntityManager();
|
||||||
Session s = openSession();
|
em.getTransaction().begin();
|
||||||
Transaction tx = s.beginTransaction();
|
|
||||||
Node root = new Node( "root" );
|
Node root = new Node( "root" );
|
||||||
Node child = new Node( "child" );
|
Node child = new Node( "child" );
|
||||||
root.addChild( child );
|
root.addChild( child );
|
||||||
s.persist( root );
|
em.persist( root );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
assertInsertCount( 2 );
|
assertInsertCount( 2 );
|
||||||
assertUpdateCount( 0 );
|
assertUpdateCount( 0 );
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
root = (Node) s.get( Node.class, "root" );
|
root = ( Node ) em.find( Node.class, "root" );
|
||||||
Node child2 = new Node( "child2" );
|
Node child2 = new Node( "child2" );
|
||||||
root.addChild( child2 );
|
root.addChild( child2 );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
assertInsertCount( 3 );
|
assertInsertCount( 3 );
|
||||||
assertUpdateCount( 0 );
|
assertUpdateCount( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCreateTreeWithGeneratedId() {
|
public void testCreateTreeWithGeneratedId() {
|
||||||
|
|
||||||
clearCounts();
|
clearCounts();
|
||||||
|
|
||||||
Session s = openSession();
|
EntityManager em = getOrCreateEntityManager();
|
||||||
Transaction tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
NumberedNode root = new NumberedNode( "root" );
|
NumberedNode root = new NumberedNode( "root" );
|
||||||
NumberedNode child = new NumberedNode( "child" );
|
NumberedNode child = new NumberedNode( "child" );
|
||||||
root.addChild( child );
|
root.addChild( child );
|
||||||
s.persist( root );
|
em.persist( root );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
assertInsertCount( 2 );
|
assertInsertCount( 2 );
|
||||||
assertUpdateCount( 0 );
|
assertUpdateCount( 0 );
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
root = (NumberedNode) s.get( NumberedNode.class, new Long( root.getId() ) );
|
root = ( NumberedNode ) em.find( NumberedNode.class, root.getId() );
|
||||||
NumberedNode child2 = new NumberedNode( "child2" );
|
NumberedNode child2 = new NumberedNode( "child2" );
|
||||||
root.addChild( child2 );
|
root.addChild( child2 );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
assertInsertCount( 3 );
|
assertInsertCount( 3 );
|
||||||
assertUpdateCount( 0 );
|
assertUpdateCount( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCreateException() {
|
public void testCreateException() {
|
||||||
Session s = openSession();
|
EntityManager em = getOrCreateEntityManager();
|
||||||
Transaction tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
Node dupe = new Node( "dupe" );
|
Node dupe = new Node( "dupe" );
|
||||||
s.persist( dupe );
|
em.persist( dupe );
|
||||||
s.persist( dupe );
|
em.persist( dupe );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
s.persist( dupe );
|
em.persist( dupe );
|
||||||
try {
|
try {
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
fail( "Cannot persist() twice the same entity" );
|
fail( "Cannot persist() twice the same entity" );
|
||||||
}
|
}
|
||||||
catch (ConstraintViolationException cve) {
|
catch ( Exception cve ) {
|
||||||
//verify that an exception is thrown!
|
//verify that an exception is thrown!
|
||||||
}
|
}
|
||||||
tx.rollback();
|
em.close();
|
||||||
s.close();
|
|
||||||
|
|
||||||
Node nondupe = new Node( "nondupe" );
|
Node nondupe = new Node( "nondupe" );
|
||||||
nondupe.addChild( dupe );
|
nondupe.addChild( dupe );
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
s.persist( nondupe );
|
em.persist( nondupe );
|
||||||
try {
|
try {
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
assertFalse( true );
|
assertFalse( true );
|
||||||
}
|
}
|
||||||
catch (ConstraintViolationException cve) {
|
catch ( RollbackException e ) {
|
||||||
//verify that an exception is thrown!
|
//verify that an exception is thrown!
|
||||||
}
|
}
|
||||||
tx.rollback();
|
em.close();
|
||||||
s.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCreateExceptionWithGeneratedId() {
|
public void testCreateExceptionWithGeneratedId() {
|
||||||
Session s = openSession();
|
EntityManager em = getOrCreateEntityManager();
|
||||||
Transaction tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
NumberedNode dupe = new NumberedNode( "dupe" );
|
NumberedNode dupe = new NumberedNode( "dupe" );
|
||||||
s.persist( dupe );
|
em.persist( dupe );
|
||||||
s.persist( dupe );
|
em.persist( dupe );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
try {
|
try {
|
||||||
s.persist( dupe );
|
em.persist( dupe );
|
||||||
fail();
|
fail();
|
||||||
}
|
}
|
||||||
catch (PersistentObjectException poe) {
|
catch ( PersistenceException poe ) {
|
||||||
//verify that an exception is thrown!
|
//verify that an exception is thrown!
|
||||||
}
|
}
|
||||||
tx.rollback();
|
em.getTransaction().rollback();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
NumberedNode nondupe = new NumberedNode( "nondupe" );
|
NumberedNode nondupe = new NumberedNode( "nondupe" );
|
||||||
nondupe.addChild( dupe );
|
nondupe.addChild( dupe );
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
try {
|
try {
|
||||||
s.persist( nondupe );
|
em.persist( nondupe );
|
||||||
fail();
|
fail();
|
||||||
}
|
}
|
||||||
catch (PersistentObjectException poe) {
|
catch ( PersistenceException poe ) {
|
||||||
//verify that an exception is thrown!
|
//verify that an exception is thrown!
|
||||||
}
|
}
|
||||||
tx.rollback();
|
em.getTransaction().rollback();
|
||||||
s.close();
|
em.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBasic() throws Exception {
|
public void testBasic() throws Exception {
|
||||||
Session s;
|
|
||||||
Transaction tx;
|
EntityManager em = getOrCreateEntityManager();
|
||||||
s = openSession();
|
em.getTransaction().begin();
|
||||||
tx = s.beginTransaction();
|
|
||||||
Employer er = new Employer();
|
Employer er = new Employer();
|
||||||
Employee ee = new Employee();
|
Employee ee = new Employee();
|
||||||
s.persist( ee );
|
em.persist( ee );
|
||||||
Collection erColl = new ArrayList();
|
Collection<Employee> erColl = new ArrayList<Employee>();
|
||||||
Collection eeColl = new ArrayList();
|
Collection<Employer> eeColl = new ArrayList<Employer>();
|
||||||
erColl.add( ee );
|
erColl.add( ee );
|
||||||
eeColl.add( er );
|
eeColl.add( er );
|
||||||
er.setEmployees( erColl );
|
er.setEmployees( erColl );
|
||||||
ee.setEmployers( eeColl );
|
ee.setEmployers( eeColl );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
|
|
||||||
s = openSession();
|
em = getOrCreateEntityManager();
|
||||||
tx = s.beginTransaction();
|
em.getTransaction().begin();
|
||||||
er = (Employer) s.load( Employer.class, er.getId() );
|
er = ( Employer ) em.find( Employer.class, er.getId() );
|
||||||
assertNotNull( er );
|
assertNotNull( er );
|
||||||
assertNotNull( er.getEmployees() );
|
assertNotNull( er.getEmployees() );
|
||||||
assertEquals( 1, er.getEmployees().size() );
|
assertEquals( 1, er.getEmployees().size() );
|
||||||
Employee eeFromDb = (Employee) er.getEmployees().iterator().next();
|
Employee eeFromDb = ( Employee ) er.getEmployees().iterator().next();
|
||||||
assertEquals( ee.getId(), eeFromDb.getId() );
|
assertEquals( ee.getId(), eeFromDb.getId() );
|
||||||
tx.commit();
|
em.getTransaction().commit();
|
||||||
s.close();
|
em.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearCounts() {
|
private void clearCounts() {
|
||||||
getSessions().getStatistics().clear();
|
( ( EntityManagerFactoryImpl ) factory ).getSessionFactory().getStatistics().clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertInsertCount(int count) {
|
private void assertInsertCount(int count) {
|
||||||
int inserts = (int) getSessions().getStatistics().getEntityInsertCount();
|
int inserts = ( int ) ( ( EntityManagerFactoryImpl ) factory ).getSessionFactory()
|
||||||
|
.getStatistics()
|
||||||
|
.getEntityInsertCount();
|
||||||
assertEquals( count, inserts );
|
assertEquals( count, inserts );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertUpdateCount(int count) {
|
private void assertUpdateCount(int count) {
|
||||||
int updates = (int) getSessions().getStatistics().getEntityUpdateCount();
|
int updates = ( int ) ( ( EntityManagerFactoryImpl ) factory ).getSessionFactory()
|
||||||
|
.getStatistics()
|
||||||
|
.getEntityUpdateCount();
|
||||||
assertEquals( count, updates );
|
assertEquals( count, updates );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void configure(Configuration cfg) {
|
protected void addConfigOptions(Map options) {
|
||||||
super.configure( cfg );
|
options.put( Environment.GENERATE_STATISTICS, "true" );
|
||||||
cfg.setProperty( Environment.GENERATE_STATISTICS, "true" );
|
options.put( Environment.STATEMENT_BATCH_SIZE, "0" );
|
||||||
cfg.setProperty( Environment.STATEMENT_BATCH_SIZE, "0" );
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<?>[] getAnnotatedClasses() {
|
||||||
|
return new Class<?>[] { Node.class };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String[] getMappings() {
|
protected String[] getMappings() {
|
||||||
return new String[]{
|
return new String[] {
|
||||||
"ops/Node.hbm.xml",
|
"org/hibernate/ejb/test/ops/Node.hbm.xml",
|
||||||
"ops/Employer.hbm.xml"
|
"org/hibernate/ejb/test/ops/Employer.hbm.xml"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Test suite() {
|
|
||||||
return new TestSuite( PersistTest.class );
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCacheConcurrencyStrategy() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
@NamedQuery(name = "countItems", query = "select count(i) from Item i") package org.hibernate.ejb.test;
|
|
||||||
|
|
||||||
import org.hibernate.annotations.NamedQuery;
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// $Id:$
|
||||||
/*
|
/*
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
*
|
*
|
||||||
|
@ -28,13 +29,10 @@ import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.persistence.Embeddable;
|
import javax.persistence.Embeddable;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.MappedSuperclass;
|
import javax.persistence.MappedSuperclass;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
import org.hibernate.ejb.packaging.ClassFilter;
|
import org.hibernate.ejb.packaging.ClassFilter;
|
||||||
import org.hibernate.ejb.packaging.Entry;
|
import org.hibernate.ejb.packaging.Entry;
|
||||||
import org.hibernate.ejb.packaging.ExplodedJarVisitor;
|
import org.hibernate.ejb.packaging.ExplodedJarVisitor;
|
||||||
|
@ -48,38 +46,13 @@ import org.hibernate.ejb.packaging.JarVisitorFactory;
|
||||||
import org.hibernate.ejb.packaging.PackageFilter;
|
import org.hibernate.ejb.packaging.PackageFilter;
|
||||||
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
|
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
|
||||||
import org.hibernate.ejb.test.pack.explodedpar.Carpet;
|
import org.hibernate.ejb.test.pack.explodedpar.Carpet;
|
||||||
import org.hibernate.junit.FailureExpected;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Emmanuel Bernard
|
* @author Emmanuel Bernard
|
||||||
|
* @author Hardy Ferentschik
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class JarVisitorTest extends TestCase {
|
public class JarVisitorTest extends PackagingTestCase {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(JarVisitorTest.class);
|
|
||||||
|
|
||||||
private static String jarFileBase;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
URL myUrl = JarVisitorTest.class.getClassLoader().getResource( JarVisitorTest.class.getName().replace( '.', '/' ) + ".class" );
|
|
||||||
File myPath = new File( myUrl.getFile() );
|
|
||||||
// navigate back to '/target'
|
|
||||||
File targetDir = myPath
|
|
||||||
.getParentFile() // target/classes/org/hibernate/ejb/test/packaging
|
|
||||||
.getParentFile() // target/classes/org/hibernate/ejb/test
|
|
||||||
.getParentFile() // target/classes/org/hibernate/ejb
|
|
||||||
.getParentFile() // target/classes/org/hibernate
|
|
||||||
.getParentFile() // target/classes/org
|
|
||||||
.getParentFile() // target/classes
|
|
||||||
.getParentFile(); // target
|
|
||||||
jarFileBase = new File( targetDir, "test-packages" ).toURL().toExternalForm();
|
|
||||||
super.setUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void testHttp() throws Exception {
|
public void testHttp() throws Exception {
|
||||||
URL url = JarVisitorFactory.getJarURLFromURLEntry(
|
URL url = JarVisitorFactory.getJarURLFromURLEntry(
|
||||||
|
@ -92,7 +65,7 @@ public class JarVisitorTest extends TestCase {
|
||||||
URLConnection urlConnection = url.openConnection();
|
URLConnection urlConnection = url.openConnection();
|
||||||
urlConnection.connect();
|
urlConnection.connect();
|
||||||
}
|
}
|
||||||
catch (IOException ie) {
|
catch ( IOException ie ) {
|
||||||
//fail silently
|
//fail silently
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -102,11 +75,12 @@ public class JarVisitorTest extends TestCase {
|
||||||
assertEquals( 0, visitor.getMatchingEntries()[2].size() );
|
assertEquals( 0, visitor.getMatchingEntries()[2].size() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@FailureExpected( jiraKey = "")
|
|
||||||
public void testInputStreamZippedJar() throws Exception {
|
public void testInputStreamZippedJar() throws Exception {
|
||||||
String jarFileName = jarFileBase + "defaultpar.par";
|
File defaultPar = buildDefaultPar();
|
||||||
|
addPackageToClasspath( defaultPar );
|
||||||
|
|
||||||
Filter[] filters = getFilters();
|
Filter[] filters = getFilters();
|
||||||
JarVisitor jarVisitor = new InputStreamZippedJarVisitor( new URL( jarFileName ), filters, "" );
|
JarVisitor jarVisitor = new InputStreamZippedJarVisitor( defaultPar.toURL(), filters, "" );
|
||||||
assertEquals( "defaultpar", jarVisitor.getUnqualifiedJarName() );
|
assertEquals( "defaultpar", jarVisitor.getUnqualifiedJarName() );
|
||||||
Set entries = jarVisitor.getMatchingEntries()[1];
|
Set entries = jarVisitor.getMatchingEntries()[1];
|
||||||
assertEquals( 3, entries.size() );
|
assertEquals( 3, entries.size() );
|
||||||
|
@ -114,16 +88,21 @@ public class JarVisitorTest extends TestCase {
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
assertNull( ( (Entry) entries.iterator().next() ).getInputStream() );
|
assertNull( ( ( Entry ) entries.iterator().next() ).getInputStream() );
|
||||||
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
||||||
for (Entry localEntry : (Set<Entry>) jarVisitor.getMatchingEntries()[2] ) {
|
for ( Entry localEntry : ( Set<Entry> ) jarVisitor.getMatchingEntries()[2] ) {
|
||||||
assertNotNull( localEntry.getInputStream() );
|
assertNotNull( localEntry.getInputStream() );
|
||||||
localEntry.getInputStream().close();
|
localEntry.getInputStream().close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testNestedJarProtocol() throws Exception {
|
public void testNestedJarProtocol() throws Exception {
|
||||||
String jarFileName = jarFileBase + "/nestedjar.ear!/defaultpar.par";
|
File defaultPar = buildDefaultPar();
|
||||||
|
File nestedEar = buildNestedEar( defaultPar );
|
||||||
|
File nestedEarDir = buildNestedEarDir( defaultPar );
|
||||||
|
addPackageToClasspath( nestedEar );
|
||||||
|
|
||||||
|
String jarFileName = nestedEar.toURL().toExternalForm() + "!/defaultpar.par";
|
||||||
Filter[] filters = getFilters();
|
Filter[] filters = getFilters();
|
||||||
JarVisitor jarVisitor = new JarProtocolVisitor( new URL( jarFileName ), filters, "" );
|
JarVisitor jarVisitor = new JarProtocolVisitor( new URL( jarFileName ), filters, "" );
|
||||||
//TODO should we fix the name here to reach defaultpar rather than nestedjar ??
|
//TODO should we fix the name here to reach defaultpar rather than nestedjar ??
|
||||||
|
@ -134,14 +113,14 @@ public class JarVisitorTest extends TestCase {
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
assertNull( ( (Entry) entries.iterator().next() ).getInputStream() );
|
assertNull( ( ( Entry ) entries.iterator().next() ).getInputStream() );
|
||||||
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
||||||
for (Entry localEntry : (Set<Entry>) jarVisitor.getMatchingEntries()[2] ) {
|
for ( Entry localEntry : ( Set<Entry> ) jarVisitor.getMatchingEntries()[2] ) {
|
||||||
assertNotNull( localEntry.getInputStream() );
|
assertNotNull( localEntry.getInputStream() );
|
||||||
localEntry.getInputStream().close();
|
localEntry.getInputStream().close();
|
||||||
}
|
}
|
||||||
|
|
||||||
jarFileName = jarFileBase + "/nesteddir.ear!/defaultpar.par";
|
jarFileName = nestedEarDir.toURL().toExternalForm() + "!/defaultpar.par";
|
||||||
//JarVisitor jarVisitor = new ZippedJarVisitor( jarFileName, true, true );
|
//JarVisitor jarVisitor = new ZippedJarVisitor( jarFileName, true, true );
|
||||||
filters = getFilters();
|
filters = getFilters();
|
||||||
jarVisitor = new JarProtocolVisitor( new URL( jarFileName ), filters, "" );
|
jarVisitor = new JarProtocolVisitor( new URL( jarFileName ), filters, "" );
|
||||||
|
@ -153,16 +132,19 @@ public class JarVisitorTest extends TestCase {
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
assertNull( ( (Entry) entries.iterator().next() ).getInputStream() );
|
assertNull( ( ( Entry ) entries.iterator().next() ).getInputStream() );
|
||||||
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
||||||
for (Entry localEntry : (Set<Entry>) jarVisitor.getMatchingEntries()[2] ) {
|
for ( Entry localEntry : ( Set<Entry> ) jarVisitor.getMatchingEntries()[2] ) {
|
||||||
assertNotNull( localEntry.getInputStream() );
|
assertNotNull( localEntry.getInputStream() );
|
||||||
localEntry.getInputStream().close();
|
localEntry.getInputStream().close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testJarProtocol() throws Exception {
|
public void testJarProtocol() throws Exception {
|
||||||
String jarFileName = jarFileBase + "/war.war!/WEB-INF/classes";
|
File war = buildWar();
|
||||||
|
addPackageToClasspath( war );
|
||||||
|
|
||||||
|
String jarFileName = war.toURL().toExternalForm() + "!/WEB-INF/classes";
|
||||||
Filter[] filters = getFilters();
|
Filter[] filters = getFilters();
|
||||||
JarVisitor jarVisitor = new JarProtocolVisitor( new URL( jarFileName ), filters, "" );
|
JarVisitor jarVisitor = new JarProtocolVisitor( new URL( jarFileName ), filters, "" );
|
||||||
assertEquals( "war", jarVisitor.getUnqualifiedJarName() );
|
assertEquals( "war", jarVisitor.getUnqualifiedJarName() );
|
||||||
|
@ -172,18 +154,20 @@ public class JarVisitorTest extends TestCase {
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
entry = new Entry( org.hibernate.ejb.test.pack.war.Version.class.getName(), null );
|
entry = new Entry( org.hibernate.ejb.test.pack.war.Version.class.getName(), null );
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
assertNull( ( (Entry) entries.iterator().next() ).getInputStream() );
|
assertNull( ( ( Entry ) entries.iterator().next() ).getInputStream() );
|
||||||
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
||||||
for (Entry localEntry : (Set<Entry>) jarVisitor.getMatchingEntries()[2] ) {
|
for ( Entry localEntry : ( Set<Entry> ) jarVisitor.getMatchingEntries()[2] ) {
|
||||||
assertNotNull( localEntry.getInputStream() );
|
assertNotNull( localEntry.getInputStream() );
|
||||||
localEntry.getInputStream().close();
|
localEntry.getInputStream().close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testZippedJar() throws Exception {
|
public void testZippedJar() throws Exception {
|
||||||
String jarFileName = jarFileBase + "/defaultpar.par";
|
File defaultPar = buildDefaultPar();
|
||||||
|
addPackageToClasspath( defaultPar );
|
||||||
|
|
||||||
Filter[] filters = getFilters();
|
Filter[] filters = getFilters();
|
||||||
JarVisitor jarVisitor = new FileZippedJarVisitor( new URL( jarFileName ), filters, "" );
|
JarVisitor jarVisitor = new FileZippedJarVisitor( defaultPar.toURL(), filters, "" );
|
||||||
assertEquals( "defaultpar", jarVisitor.getUnqualifiedJarName() );
|
assertEquals( "defaultpar", jarVisitor.getUnqualifiedJarName() );
|
||||||
Set entries = jarVisitor.getMatchingEntries()[1];
|
Set entries = jarVisitor.getMatchingEntries()[1];
|
||||||
assertEquals( 3, entries.size() );
|
assertEquals( 3, entries.size() );
|
||||||
|
@ -191,19 +175,25 @@ public class JarVisitorTest extends TestCase {
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
entry = new Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null );
|
||||||
assertTrue( entries.contains( entry ) );
|
assertTrue( entries.contains( entry ) );
|
||||||
assertNull( ( (Entry) entries.iterator().next() ).getInputStream() );
|
assertNull( ( ( Entry ) entries.iterator().next() ).getInputStream() );
|
||||||
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
|
||||||
for (Entry localEntry : (Set<Entry>) jarVisitor.getMatchingEntries()[2] ) {
|
for ( Entry localEntry : ( Set<Entry> ) jarVisitor.getMatchingEntries()[2] ) {
|
||||||
assertNotNull( localEntry.getInputStream() );
|
assertNotNull( localEntry.getInputStream() );
|
||||||
localEntry.getInputStream().close();
|
localEntry.getInputStream().close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void testExplodedJar() throws Exception {
|
public void testExplodedJar() throws Exception {
|
||||||
String jarFileName = jarFileBase + "/explodedpar.par";
|
File explodedPar = buildExplodedPar();
|
||||||
|
addPackageToClasspath( explodedPar );
|
||||||
|
|
||||||
Filter[] filters = getFilters();
|
Filter[] filters = getFilters();
|
||||||
JarVisitor jarVisitor = new ExplodedJarVisitor( jarFileName, filters );
|
String dirPath = explodedPar.toURL().toExternalForm();
|
||||||
|
// TODO - shouldn't ExplodedJarVisitor take care of a trailing slash?
|
||||||
|
if ( dirPath.endsWith( "/" ) ) {
|
||||||
|
dirPath = dirPath.substring( 0, dirPath.length() - 1 );
|
||||||
|
}
|
||||||
|
JarVisitor jarVisitor = new ExplodedJarVisitor( dirPath, filters );
|
||||||
assertEquals( "explodedpar", jarVisitor.getUnqualifiedJarName() );
|
assertEquals( "explodedpar", jarVisitor.getUnqualifiedJarName() );
|
||||||
Set[] entries = jarVisitor.getMatchingEntries();
|
Set[] entries = jarVisitor.getMatchingEntries();
|
||||||
assertEquals( 1, entries[1].size() );
|
assertEquals( 1, entries[1].size() );
|
||||||
|
@ -212,7 +202,7 @@ public class JarVisitorTest extends TestCase {
|
||||||
|
|
||||||
Entry entry = new Entry( Carpet.class.getName(), null );
|
Entry entry = new Entry( Carpet.class.getName(), null );
|
||||||
assertTrue( entries[1].contains( entry ) );
|
assertTrue( entries[1].contains( entry ) );
|
||||||
for (Entry localEntry : (Set<Entry>) jarVisitor.getMatchingEntries()[2] ) {
|
for ( Entry localEntry : ( Set<Entry> ) jarVisitor.getMatchingEntries()[2] ) {
|
||||||
assertNotNull( localEntry.getInputStream() );
|
assertNotNull( localEntry.getInputStream() );
|
||||||
localEntry.getInputStream().close();
|
localEntry.getInputStream().close();
|
||||||
}
|
}
|
||||||
|
@ -222,10 +212,9 @@ public class JarVisitorTest extends TestCase {
|
||||||
* EJB-230
|
* EJB-230
|
||||||
*/
|
*/
|
||||||
public void testDuplicateFilterExplodedJarExpected() throws Exception {
|
public void testDuplicateFilterExplodedJarExpected() throws Exception {
|
||||||
|
// File explodedPar = buildExplodedPar();
|
||||||
log.warn("Skipping test! See jira issue EJB-230.");
|
// addPackageToClasspath( explodedPar );
|
||||||
|
//
|
||||||
// String jarFileName = "./build/testresources/explodedpar.par";
|
|
||||||
// Filter[] filters = getFilters();
|
// Filter[] filters = getFilters();
|
||||||
// Filter[] dupeFilters = new Filter[filters.length * 2];
|
// Filter[] dupeFilters = new Filter[filters.length * 2];
|
||||||
// int index = 0;
|
// int index = 0;
|
||||||
|
@ -236,20 +225,25 @@ public class JarVisitorTest extends TestCase {
|
||||||
// for ( Filter filter : filters ) {
|
// for ( Filter filter : filters ) {
|
||||||
// dupeFilters[index++] = filter;
|
// dupeFilters[index++] = filter;
|
||||||
// }
|
// }
|
||||||
// JarVisitor jarVisitor = new ExplodedJarVisitor( jarFileName, dupeFilters );
|
// String dirPath = explodedPar.toURL().toExternalForm();
|
||||||
|
// // TODO - shouldn't ExplodedJarVisitor take care of a trailing slash?
|
||||||
|
// if ( dirPath.endsWith( "/" ) ) {
|
||||||
|
// dirPath = dirPath.substring( 0, dirPath.length() - 1 );
|
||||||
|
// }
|
||||||
|
// JarVisitor jarVisitor = new ExplodedJarVisitor( dirPath, dupeFilters );
|
||||||
// assertEquals( "explodedpar", jarVisitor.getUnqualifiedJarName() );
|
// assertEquals( "explodedpar", jarVisitor.getUnqualifiedJarName() );
|
||||||
// Set[] entries = jarVisitor.getMatchingEntries();
|
// Set[] entries = jarVisitor.getMatchingEntries();
|
||||||
// assertEquals( 1, entries[1].size() );
|
// assertEquals( 1, entries[1].size() );
|
||||||
// assertEquals( 1, entries[0].size() );
|
// assertEquals( 1, entries[0].size() );
|
||||||
// assertEquals( 1, entries[2].size() );
|
// assertEquals( 1, entries[2].size() );
|
||||||
// for ( Entry entry : (Set<Entry>) entries[2] ) {
|
// for ( Entry entry : ( Set<Entry> ) entries[2] ) {
|
||||||
// InputStream is = entry.getInputStream();
|
// InputStream is = entry.getInputStream();
|
||||||
// if ( is != null ) {
|
// if ( is != null ) {
|
||||||
// assertTrue( 0 < is.available() );
|
// assertTrue( 0 < is.available() );
|
||||||
// is.close();
|
// is.close();
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// for ( Entry entry : (Set<Entry>) entries[5] ) {
|
// for ( Entry entry : ( Set<Entry> ) entries[5] ) {
|
||||||
// InputStream is = entry.getInputStream();
|
// InputStream is = entry.getInputStream();
|
||||||
// if ( is != null ) {
|
// if ( is != null ) {
|
||||||
// assertTrue( 0 < is.available() );
|
// assertTrue( 0 < is.available() );
|
||||||
|
@ -262,17 +256,18 @@ public class JarVisitorTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Filter[] getFilters() {
|
private Filter[] getFilters() {
|
||||||
return new Filter[]{
|
return new Filter[] {
|
||||||
new PackageFilter( false, null ) {
|
new PackageFilter( false, null ) {
|
||||||
public boolean accept(String javaElementName) {
|
public boolean accept(String javaElementName) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new ClassFilter(
|
new ClassFilter(
|
||||||
false, new Class[]{
|
false, new Class[] {
|
||||||
Entity.class,
|
Entity.class,
|
||||||
MappedSuperclass.class,
|
MappedSuperclass.class,
|
||||||
Embeddable.class}
|
Embeddable.class
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
public boolean accept(String javaElementName) {
|
public boolean accept(String javaElementName) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,15 +1,37 @@
|
||||||
|
// $Id:$
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
package org.hibernate.ejb.test.packaging;
|
package org.hibernate.ejb.test.packaging;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.net.URL;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.persistence.Embeddable;
|
import javax.persistence.Embeddable;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.MappedSuperclass;
|
import javax.persistence.MappedSuperclass;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
import org.hibernate.ejb.packaging.NamedInputStream;
|
import org.hibernate.ejb.packaging.NamedInputStream;
|
||||||
import org.hibernate.ejb.packaging.NativeScanner;
|
import org.hibernate.ejb.packaging.NativeScanner;
|
||||||
import org.hibernate.ejb.packaging.Scanner;
|
import org.hibernate.ejb.packaging.Scanner;
|
||||||
|
@ -18,34 +40,33 @@ import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Emmanuel Bernard
|
* @author Emmanuel Bernard
|
||||||
|
* @author Hardy Ferentschik
|
||||||
*/
|
*/
|
||||||
public class NativeScannerTest extends TestCase {
|
public class NativeScannerTest extends PackagingTestCase {
|
||||||
private static final String jarFileBase = "file:./target/test-packages";
|
|
||||||
|
|
||||||
public void testNativeScanner() throws Exception {
|
public void testNativeScanner() throws Exception {
|
||||||
String jarFileName = jarFileBase + "/defaultpar.par";
|
File defaultPar = buildDefaultPar();
|
||||||
|
addPackageToClasspath( defaultPar );
|
||||||
|
|
||||||
Scanner scanner = new NativeScanner();
|
Scanner scanner = new NativeScanner();
|
||||||
|
assertEquals( "defaultpar", scanner.getUnqualifiedJarName( defaultPar.toURL() ) );
|
||||||
|
|
||||||
final URL jarUrl = new URL( jarFileName );
|
Set<Class<? extends Annotation>> annotationsToLookFor = new HashSet<Class<? extends Annotation>>( 3 );
|
||||||
assertEquals( "defaultpar", scanner.getUnqualifiedJarName( jarUrl ) );
|
|
||||||
|
|
||||||
Set<Class<? extends Annotation>> annotationsToLookFor = new HashSet<Class<? extends Annotation>>(3);
|
|
||||||
annotationsToLookFor.add( Entity.class );
|
annotationsToLookFor.add( Entity.class );
|
||||||
annotationsToLookFor.add( MappedSuperclass.class );
|
annotationsToLookFor.add( MappedSuperclass.class );
|
||||||
annotationsToLookFor.add( Embeddable.class );
|
annotationsToLookFor.add( Embeddable.class );
|
||||||
final Set<Class<?>> classes = scanner.getClassesInJar( jarUrl, annotationsToLookFor );
|
final Set<Class<?>> classes = scanner.getClassesInJar( defaultPar.toURL(), annotationsToLookFor );
|
||||||
|
|
||||||
assertEquals( 3, classes.size() );
|
assertEquals( 3, classes.size() );
|
||||||
assertTrue( classes.contains( ApplicationServer.class ) );
|
assertTrue( classes.contains( ApplicationServer.class ) );
|
||||||
assertTrue( classes.contains( org.hibernate.ejb.test.pack.defaultpar.Version.class ) );
|
assertTrue( classes.contains( org.hibernate.ejb.test.pack.defaultpar.Version.class ) );
|
||||||
|
|
||||||
Set<String> filePatterns = new HashSet<String>(2);
|
Set<String> filePatterns = new HashSet<String>( 2 );
|
||||||
filePatterns.add("**/*.hbm.xml");
|
filePatterns.add( "**/*.hbm.xml" );
|
||||||
filePatterns.add("META-INF/orm.xml");
|
filePatterns.add( "META-INF/orm.xml" );
|
||||||
final Set<NamedInputStream> files = scanner.getFilesInJar( jarUrl, filePatterns );
|
final Set<NamedInputStream> files = scanner.getFilesInJar( defaultPar.toURL(), filePatterns );
|
||||||
|
|
||||||
assertEquals( 2, files.size() );
|
assertEquals( 2, files.size() );
|
||||||
for (NamedInputStream file : files ) {
|
for ( NamedInputStream file : files ) {
|
||||||
assertNotNull( file.getStream() );
|
assertNotNull( file.getStream() );
|
||||||
file.getStream().close();
|
file.getStream().close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// $Id:$
|
||||||
/*
|
/*
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
*
|
*
|
||||||
|
@ -21,13 +22,9 @@
|
||||||
* 51 Franklin Street, Fifth Floor
|
* 51 Franklin Street, Fifth Floor
|
||||||
* Boston, MA 02110-1301 USA
|
* Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
package org.hibernate.ejb.test;
|
package org.hibernate.ejb.test.packaging;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLClassLoader;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
@ -38,6 +35,8 @@ import javax.persistence.PersistenceException;
|
||||||
|
|
||||||
import org.hibernate.ejb.AvailableSettings;
|
import org.hibernate.ejb.AvailableSettings;
|
||||||
import org.hibernate.ejb.HibernateEntityManagerFactory;
|
import org.hibernate.ejb.HibernateEntityManagerFactory;
|
||||||
|
import org.hibernate.ejb.test.Distributor;
|
||||||
|
import org.hibernate.ejb.test.Item;
|
||||||
import org.hibernate.ejb.test.pack.cfgxmlpar.Morito;
|
import org.hibernate.ejb.test.pack.cfgxmlpar.Morito;
|
||||||
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
|
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
|
||||||
import org.hibernate.ejb.test.pack.defaultpar.IncrementListener;
|
import org.hibernate.ejb.test.pack.defaultpar.IncrementListener;
|
||||||
|
@ -63,48 +62,22 @@ import org.hibernate.stat.Statistics;
|
||||||
import org.hibernate.util.ConfigHelper;
|
import org.hibernate.util.ConfigHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* In this test we verify that it is possible to bootstrap Hibernate/JPA from
|
||||||
|
* various bundles (war, par, ...) using {@code Persistence.createEntityManagerFactory()}
|
||||||
|
* <p/>
|
||||||
|
* Each test will before its run build the required bundle and place them into the classpath.
|
||||||
|
*
|
||||||
* @author Gavin King
|
* @author Gavin King
|
||||||
|
* @author Hardy Ferentschik
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
public class PackagedEntityManagerTest extends PackagingTestCase {
|
||||||
private static ClassLoader originalClassLoader;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
originalClassLoader = Thread.currentThread().getContextClassLoader();
|
|
||||||
Thread.currentThread().setContextClassLoader( buildCustomTCCL( originalClassLoader ) );
|
|
||||||
super.setUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
private ClassLoader buildCustomTCCL(ClassLoader parentClassLoader) throws MalformedURLException {
|
|
||||||
// get a URL reference to something we now is part of the classpath (us)
|
|
||||||
URL myUrl = parentClassLoader.getResource(
|
|
||||||
PackagedEntityManagerTest.class.getName().replace( '.', '/' ) + ".class"
|
|
||||||
);
|
|
||||||
File myPath = new File( myUrl.getFile() );
|
|
||||||
// navigate back to '/target'
|
|
||||||
File targetDir = myPath
|
|
||||||
.getParentFile() // target/classes/org/hibernate/ejb/test
|
|
||||||
.getParentFile() // target/classes/org/hibernate/ejb
|
|
||||||
.getParentFile() // target/classes/org/hibernate
|
|
||||||
.getParentFile() // target/classes/org
|
|
||||||
.getParentFile() // target/classes/
|
|
||||||
.getParentFile(); // target
|
|
||||||
File testPackagesDir = new File( targetDir, "test-packages" );
|
|
||||||
ArrayList<URL> urls = new ArrayList<URL>();
|
|
||||||
for ( File testPackage : testPackagesDir.listFiles() ) {
|
|
||||||
urls.add( testPackage.toURL() );
|
|
||||||
}
|
|
||||||
return new URLClassLoader( urls.toArray( new URL[urls.size()] ), parentClassLoader );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void tearDown() throws Exception {
|
|
||||||
super.tearDown();
|
|
||||||
Thread.currentThread().setContextClassLoader( originalClassLoader );
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDefaultPar() throws Exception {
|
public void testDefaultPar() throws Exception {
|
||||||
|
File testPackage = buildDefaultPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
|
// run the test
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "defaultpar", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "defaultpar", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
ApplicationServer as = new ApplicationServer();
|
ApplicationServer as = new ApplicationServer();
|
||||||
|
@ -135,6 +108,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDefaultParForPersistence_1_0() throws Exception {
|
public void testDefaultParForPersistence_1_0() throws Exception {
|
||||||
|
File testPackage = buildDefaultPar_1_0();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "defaultpar_1_0", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "defaultpar_1_0", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
ApplicationServer1 as = new ApplicationServer1();
|
ApplicationServer1 as = new ApplicationServer1();
|
||||||
|
@ -165,6 +141,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testListenersDefaultPar() throws Exception {
|
public void testListenersDefaultPar() throws Exception {
|
||||||
|
File testPackage = buildDefaultPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
IncrementListener.reset();
|
IncrementListener.reset();
|
||||||
OtherIncrementListener.reset();
|
OtherIncrementListener.reset();
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "defaultpar", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "defaultpar", new HashMap() );
|
||||||
|
@ -180,7 +159,7 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
em.persist( as );
|
em.persist( as );
|
||||||
em.flush();
|
em.flush();
|
||||||
assertEquals( "Failure in default listeners", 1, IncrementListener.getIncrement() );
|
assertEquals( "Failure in default listeners", 1, IncrementListener.getIncrement() );
|
||||||
assertEquals( "Failuer in XML overriden listeners", 1, OtherIncrementListener.getIncrement() );
|
assertEquals( "Failure in XML overriden listeners", 1, OtherIncrementListener.getIncrement() );
|
||||||
|
|
||||||
Mouse mouse = new Mouse();
|
Mouse mouse = new Mouse();
|
||||||
mouse.setName( "mickey" );
|
mouse.setName( "mickey" );
|
||||||
|
@ -201,6 +180,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExplodedPar() throws Exception {
|
public void testExplodedPar() throws Exception {
|
||||||
|
File testPackage = buildExplodedPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "explodedpar", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "explodedpar", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
org.hibernate.ejb.test.pack.explodedpar.Carpet carpet = new Carpet();
|
org.hibernate.ejb.test.pack.explodedpar.Carpet carpet = new Carpet();
|
||||||
|
@ -219,6 +201,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExcludeHbmPar() throws Exception {
|
public void testExcludeHbmPar() throws Exception {
|
||||||
|
File testPackage = buildExcludeHbmPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = null;
|
EntityManagerFactory emf = null;
|
||||||
try {
|
try {
|
||||||
emf = Persistence.createEntityManagerFactory( "excludehbmpar", new HashMap() );
|
emf = Persistence.createEntityManagerFactory( "excludehbmpar", new HashMap() );
|
||||||
|
@ -252,6 +237,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCfgXmlPar() throws Exception {
|
public void testCfgXmlPar() throws Exception {
|
||||||
|
File testPackage = buildCfgXmlPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "cfgxmlpar", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "cfgxmlpar", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
Item i = new Item();
|
Item i = new Item();
|
||||||
|
@ -274,6 +262,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSpacePar() throws Exception {
|
public void testSpacePar() throws Exception {
|
||||||
|
File testPackage = buildSpacePar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "space par", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "space par", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
Bug bug = new Bug();
|
Bug bug = new Bug();
|
||||||
|
@ -289,6 +280,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOverridenPar() throws Exception {
|
public void testOverridenPar() throws Exception {
|
||||||
|
File testPackage = buildOverridenPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
HashMap properties = new HashMap();
|
HashMap properties = new HashMap();
|
||||||
properties.put( AvailableSettings.JTA_DATASOURCE, null );
|
properties.put( AvailableSettings.JTA_DATASOURCE, null );
|
||||||
Properties p = new Properties();
|
Properties p = new Properties();
|
||||||
|
@ -309,6 +303,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testListeners() throws Exception {
|
public void testListeners() throws Exception {
|
||||||
|
File testPackage = buildExplicitPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
EventListeners eventListeners = em.unwrap( SessionImplementor.class ).getListeners();
|
EventListeners eventListeners = em.unwrap( SessionImplementor.class ).getListeners();
|
||||||
|
@ -322,7 +319,10 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
emf.close();
|
emf.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExtendedEntityManager() {
|
public void testExtendedEntityManager() throws Exception {
|
||||||
|
File testPackage = buildExplicitPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
Item item = new Item( "Mouse", "Micro$oft mouse" );
|
Item item = new Item( "Mouse", "Micro$oft mouse" );
|
||||||
|
@ -369,6 +369,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testConfiguration() throws Exception {
|
public void testConfiguration() throws Exception {
|
||||||
|
File testPackage = buildExplicitPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
||||||
Item item = new Item( "Mouse", "Micro$oft mouse" );
|
Item item = new Item( "Mouse", "Micro$oft mouse" );
|
||||||
Distributor res = new Distributor();
|
Distributor res = new Distributor();
|
||||||
|
@ -418,6 +421,10 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExternalJar() throws Exception {
|
public void testExternalJar() throws Exception {
|
||||||
|
File externalJar = buildExternalJar();
|
||||||
|
File testPackage = buildExplicitPar();
|
||||||
|
addPackageToClasspath( testPackage, externalJar );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
Scooter s = new Scooter();
|
Scooter s = new Scooter();
|
||||||
|
@ -438,6 +445,9 @@ public class PackagedEntityManagerTest extends junit.framework.TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testORMFileOnMainAndExplicitJars() throws Exception {
|
public void testORMFileOnMainAndExplicitJars() throws Exception {
|
||||||
|
File testPackage = buildExplicitPar();
|
||||||
|
addPackageToClasspath( testPackage );
|
||||||
|
|
||||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
Seat seat = new Seat();
|
Seat seat = new Seat();
|
|
@ -0,0 +1,359 @@
|
||||||
|
// $Id:$
|
||||||
|
/*
|
||||||
|
* JBoss, Home of Professional Open Source
|
||||||
|
* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
|
||||||
|
* by the @authors tag. See the copyright.txt in the distribution for a
|
||||||
|
* full listing of individual contributors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.hibernate.ejb.test.packaging;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLClassLoader;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import org.jboss.shrinkwrap.api.ArchivePath;
|
||||||
|
import org.jboss.shrinkwrap.api.ArchivePaths;
|
||||||
|
import org.jboss.shrinkwrap.api.Archives;
|
||||||
|
import org.jboss.shrinkwrap.api.exporter.ExplodedExporter;
|
||||||
|
import org.jboss.shrinkwrap.api.exporter.ZipExporter;
|
||||||
|
import org.jboss.shrinkwrap.api.spec.JavaArchive;
|
||||||
|
import org.jboss.shrinkwrap.api.spec.WebArchive;
|
||||||
|
|
||||||
|
import org.hibernate.ejb.test.Cat;
|
||||||
|
import org.hibernate.ejb.test.Distributor;
|
||||||
|
import org.hibernate.ejb.test.Item;
|
||||||
|
import org.hibernate.ejb.test.Kitten;
|
||||||
|
import org.hibernate.ejb.test.pack.cfgxmlpar.Morito;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.IncrementListener;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.Lighter;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.Money;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.Mouse;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.OtherIncrementListener;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar.Version;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar_1_0.ApplicationServer1;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar_1_0.IncrementListener1;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar_1_0.Lighter1;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar_1_0.Money1;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar_1_0.Mouse1;
|
||||||
|
import org.hibernate.ejb.test.pack.defaultpar_1_0.Version1;
|
||||||
|
import org.hibernate.ejb.test.pack.excludehbmpar.Caipirinha;
|
||||||
|
import org.hibernate.ejb.test.pack.explodedpar.Carpet;
|
||||||
|
import org.hibernate.ejb.test.pack.explodedpar.Elephant;
|
||||||
|
import org.hibernate.ejb.test.pack.externaljar.Scooter;
|
||||||
|
import org.hibernate.ejb.test.pack.spacepar.Bug;
|
||||||
|
import org.hibernate.ejb.test.pack.various.Airplane;
|
||||||
|
import org.hibernate.ejb.test.pack.various.Seat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Hardy Ferentschik
|
||||||
|
*/
|
||||||
|
public abstract class PackagingTestCase extends TestCase {
|
||||||
|
protected static ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
|
||||||
|
protected static ClassLoader bundleClassLoader;
|
||||||
|
protected static File targetDir;
|
||||||
|
|
||||||
|
static {
|
||||||
|
// get a URL reference to something we now is part of the classpath (us)
|
||||||
|
URL myUrl = originalClassLoader.getResource(
|
||||||
|
PackagingTestCase.class.getName().replace( '.', '/' ) + ".class"
|
||||||
|
);
|
||||||
|
File myPath = new File( myUrl.getFile() );
|
||||||
|
// navigate back to '/target'
|
||||||
|
targetDir = myPath
|
||||||
|
.getParentFile() // target/classes/org/hibernate/ejb/test/packaging
|
||||||
|
.getParentFile() // target/classes/org/hibernate/ejb/test
|
||||||
|
.getParentFile() // target/classes/org/hibernate/ejb
|
||||||
|
.getParentFile() // target/classes/org/hibernate
|
||||||
|
.getParentFile() // target/classes/org
|
||||||
|
.getParentFile() // target/classes/
|
||||||
|
.getParentFile(); // target
|
||||||
|
File testPackagesDir = new File( targetDir, "bundles" );
|
||||||
|
try {
|
||||||
|
bundleClassLoader = new URLClassLoader( new URL[] { testPackagesDir.toURL() }, originalClassLoader );
|
||||||
|
}
|
||||||
|
catch ( MalformedURLException e ) {
|
||||||
|
fail( "Unable to build custom class loader" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setUp() throws Exception {
|
||||||
|
// add the bundle class loader in order for ShrinkWrap to build the test package
|
||||||
|
Thread.currentThread().setContextClassLoader( bundleClassLoader );
|
||||||
|
super.setUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tearDown() throws Exception {
|
||||||
|
super.tearDown();
|
||||||
|
// reset the classloader
|
||||||
|
Thread.currentThread().setContextClassLoader( originalClassLoader );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void addPackageToClasspath(File... testPackages) throws MalformedURLException {
|
||||||
|
List<URL> urlList = new ArrayList<URL>();
|
||||||
|
for ( File file : testPackages ) {
|
||||||
|
urlList.add( file.toURL() );
|
||||||
|
}
|
||||||
|
URLClassLoader classLoader = new URLClassLoader(
|
||||||
|
urlList.toArray( new URL[urlList.size()] ), originalClassLoader
|
||||||
|
);
|
||||||
|
Thread.currentThread().setContextClassLoader( classLoader );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildDefaultPar() {
|
||||||
|
String fileName = "defaultpar.par";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
ApplicationServer.class,
|
||||||
|
Lighter.class,
|
||||||
|
Money.class,
|
||||||
|
Mouse.class,
|
||||||
|
OtherIncrementListener.class,
|
||||||
|
IncrementListener.class,
|
||||||
|
Version.class
|
||||||
|
);
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/orm.xml" );
|
||||||
|
archive.addResource( "defaultpar/META-INF/orm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "defaultpar/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/defaultpar/Mouse.hbm.xml" );
|
||||||
|
archive.addResource( "defaultpar/org/hibernate/ejb/test/pack/defaultpar/Mouse.hbm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/defaultpar/package-info.class" );
|
||||||
|
archive.addResource( "org/hibernate/ejb/test/pack/defaultpar/package-info.class", path );
|
||||||
|
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildDefaultPar_1_0() {
|
||||||
|
String fileName = "defaultpar_1_0.par";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
ApplicationServer1.class,
|
||||||
|
Lighter1.class,
|
||||||
|
Money1.class,
|
||||||
|
Mouse1.class,
|
||||||
|
IncrementListener1.class,
|
||||||
|
Version1.class
|
||||||
|
);
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/orm.xml" );
|
||||||
|
archive.addResource( "defaultpar_1_0/META-INF/orm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "defaultpar_1_0/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/defaultpar_1_0/Mouse.hbm.xml" );
|
||||||
|
archive.addResource( "defaultpar_1_0/org/hibernate/ejb/test/pack/defaultpar_1_0/Mouse1.hbm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/defaultpar_1_0/package-info.class" );
|
||||||
|
archive.addResource( "org/hibernate/ejb/test/pack/defaultpar_1_0/package-info.class", path );
|
||||||
|
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildExplicitPar() {
|
||||||
|
String fileName = "explicitpar.par";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
Airplane.class,
|
||||||
|
Seat.class,
|
||||||
|
Cat.class,
|
||||||
|
Kitten.class,
|
||||||
|
Distributor.class,
|
||||||
|
Item.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/orm.xml" );
|
||||||
|
archive.addResource( "explicitpar/META-INF/orm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "explicitpar/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildExplodedPar() {
|
||||||
|
String fileName = "explodedpar";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
Elephant.class,
|
||||||
|
Carpet.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "explodedpar/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/explodedpar/Elephant.hbm.xml" );
|
||||||
|
archive.addResource( "explodedpar/org/hibernate/ejb/test/pack/explodedpar/Elephant.hbm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/explodedpar/package-info.class" );
|
||||||
|
archive.addResource( "org/hibernate/ejb/test/pack/explodedpar/package-info.class", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ExplodedExporter.class ).exportExploded( targetDir );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildExcludeHbmPar() {
|
||||||
|
String fileName = "excludehbmpar.par";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
Caipirinha.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/orm2.xml" );
|
||||||
|
archive.addResource( "excludehbmpar/META-INF/orm2.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "excludehbmpar/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/excludehbmpar/Mouse.hbm.xml" );
|
||||||
|
archive.addResource( "excludehbmpar/org/hibernate/ejb/test/pack/excludehbmpar/Mouse.hbm.xml", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildCfgXmlPar() {
|
||||||
|
String fileName = "cfgxmlpar.par";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
Morito.class,
|
||||||
|
Item.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "cfgxmlpar/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "org/hibernate/ejb/test/pack/cfgxmlpar/hibernate.cfg.xml" );
|
||||||
|
archive.addResource( "cfgxmlpar/org/hibernate/ejb/test/pack/cfgxmlpar/hibernate.cfg.xml", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildSpacePar() {
|
||||||
|
String fileName = "space par.par";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
Bug.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "space par/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildOverridenPar() {
|
||||||
|
String fileName = "overridenpar.jar";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
org.hibernate.ejb.test.pack.overridenpar.Bug.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "overridenpar/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "overridenpar.properties" );
|
||||||
|
archive.addResource( "overridenpar/overridenpar.properties", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildExternalJar() {
|
||||||
|
String fileName = "externaljar.jar";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
Scooter.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "META-INF/orm.xml" );
|
||||||
|
archive.addResource( "externaljar/META-INF/orm.xml", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildWar() {
|
||||||
|
String fileName = "war.war";
|
||||||
|
WebArchive archive = Archives.create( fileName, WebArchive.class );
|
||||||
|
archive.addClasses(
|
||||||
|
org.hibernate.ejb.test.pack.war.ApplicationServer.class,
|
||||||
|
org.hibernate.ejb.test.pack.war.IncrementListener.class,
|
||||||
|
org.hibernate.ejb.test.pack.war.Lighter.class,
|
||||||
|
org.hibernate.ejb.test.pack.war.Money.class,
|
||||||
|
org.hibernate.ejb.test.pack.war.Mouse.class,
|
||||||
|
org.hibernate.ejb.test.pack.war.OtherIncrementListener.class,
|
||||||
|
org.hibernate.ejb.test.pack.war.Version.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ArchivePath path = ArchivePaths.create( "WEB-INF/classes/META-INF/orm.xml" );
|
||||||
|
archive.addResource( "war/WEB-INF/classes/META-INF/orm.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "WEB-INF/classes/META-INF/persistence.xml" );
|
||||||
|
archive.addResource( "war/WEB-INF/classes/META-INF/persistence.xml", path );
|
||||||
|
|
||||||
|
path = ArchivePaths.create( "WEB-INF/classes/org/hibernate/ejb/test/pack/war/Mouse.hbm.xml" );
|
||||||
|
archive.addResource( "war/WEB-INF/classes/org/hibernate/ejb/test/pack/war/Mouse.hbm.xml", path );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildNestedEar(File includeFile) {
|
||||||
|
String fileName = "nestedjar.ear";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addResource( includeFile );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ZipExporter.class ).exportZip( testPackage, true );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File buildNestedEarDir(File includeFile) {
|
||||||
|
String fileName = "nesteddir.ear";
|
||||||
|
JavaArchive archive = Archives.create( fileName, JavaArchive.class );
|
||||||
|
archive.addResource( includeFile );
|
||||||
|
|
||||||
|
File testPackage = new File( targetDir, fileName );
|
||||||
|
archive.as( ExplodedExporter.class ).exportExploded( targetDir );
|
||||||
|
return testPackage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// $Id:$
|
||||||
/*
|
/*
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
*
|
*
|
||||||
|
@ -287,6 +288,10 @@ public abstract class HibernateTestCase extends TestCase {
|
||||||
|
|
||||||
protected abstract Class<?>[] getAnnotatedClasses();
|
protected abstract Class<?>[] getAnnotatedClasses();
|
||||||
|
|
||||||
|
protected String[] getMappings() {
|
||||||
|
return new String[]{};
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract void handleUnclosedResources();
|
protected abstract void handleUnclosedResources();
|
||||||
|
|
||||||
protected abstract void closeResources();
|
protected abstract void closeResources();
|
||||||
|
|
Loading…
Reference in New Issue