Author: epbernard Date: 2006-03-29 11:26:46 -0500 (Wed, 29 Mar 2006) New Revision: 9717 Added: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/util/ConfigurationHelper.java Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/ops/MergeNewTest.java Log: EJB-155 Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-03-29 16:07:12 UTC (rev 9716) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-03-29 16:26:46 UTC (rev 9717) @@ -49,6 +49,7 @@ import org.hibernate.ejb.packaging.PersistenceXmlLoader; import org.hibernate.ejb.transaction.JoinableCMTTransactionFactory; import org.hibernate.ejb.util.LogHelper; +import org.hibernate.ejb.util.ConfigurationHelper; import org.hibernate.engine.FilterDefinition; import org.hibernate.event.EventListeners; import org.hibernate.mapping.AuxiliaryDatabaseObject; @@ -270,11 +271,7 @@ Properties properties = info.getProperties() != null ? info.getProperties() : new Properties(); - for ( Map.Entry entry : (Set<Map.Entry>) integration.entrySet() ) { - if ( entry.getKey() instanceof String && entry.getValue() instanceof String ) { - properties.setProperty( (String) entry.getKey(), (String) entry.getValue() ); - } - } + ConfigurationHelper.overrideProperties( properties, integration ); //FIXME send the appropriate entites. if ( "true".equalsIgnoreCase( properties.getProperty(HibernatePersistence.USE_CLASS_ENHANCER) ) ) { @@ -319,7 +316,7 @@ private void defineTransactionType(Object overridenTxType, String persistenceUnitName) { if (overridenTxType == null) { if (transactionType == null) { - transactionType = PersistenceUnitTransactionType.JTA; //this is the default value + transactionType = PersistenceUnitTransactionType.JTA; //this is the default value } } else if (overridenTxType instanceof String) { Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java 2006-03-29 16:07:12 UTC (rev 9716) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/PersistenceXmlLoader.java 2006-03-29 16:26:46 UTC (rev 9717) @@ -7,7 +7,6 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import java.util.Set; import javax.persistence.PersistenceException; import javax.persistence.spi.PersistenceUnitTransactionType; import javax.xml.parsers.DocumentBuilder; @@ -17,6 +16,7 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.EJB3DTDEntityResolver; import org.hibernate.ejb.HibernatePersistence; +import org.hibernate.ejb.util.ConfigurationHelper; import org.hibernate.util.StringHelper; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -98,11 +98,7 @@ metadata.setNonJtaDatasource( dataSource ); } Properties properties = metadata.getProps(); - for ( Map.Entry entry : (Set<Map.Entry>) overrides.entrySet() ) { - if ( entry.getKey() instanceof String && entry.getValue() instanceof String ) { - properties.setProperty( (String) entry.getKey(), (String) entry.getValue() ); - } - } + ConfigurationHelper.overrideProperties( properties, overrides ); units.add( metadata ); } } Added: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/util/ConfigurationHelper.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/util/ConfigurationHelper.java 2006-03-29 16:07:12 UTC (rev 9716) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/util/ConfigurationHelper.java 2006-03-29 16:26:46 UTC (rev 9717) @@ -0,0 +1,19 @@ +//$Id: $ +package org.hibernate.ejb.util; + +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +/** + * @author Emmanuel Bernard + */ +public abstract class ConfigurationHelper { + public static void overrideProperties(Properties properties, Map overrides) { + for ( Map.Entry entry : (Set<Map.Entry>) overrides.entrySet() ) { + if ( entry.getKey() instanceof String && entry.getValue() instanceof String ) { + properties.setProperty( (String) entry.getKey(), (String) entry.getValue() ); + } + } + } +} Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/ops/MergeNewTest.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/ops/MergeNewTest.java 2006-03-29 16:07:12 UTC (rev 9716) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/ops/MergeNewTest.java 2006-03-29 16:26:46 UTC (rev 9717) @@ -24,6 +24,31 @@ em.close(); } + public void testMergeAfterRemove() throws Exception { + Workload load = new Workload(); + load.name = "Cleaning"; + load.load = 10; + EntityManager em = factory.createEntityManager(); + em.getTransaction().begin(); + load = em.merge( load ); + em.flush(); + em.getTransaction().commit(); + em.close(); + em = factory.createEntityManager(); + em.getTransaction().begin(); + load = em.find(Workload.class, load.id); + em.remove( load ); + em.flush(); + em.getTransaction().commit(); + em.close(); + em = factory.createEntityManager(); + em.getTransaction().begin(); + em.merge( load ); + em.flush(); + em.getTransaction().commit(); + em.close(); + } + public Class[] getAnnotatedClasses() { return new Class[] { Workload.class |