From: <hib...@li...> - 2006-05-04 02:40:29
|
Author: epbernard Date: 2006-05-03 22:40:24 -0400 (Wed, 03 May 2006) New Revision: 9868 Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/exception/ExceptionTest.java Log: EJB-9 use the ENFE delegate rmeove useless logs Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-05-04 02:16:10 UTC (rev 9867) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-05-04 02:40:24 UTC (rev 9868) @@ -23,6 +23,7 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.MappedSuperclass; import javax.persistence.PersistenceException; +import javax.persistence.EntityNotFoundException; import javax.persistence.spi.PersistenceUnitInfo; import javax.persistence.spi.PersistenceUnitTransactionType; import javax.sql.DataSource; @@ -35,6 +36,8 @@ import org.hibernate.Interceptor; import org.hibernate.MappingException; import org.hibernate.SessionFactory; +import org.hibernate.ObjectNotFoundException; +import org.hibernate.proxy.EntityNotFoundDelegate; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; @@ -81,6 +84,14 @@ public Ejb3Configuration() { settingsFactory = new InjectionSettingsFactory(); cfg = new AnnotationConfiguration( settingsFactory ); + cfg.setEntityNotFoundDelegate( new EntityNotFoundDelegate() { + + public void handleEntityNotFound(String entityName, Serializable id) { + //keep the original ONFE for the sake of consistency in the way we handle Hibernate exceptions + Exception e = new ObjectNotFoundException( id, entityName ); + throw new EntityNotFoundException("Unable to find " + entityName + " with id " + id, e); + } + } ); listenerConfigurator = new EventListenerConfigurator( this ); //transactionType = PersistenceUnitTransactionType.JTA; //default as per the spec } Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java 2006-05-04 02:16:10 UTC (rev 9867) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/event/CallbackResolver.java 2006-05-04 02:40:24 UTC (rev 9868) @@ -102,14 +102,11 @@ while ( currentClazz != null ); //handle default listeners - log.error("default listeners for: " + beanClass.getName() + annotation ); if (! stopDefaultListeners) { - log.error("notstopped" ); List<Class> defaultListeners = (List<Class>) reflectionManager.getDefaults().get( EntityListeners.class ); if (defaultListeners != null) { int defaultListenerSize = defaultListeners.size(); - log.error("defaultlistenerssize" + defaultListenerSize ); for (int i = defaultListenerSize - 1 ; i >= 0 ; i--) { orderedListeners.add( defaultListeners.get(i) ); } Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/exception/ExceptionTest.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/exception/ExceptionTest.java 2006-05-04 02:16:10 UTC (rev 9867) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/exception/ExceptionTest.java 2006-05-04 02:40:24 UTC (rev 9868) @@ -3,6 +3,7 @@ import javax.persistence.EntityManager; import javax.persistence.OptimisticLockException; +import javax.persistence.EntityNotFoundException; import org.hibernate.ejb.test.TestCase; @@ -44,6 +45,21 @@ } } + public void testEntityNotFoundException() throws Exception { + EntityManager em = factory.createEntityManager( ); + Music music = em.getReference( Music.class, new Integer(-1) ); + try { + music.getName(); + fail("Non existent entity should raise an exception when state is accessed"); + } + catch( EntityNotFoundException e ) { + //success + } + finally { + em.close(); + } + } + public Class[] getAnnotatedClasses() { return new Class[] { Music.class |