[hibernate-commits] Hibernate SVN: r10552 - in trunk/HibernateExt/ejb/src: java/org/hibernate/ejb java/org/hibernate/ejb/connection java/org/hibernate/ejb/event java/org/hibernate/ejb/instrument java/org/hibernate/ejb/packaging test/org/hibernate/ejb/test/association

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Oct 3 22:45:40 EDT 2006


Author: epbernard
Date: 2006-10-03 22:45:35 -0400 (Tue, 03 Oct 2006)
New Revision: 10552

Added:
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Kitchen.java
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Oven.java
Modified:
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Version.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/connection/InjectedDataSourceConnectionProvider.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/BeanCallback.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/ListenerCallback.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/XmlHelper.java
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/AssociationTest.java
Log:
Code cleaning, potential bug fixes and more tests

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -114,9 +114,11 @@
 
 	private AnnotationConfiguration cfg;
 	private SettingsFactory settingsFactory;
+	//made transient and not restored in deserialization on purpose, should no longer be called after restoration
 	private transient EventListenerConfigurator listenerConfigurator;
 	private PersistenceUnitTransactionType transactionType;
 	private boolean discardOnClose;
+	//made transient and not restored in deserialization on purpose, should no longer be called after restoration
 	private transient ClassLoader overridenClassLoader;
 
 
