[hibernate-commits] Hibernate SVN: r10912 - in branches/Branch_3_2/HibernateExt/ejb: . lib src/java/org/hibernate/ejb src/java/org/hibernate/ejb/packaging src/test/org/hibernate/ejb/test src/test/org/hibernate/ejb/test/pack src/test/org/hibernate/ejb/test/pack/overridenpar src/test-resources src/test-resources/overridenpar src/test-resources/overridenpar/META-INF
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Dec 4 12:10:38 EST 2006
Author: epbernard
Date: 2006-12-04 12:10:27 -0500 (Mon, 04 Dec 2006)
New Revision: 10912
Added:
branches/Branch_3_2/HibernateExt/ejb/src/test-resources/overridenpar/
branches/Branch_3_2/HibernateExt/ejb/src/test-resources/overridenpar/META-INF/
branches/Branch_3_2/HibernateExt/ejb/src/test-resources/overridenpar/META-INF/persistence.xml
branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/pack/overridenpar/
branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/pack/overridenpar/Bug.java
Modified:
branches/Branch_3_2/HibernateExt/ejb/build.xml
branches/Branch_3_2/HibernateExt/ejb/lib/hibernate-annotations.jar
branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceMetadata.java
branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java
branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/PackagedEntityManagerTest.java
Log:
EJB-254 overriding DS is possible
Modified: branches/Branch_3_2/HibernateExt/ejb/build.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/build.xml 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/build.xml 2006-12-04 17:10:27 UTC (rev 10912)
@@ -109,6 +109,10 @@
<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>
<antcall target="packexploded" inheritall="true">
<param name="extension" value="par"/>
Modified: branches/Branch_3_2/HibernateExt/ejb/lib/hibernate-annotations.jar
===================================================================
(Binary files differ)
Modified: branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-12-04 17:10:27 UTC (rev 10912)
@@ -174,7 +174,12 @@
}
Properties props = new Properties();
props.putAll( metadata.getProps() );
- if ( overrides != null ) props.putAll( overrides ); //yuk!
+ if ( overrides != null ) {
+ for ( Map.Entry entry : (Set<Map.Entry>) overrides.entrySet() ) {
+ Object value = entry.getValue();
+ props.put( entry.getKey(), value == null ? "" : value ); //alter null, not allowed in properties
+ }
+ }
configure( props, workingVars );
return this;
}
@@ -358,14 +363,14 @@
//datasources
Boolean isJTA = null;
boolean overridenDatasource = false;
- String dataSource = (String) integration.get( HibernatePersistence.JTA_DATASOURCE );
- if ( dataSource != null ) {
+ if ( integration.containsKey( HibernatePersistence.JTA_DATASOURCE ) ) {
+ String dataSource = (String) integration.get( HibernatePersistence.JTA_DATASOURCE );
overridenDatasource = true;
properties.setProperty( Environment.DATASOURCE, dataSource );
isJTA = Boolean.TRUE;
}
- dataSource = (String) integration.get( HibernatePersistence.NON_JTA_DATASOURCE );
- if ( dataSource != null ) {
+ if ( integration.containsKey( HibernatePersistence.NON_JTA_DATASOURCE ) ) {
+ String dataSource = (String) integration.get( HibernatePersistence.NON_JTA_DATASOURCE );
overridenDatasource = true;
properties.setProperty( Environment.DATASOURCE, dataSource );
if (isJTA == null) isJTA = Boolean.FALSE;
Modified: branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceMetadata.java
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceMetadata.java 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceMetadata.java 2006-12-04 17:10:27 UTC (rev 10912)
@@ -21,7 +21,7 @@
private String nonJtaDatasource;
private String jtaDatasource;
private String provider;
- private PersistenceUnitTransactionType transactionType = PersistenceUnitTransactionType.JTA;
+ private PersistenceUnitTransactionType transactionType;
private List<String> classes = new ArrayList<String>();
private List<String> packages = new ArrayList<String>();
private List<String> mappingFiles = new ArrayList<String>();
Modified: branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java 2006-12-04 17:10:27 UTC (rev 10912)
@@ -81,22 +81,48 @@
if ( tag.equals( "persistence-unit" ) ) {
PersistenceMetadata metadata = parsePersistenceUnit( element );
//override properties of metadata if needed
- String provider = (String) overrides.get( HibernatePersistence.PROVIDER );
- if ( provider != null ) {
+ if ( overrides.containsKey( HibernatePersistence.PROVIDER ) ) {
+ String provider = (String) overrides.get( HibernatePersistence.PROVIDER );
metadata.setProvider( provider );
}
- String transactionType = (String) overrides.get( HibernatePersistence.TRANSACTION_TYPE );
- if ( StringHelper.isNotEmpty( transactionType ) ) {
+ if ( overrides.containsKey( HibernatePersistence.TRANSACTION_TYPE ) ) {
+ String transactionType = (String) overrides.get( HibernatePersistence.TRANSACTION_TYPE );
metadata.setTransactionType( PersistenceXmlLoader.getTransactionType( transactionType ) );
}
- String dataSource = (String) overrides.get( HibernatePersistence.JTA_DATASOURCE );
- if ( dataSource != null ) {
+ if ( overrides.containsKey( HibernatePersistence.JTA_DATASOURCE ) ) {
+ String dataSource = (String) overrides.get( HibernatePersistence.JTA_DATASOURCE );
metadata.setJtaDatasource( dataSource );
}
- dataSource = (String) overrides.get( HibernatePersistence.NON_JTA_DATASOURCE );
- if ( dataSource != null ) {
+ if ( overrides.containsKey( HibernatePersistence.NON_JTA_DATASOURCE ) ) {
+ String dataSource = (String) overrides.get( HibernatePersistence.NON_JTA_DATASOURCE );
metadata.setNonJtaDatasource( dataSource );
}
+ /*
+ * if explicit => use it
+ * if JTA DS => JTA transaction
+ * if non JTA DA => RESOURCE_LOCAL transaction
+ * else default JavaSE => RESOURCE_LOCAL
+ */
+ PersistenceUnitTransactionType transactionType = metadata.getTransactionType();
+ Boolean isJTA = null;
+ if ( StringHelper.isNotEmpty( metadata.getJtaDatasource() ) ) {
+ isJTA = Boolean.TRUE;
+ }
+ else if ( StringHelper.isNotEmpty( metadata.getNonJtaDatasource() ) ) {
+ isJTA = Boolean.FALSE;
+ }
+ if (transactionType == null) {
+ if (isJTA == Boolean.TRUE) {
+ transactionType = PersistenceUnitTransactionType.JTA;
+ }
+ else if (isJTA == Boolean.FALSE) {
+ transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
+ }
+ else {
+ transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
+ }
+ }
+ metadata.setTransactionType( transactionType );
Properties properties = metadata.getProps();
ConfigurationHelper.overrideProperties( properties, overrides );
units.add( metadata );
@@ -116,7 +142,6 @@
metadata.setName( puName );
}
NodeList children = top.getChildNodes();
- Boolean isJTA = null;
for ( int i = 0; i < children.getLength() ; i++ ) {
if ( children.item( i ).getNodeType() == Node.ELEMENT_NODE ) {
Element element = (Element) children.item( i );
@@ -129,11 +154,9 @@
// else
if ( tag.equals( "non-jta-data-source" ) ) {
metadata.setNonJtaDatasource( XmlHelper.getElementContent( element ) );
- if (isJTA == null) isJTA = Boolean.FALSE;
}
else if ( tag.equals( "jta-data-source" ) ) {
metadata.setJtaDatasource( XmlHelper.getElementContent( element ) );
- isJTA = Boolean.TRUE;
}
else if ( tag.equals( "provider" ) ) {
metadata.setProvider( XmlHelper.getElementContent( element ) );
@@ -169,25 +192,8 @@
}
}
}
- /*
- * if explicit => use it
- * if JTA DS => JTA transaction
- * if non JTA DA => RESULRCE_LOCAL transaction
- * else default JavaSE => RESOURCE_LOCAL
- */
PersistenceUnitTransactionType transactionType = getTransactionType( top.getAttribute( "transaction-type" ) );
- if (transactionType == null) {
- if (isJTA == Boolean.TRUE) {
- transactionType = PersistenceUnitTransactionType.JTA;
- }
- else if (isJTA == Boolean.FALSE) {
- transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
- }
- else {
- transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
- }
- }
- metadata.setTransactionType( transactionType );
+ if (transactionType != null) metadata.setTransactionType( transactionType );
return metadata;
}
Modified: branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/PackagedEntityManagerTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/PackagedEntityManagerTest.java 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/PackagedEntityManagerTest.java 2006-12-04 17:10:27 UTC (rev 10912)
@@ -8,6 +8,7 @@
import javax.persistence.PersistenceException;
import org.hibernate.ejb.HibernateEntityManagerFactory;
+import org.hibernate.ejb.HibernatePersistence;
import org.hibernate.ejb.test.pack.cfgxmlpar.Morito;
import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer;
import org.hibernate.ejb.test.pack.defaultpar.IncrementListener;
@@ -190,6 +191,27 @@
emf.close();
}
+ public void testOverridenPar() throws Exception {
+ HashMap properties = new HashMap();
+ properties.put( HibernatePersistence.JTA_DATASOURCE, null );
+ properties.put( "hibernate.connection.driver_class", "org.hsqldb.jdbcDriver" );
+ properties.put( "hibernate.connection.username", "sa" );
+ properties.put( "hibernate.connection.password", "" );
+ properties.put( "hibernate.connection.url", "jdbc:hsqldb:." );
+ EntityManagerFactory emf = Persistence.createEntityManagerFactory( "overridenpar", properties );
+ EntityManager em = emf.createEntityManager();
+ org.hibernate.ejb.test.pack.overridenpar.Bug bug = new org.hibernate.ejb.test.pack.overridenpar.Bug();
+ bug.setSubject( "Allow DS overriding");
+ em.getTransaction().begin();
+ em.persist( bug );
+ em.flush();
+ em.remove( bug );
+ assertNotNull( bug.getId() );
+ em.getTransaction().rollback();
+ em.close();
+ emf.close();
+ }
+
public void testListenersOverridingCfgXmlPar() throws Exception {
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "cfgxmlpar", new HashMap() );
EntityManager em = emf.createEntityManager();
Added: branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/pack/overridenpar/Bug.java
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/pack/overridenpar/Bug.java 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/src/test/org/hibernate/ejb/test/pack/overridenpar/Bug.java 2006-12-04 17:10:27 UTC (rev 10912)
@@ -0,0 +1,42 @@
+//$Id: $
+package org.hibernate.ejb.test.pack.overridenpar;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Bug {
+ @Id
+ @GeneratedValue
+ private Long id;
+ private String subject;
+ private String comment;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+}
Added: branches/Branch_3_2/HibernateExt/ejb/src/test-resources/overridenpar/META-INF/persistence.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/ejb/src/test-resources/overridenpar/META-INF/persistence.xml 2006-12-01 21:57:11 UTC (rev 10911)
+++ branches/Branch_3_2/HibernateExt/ejb/src/test-resources/overridenpar/META-INF/persistence.xml 2006-12-04 17:10:27 UTC (rev 10912)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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_1_0.xsd"
+ version="1.0">
+ <persistence-unit name="overridenpar">
+ <jta-data-source>java:/unreachableDS</jta-data-source>
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
+ <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+ <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
+ </properties>
+ </persistence-unit>
+</persistence>
More information about the hibernate-commits
mailing list