[jboss-cvs] JBossAS SVN: r69896 - in projects/ejb3/trunk/core/src: test/java/org/jboss/ejb3/test/entity and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 18 12:51:55 EST 2008
Author: bdecoste
Date: 2008-02-18 12:51:55 -0500 (Mon, 18 Feb 2008)
New Revision: 69896
Added:
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/NoPUTestBean.java
Modified:
projects/ejb3/trunk/core/src/main/java/org/jboss/injection/PersistenceUnitHandler.java
projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/unit/EntityUnitTestCase.java
Log:
[JBPAPP-585] merged warning message for no deployed pu from EAP
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/injection/PersistenceUnitHandler.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/injection/PersistenceUnitHandler.java 2008-02-18 17:45:13 UTC (rev 69895)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/injection/PersistenceUnitHandler.java 2008-02-18 17:51:55 UTC (rev 69896)
@@ -128,7 +128,7 @@
}
// probably not deployed yet.
// todo not sure if we should do this in JBoss 5
- log.debug("******* could not find PU dependency so adding a default: " + PersistenceUnitDeployment.getDefaultKernelName(unitName));
+ log.warn("Could not find PU dependency for " + PersistenceUnitDeployment.getDefaultKernelName(unitName) + ". Waiting for dependency to resolve");
container.getDependencyPolicy().addDependency(PersistenceUnitDeployment.getDefaultKernelName(unitName));
}
Added: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/NoPUTestBean.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/NoPUTestBean.java (rev 0)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/NoPUTestBean.java 2008-02-18 17:51:55 UTC (rev 69896)
@@ -0,0 +1,306 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.entity;
+
+import org.hibernate.Session;
+import org.hibernate.jdbc.JDBCContext;
+import org.hibernate.event.EventSource;
+import org.hibernate.engine.SessionImplementor;
+import org.jboss.ejb3.annotation.JndiInject;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.transaction.TransactionManager;
+import javax.transaction.Transaction;
+import javax.transaction.SystemException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+ at Stateless
+ at Remote(EntityTest.class)
+public class NoPUTestBean implements EntityTest
+{
+ private @PersistenceContext(unitName="bogus") EntityManager manager;
+ private @PersistenceContext(unitName="bogus") Session session;
+ private @JndiInject(jndiName="java:/TransactionManager") TransactionManager tm;
+ private static Log log = LogFactory.getLog( "org.hibernate.ejb" );
+
+
+ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
+ public void testOutsideTransaction()
+ {
+ Transaction tx = null;
+ try
+ {
+ tx = tm.getTransaction();
+ }
+ catch (SystemException e)
+ {
+ throw new RuntimeException(e);
+ }
+ if (tx != null) throw new RuntimeException("THERE IS A TRANSACTION!!!");
+ Query q = manager.createQuery("SELECT c FROM Customer c");
+ List l = q.getResultList();
+ if (l.size() == 0) throw new RuntimeException("failed");
+ org.hibernate.Query q2 = session.createQuery("FROM Customer c");
+ l = q2.list();
+ if (l.size() == 0) throw new RuntimeException("failed");
+
+ }
+
+ public Customer oneToManyCreate() throws Exception
+ {
+ Ticket t = new Ticket();
+ //t.setId( new Long(1) );
+ t.setNumber("33A");
+ Customer c = new Customer();
+ //c.setId( new Long(1) );
+ Set<Ticket> tickets = new HashSet<Ticket>();
+ tickets.add(t);
+ t.setCustomer(c);
+ c.setTickets(tickets);
+ Address address = new Address();
+ address.setStreet("Clarendon Street");
+ address.setCity("Boston");
+ address.setState("MA");
+ address.setZip("02116");
+ c.setAddress(address);
+ manager.persist(c);
+ return c;
+ }
+
+ public Customer findCustomerById(Long id) throws Exception
+ {
+ return manager.find(Customer.class, id);
+ }
+
+ public Flight manyToOneCreate() throws Exception
+ {
+ Flight firstOne = new Flight();
+ firstOne.setId(new Long(1));
+ firstOne.setName("AF0101");
+ Company frenchOne = new Company();
+ frenchOne.setName("Air France");
+ firstOne.setCompany(frenchOne);
+ manager.persist(firstOne);
+ return firstOne;
+ }
+
+ public void manyToManyCreate() throws Exception
+ {
+
+ Flight firstOne = findFlightById(new Long(1));
+ Flight second = new Flight();
+ second.setId(new Long(2));
+ second.setName("US1");
+ Company us = new Company();
+ us.setName("USAir");
+ second.setCompany(us);
+
+ Set<Customer> customers1 = new HashSet<Customer>();
+ Set<Customer> customers2 = new HashSet<Customer>();
+
+
+ Customer bill = new Customer();
+ bill.setName("Bill");
+ customers1.add(bill);
+
+ Customer monica = new Customer();
+ monica.setName("Monica");
+ customers1.add(monica);
+
+ Customer molly = new Customer();
+ molly.setName("Molly");
+ customers2.add(molly);
+
+ firstOne.setCustomers(customers1);
+ second.setCustomers(customers2);
+
+ manager.persist(second);
+ }
+
+
+ public Flight findFlightById(Long id) throws Exception
+ {
+ return manager.find(Flight.class, id);
+ }
+
+ public Company findCompanyById(Integer id) throws Exception
+ {
+ return manager.find(Company.class, id);
+ }
+
+ public FieldCustomer fieldOneToManyCreate() throws Exception
+ {
+ FieldTicket t = new FieldTicket();
+ //t.setId( new Long(1) );
+ t.setNumber("33A");
+ FieldCustomer c = new FieldCustomer();
+ //c.setId( new Long(1) );
+ Set<FieldTicket> tickets = new HashSet<FieldTicket>();
+ tickets.add(t);
+ t.setCustomer(c);
+ c.setTickets(tickets);
+ FieldAddress address = new FieldAddress();
+ address.setStreet("Clarendon Street");
+ address.setCity("Boston");
+ address.setState("MA");
+ address.setZip("02116");
+ c.setAddress(address);
+ manager.persist(c);
+ return c;
+ }
+
+ public FieldCustomer fieldFindCustomerById(Long id) throws Exception
+ {
+ return manager.find(FieldCustomer.class, id);
+ }
+
+ public FieldFlight fieldManyToOneCreate() throws Exception
+ {
+ FieldFlight firstOne = new FieldFlight();
+ firstOne.setId(new Long(1));
+ firstOne.setName("AF0101");
+ FieldCompany frenchOne = new FieldCompany();
+ frenchOne.setName("Air France");
+ firstOne.setCompany(frenchOne);
+ manager.persist(firstOne);
+ return firstOne;
+ }
+
+ public void fieldManyToManyCreate() throws Exception
+ {
+
+ FieldFlight firstOne = fieldFindFlightById(new Long(1));
+ FieldFlight second = new FieldFlight();
+ second.setId(new Long(2));
+ second.setName("US1");
+ FieldCompany us = new FieldCompany();
+ us.setName("USAir");
+ second.setCompany(us);
+
+ Set<FieldCustomer> customers1 = new HashSet<FieldCustomer>();
+ Set<FieldCustomer> customers2 = new HashSet<FieldCustomer>();
+
+
+ FieldCustomer bill = new FieldCustomer();
+ bill.setName("Bill");
+ customers1.add(bill);
+
+ FieldCustomer monica = new FieldCustomer();
+ monica.setName("Monica");
+ customers1.add(monica);
+
+ FieldCustomer molly = new FieldCustomer();
+ molly.setName("Molly");
+ customers2.add(molly);
+
+ firstOne.setCustomers(customers1);
+ second.setCustomers(customers2);
+
+ manager.persist(second);
+ }
+
+
+ public FieldFlight fieldFindFlightById(Long id) throws Exception
+ {
+ return manager.find(FieldFlight.class, id);
+ }
+
+ public FieldCompany fieldFindCompanyById(Integer id) throws Exception
+ {
+ return manager.find(FieldCompany.class, id);
+ }
+
+ public void testNamedQueries() throws Exception
+ {
+ System.out.println("testNamedQueries()");
+ ArrayList ids = new ArrayList();
+ Airport ap1 = new Airport("OSL", "Oslo");
+ manager.persist(ap1);
+
+ Airport ap2 = new Airport("LHR", "London");
+ manager.persist(ap2);
+
+ Airport ap3 = new Airport("LAX", "Los Angeles");
+ manager.persist(ap3);
+
+ List list = manager.createNamedQuery("allAirports").getResultList();
+ if (list.size() != 3) throw new RuntimeException("Wrong number returned for allAirports query " + list.size());
+
+ Airport ap = (Airport)manager.createNamedQuery("airportById").setParameter("id", ap2.getId()).getSingleResult();
+ if (ap == null) throw new RuntimeException("No object returned by airportById query");
+
+ FieldAirport fap1 = new FieldAirport("LGW", "London");
+ manager.persist(fap1);
+
+ FieldAirport fap2 = new FieldAirport("ORL", "Paris");
+ manager.persist(fap2);
+
+ FieldAirport fap = (FieldAirport)manager.createNamedQuery("airportByCode").setParameter("code", "LGW").getSingleResult();
+ if (fap == null) throw new RuntimeException("No object returned by airportById query");
+ }
+
+ public Customer createCustomer(String name) {
+ Customer c = new Customer();
+ c.setName(name);
+ manager.persist(c);
+ return c;
+ }
+
+ public void changeCustomer(Long id, String name) {
+ Customer c = manager.find(Customer.class, id);
+ c.setName(name);
+ }
+
+ public Customer loadCustomer(Long id) {
+ Customer c = manager.find(Customer.class, id);
+ return c;
+ }
+
+ public boolean isDelegateASession() {
+ //has to delegate to the underlying entitymanager
+ return (manager.getDelegate() != null) && (manager.getDelegate() instanceof Session);
+ }
+
+ public boolean isTrueHibernateSession() {
+ //has to implement the private Session interfaces
+ return (session instanceof Session)
+ && (session instanceof SessionImplementor)
+ && (session instanceof EventSource)
+ && (session instanceof JDBCContext.Context);
+ }
+}
Modified: projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/unit/EntityUnitTestCase.java
===================================================================
--- projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/unit/EntityUnitTestCase.java 2008-02-18 17:45:13 UTC (rev 69895)
+++ projects/ejb3/trunk/core/src/test/java/org/jboss/ejb3/test/entity/unit/EntityUnitTestCase.java 2008-02-18 17:51:55 UTC (rev 69896)
@@ -213,6 +213,16 @@
EntityTest test = (EntityTest) this.getInitialContext().lookup("EntityTestBean/remote");
assertTrue( "Sesison object does not implement the private session interfaces", test.isTrueHibernateSession() );
}
+
+ public void testBadPU() throws Exception
+ {
+ try
+ {
+ EntityTest test = (EntityTest) this.getInitialContext().lookup("NoPUTestBean/remote");
+ fail("should not have deployed");
+ }
+ catch (javax.naming.NameNotFoundException e){}
+ }
public static Test suite() throws Exception
{
More information about the jboss-cvs-commits
mailing list