@@ -191,7 +193,7 @@
 		try {
 			log.debug( "Look up for persistence unit: " + persistenceUnitName );
 			integration = integration == null ?
-					integration = CollectionHelper.EMPTY_MAP :
+					CollectionHelper.EMPTY_MAP :
 					Collections.unmodifiableMap( integration );
 			Enumeration<URL> xmls = Thread.currentThread()
 					.getContextClassLoader()
@@ -344,6 +346,7 @@
 					new Properties();
 			ConfigurationHelper.overrideProperties( properties, integration );
 
+			//FIXME entities is used to enhance classes and to collect annotated entities this should not be mixed
 			//fill up entities with the on found in xml files
 			addXMLEntities( xmlFiles, info, entities );
 
@@ -449,7 +452,7 @@
 					}
 				}
 				else if ( rootElement != null && "hibernate-mappings".equals( rootElement.getName() ) ) {
-					//TODO
+					//FIXME include hbm xml entities to enhance them but entities is also used to collect annotated entities
 				}
 			}
 			catch (DocumentException e) {

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Version.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Version.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Version.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -8,7 +8,7 @@
  * @author Emmanuel Bernard
  */
 public class Version {
-	public static String VERSION = "3.2.0.CR2";
+	public static final String VERSION = "3.2.0.CR2";
 	private static Log log = LogFactory.getLog( Version.class );
 
 	static {

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/connection/InjectedDataSourceConnectionProvider.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/connection/InjectedDataSourceConnectionProvider.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/connection/InjectedDataSourceConnectionProvider.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -2,6 +2,8 @@
 package org.hibernate.ejb.connection;
 
 import java.util.Properties;
+import java.sql.Connection;
+import java.sql.SQLException;
 import javax.sql.DataSource;
 
 import org.apache.commons.logging.Log;
@@ -18,6 +20,7 @@
  * @see org.hibernate.connection.ConnectionProvider
  */
 public class InjectedDataSourceConnectionProvider extends DatasourceConnectionProvider {
+	//TODO make datasource connection provider properties protected in 3.3
 	private String user;
 	private String pass;
 
@@ -35,4 +38,13 @@
 		log.info( "Using provided datasource" );
 	}
 
+	@Override
+	public Connection getConnection() throws SQLException {
+		if (user != null || pass != null) {
+			return getDataSource().getConnection(user, pass);
+		}
+		else {
+			return getDataSource().getConnection();
+		}
+	}
 }

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/BeanCallback.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/BeanCallback.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/BeanCallback.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -25,7 +25,7 @@
 		catch (InvocationTargetException e) {
 			//keep runtime exceptions as is
 			if ( e.getTargetException() instanceof RuntimeException ) {
-				throw (RuntimeException) e.getCause();
+				throw (RuntimeException) e.getTargetException();
 			}
 			else {
 				throw new RuntimeException( e.getTargetException() );

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -14,16 +14,14 @@
 import java.util.List;
 import javax.persistence.Entity;
 import javax.persistence.EntityListeners;
+import javax.persistence.ExcludeDefaultListeners;
 import javax.persistence.ExcludeSuperclassListeners;
 import javax.persistence.MappedSuperclass;
 import javax.persistence.PersistenceException;
-import javax.persistence.ExcludeDefaultListeners;
 
+import org.hibernate.reflection.ReflectionManager;
 import org.hibernate.reflection.XClass;
 import org.hibernate.reflection.XMethod;
-import org.hibernate.reflection.ReflectionManager;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
@@ -32,7 +30,7 @@
 public final class CallbackResolver {
 	private static boolean useAnnotationAnnotatedByListener;
 
-	{
+	static {
 		//check whether reading annotations of annotations is useful or not
 		useAnnotationAnnotatedByListener = false;
 		Target target = (Target) EntityListeners.class.getAnnotation( Target.class );
@@ -42,7 +40,6 @@
 			}
 		}
 	}
-	private static Log log = LogFactory.getLog( CallbackResolver.class );
 
 	private CallbackResolver() {
 	}
@@ -107,13 +104,13 @@
 		while ( currentClazz != null );
 
 		//handle default listeners
-		if (! stopDefaultListeners) {
+		if ( ! stopDefaultListeners ) {
 			List<Class> defaultListeners = (List<Class>) reflectionManager.getDefaults().get( EntityListeners.class );
 
-			if (defaultListeners != null) {
+			if ( defaultListeners != null ) {
 				int defaultListenerSize = defaultListeners.size();
-				for (int i = defaultListenerSize - 1 ; i >= 0 ; i--) {
-					orderedListeners.add( defaultListeners.get(i) );
+				for ( int i = defaultListenerSize - 1; i >= 0 ; i-- ) {
+					orderedListeners.add( defaultListeners.get( i ) );
 				}
 			}
 		}
@@ -127,13 +124,13 @@
 					List<XMethod> methods = xListener.getDeclaredMethods();
 					final int size = methods.size();
 					for ( int i = 0; i < size ; i++ ) {
-						final XMethod xMethod = methods.get(i);
+						final XMethod xMethod = methods.get( i );
 						if ( xMethod.isAnnotationPresent( annotation ) ) {
 							final Method method = reflectionManager.toMethod( xMethod );
 							final String methodName = method.getName();
 							if ( ! callbacksMethodNames.contains( methodName ) ) {
 								//overriden method, remove the superclass overriden method
-								if (  callback == null ) {
+								if ( callback == null ) {
 									try {
 										callback = new ListenerCallback( method, listener.newInstance() );
 									}
@@ -174,7 +171,7 @@
 					}
 					xListener = null;  //xListener.getSuperclass();
 				}
-				while (xListener != null);
+				while ( xListener != null );
 			}
 		}
 		return callbacks.toArray( new Callback[ callbacks.size() ] );

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/ListenerCallback.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/ListenerCallback.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/ListenerCallback.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -33,7 +33,7 @@
 		catch (InvocationTargetException e) {
 			//keep runtime exceptions as is
 			if ( e.getTargetException() instanceof RuntimeException ) {
-				throw (RuntimeException) e.getCause();
+				throw (RuntimeException) e.getTargetException();
 			}
 			else {
 				throw new RuntimeException( e.getTargetException() );

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -3,14 +3,12 @@
 
 import java.lang.instrument.IllegalClassFormatException;
 import java.security.ProtectionDomain;
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hibernate.cfg.Environment;
 import org.hibernate.bytecode.util.ClassFilter;
 import org.hibernate.bytecode.util.FieldFilter;
+import org.hibernate.cfg.Environment;
 
 /**
  * Enhance the classes allowing them to implements InterceptFieldEnabled
@@ -19,7 +17,6 @@
  * @author Emmanuel Bernard
  */
 public class InterceptFieldClassFileTransformer implements javax.persistence.spi.ClassTransformer {
-	Log log = LogFactory.getLog( InterceptFieldClassFileTransformer.class.getName() );
 	private org.hibernate.bytecode.ClassTransformer classTransformer;
 
 	public InterceptFieldClassFileTransformer(List<String> entities) {
@@ -29,11 +26,13 @@
 		final List<String> copyEntities = new ArrayList<String>( entities.size() );
 		copyEntities.addAll( entities );
 		classTransformer = Environment.getBytecodeProvider().getTransformer(
+				//TODO change it to a static class to make it faster?
 				new ClassFilter() {
 					public boolean shouldInstrumentClass(String className) {
 						return copyEntities.contains( className );
 					}
 				},
+				//TODO change it to a static class to make it faster?
 				new FieldFilter() {
 
 					public boolean shouldInstrumentField(String className, String fieldName) {

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/XmlHelper.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/XmlHelper.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/XmlHelper.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -144,17 +144,17 @@
 		}
 
 		NodeList children = element.getChildNodes();
-		String result = "";
+		StringBuilder result = new StringBuilder("");
 		for ( int i = 0; i < children.getLength() ; i++ ) {
 			if ( children.item( i ).getNodeType() == Node.TEXT_NODE ||
 					children.item( i ).getNodeType() == Node.CDATA_SECTION_NODE ) {
-				result += children.item( i ).getNodeValue();
+				result.append( children.item( i ).getNodeValue() );
 			}
-			else if ( children.item( i ).getNodeType() == Node.COMMENT_NODE ) {
-				// Ignore comment nodes
-			}
+//			else if ( children.item( i ).getNodeType() == Node.COMMENT_NODE ) {
+//				// Ignore comment nodes
+//			}
 		}
-		return result.trim();
+		return result.toString().trim();
 	}
 
 	/**

Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/AssociationTest.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/AssociationTest.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/AssociationTest.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -29,10 +29,31 @@
 		em.close();
 	}
 
+	public void testMergeAndBidirOneToOne() throws Exception {
+		EntityManager em = factory.createEntityManager();
+		em.getTransaction().begin();
+		Oven oven = new Oven();
+		Kitchen kitchen = new Kitchen();
+		em.persist( oven );
+		em.persist( kitchen );
+		kitchen.setOven( oven );
+		oven.setKitchen( kitchen );
+		em.flush();
+		em.clear();
+		//oven = em.find(Oven.class, oven.getId() );
+		oven = em.merge( oven );
+		em.flush();
+
+		em.getTransaction().rollback();
+		em.close();
+	}
+
 	public Class[] getAnnotatedClasses() {
 		return new Class[]{
 				Incident.class,
-				IncidentStatus.class
+				IncidentStatus.class,
+				Kitchen.class,
+				Oven.class
 		};
 	}
 }

Added: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Kitchen.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Kitchen.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Kitchen.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -0,0 +1,35 @@
+//$Id: $
+package org.hibernate.ejb.test.association;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Kitchen {
+	@Id @GeneratedValue
+	private Long id;
+
+	@OneToOne(mappedBy = "kitchen")
+	private Oven oven;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Oven getOven() {
+		return oven;
+	}
+
+	public void setOven(Oven oven) {
+		this.oven = oven;
+	}
+}

Added: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Oven.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Oven.java	2006-10-04 02:42:01 UTC (rev 10551)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/association/Oven.java	2006-10-04 02:45:35 UTC (rev 10552)
@@ -0,0 +1,38 @@
+//$Id: $
+package org.hibernate.ejb.test.association;
+
+import javax.persistence.Entity;
+import javax.persistence.OneToOne;
+import javax.persistence.JoinColumn;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+import javax.persistence.FetchType;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Oven {
+	@Id @GeneratedValue
+	private Long id;
+
+	@OneToOne(fetch= FetchType.LAZY)
+	@JoinColumn
+	private Kitchen kitchen;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Kitchen getKitchen() {
+		return kitchen;
+	}
+
+	public void setKitchen(Kitchen kitchen) {
+		this.kitchen = kitchen;
+	}
+}




More information about the hibernate-commits mailing list