Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 352937

Summary: null persistence unit name is not supported
Product: z_Archived Reporter: Michal Huniewicz <michal.huniewicz.registered>
Component: EclipselinkAssignee: Nobody - feel free to take it <nobody>
Status: REOPENED --- QA Contact:
Severity: enhancement    
Priority: P3 CC: tom.ware
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Michal Huniewicz CLA 2011-07-23 13:24:14 EDT
Build Identifier: 

When null persistence unit name is provided to the Persistence.createEntityManagerFactory(...) I get an exception, even though a single persistence.xml file with a single persistence unit exists. This should be handled according to JPA.

Versions:
org.eclipse.persistence.eclipselink 2.3.0
org.eclipse.persistence.javax.persistence 2.0.0

Stack trace:
java.lang.RuntimeException: Could not inject members
	at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.injectClass(CDIInjectionEnricher.java:135)
	at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.enrich(CDIInjectionEnricher.java:78)
	at org.jboss.arquillian.test.impl.TestInstanceEnricher.enrich(TestInstanceEnricher.java:52)
	at org.jboss.arquillian.container.test.impl.ClientTestInstanceEnricher.enrich(ClientTestInstanceEnricher.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
	at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
	at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:130)
	at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createBeforeContext(ContainerEventController.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
	at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:82)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
	at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:68)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
	at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:54)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
	at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.before(EventTestRunnerAdaptor.java:95)
	at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:198)
	at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:290)
	at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:45)
	at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:216)
	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:161)
	at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:290)
	at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:45)
	at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:175)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:123)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named null
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:84)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
	at org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.MockJpaInjectionServices.initialiseEntityManager(MockJpaInjectionServices.java:54)
	at org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.MockJpaInjectionServices.resolvePersistenceContext(MockJpaInjectionServices.java:38)
	at org.jboss.weld.util.Beans.injectEEFields(Beans.java:781)
	at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1$1.proceed(ManagedBean.java:181)
	at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:54)
	at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1.work(ManagedBean.java:176)
	at org.jboss.weld.bean.ManagedBean$FixInjectionPoint.run(ManagedBean.java:142)
	at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.inject(ManagedBean.java:170)
	at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:339)
	at org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:67)
	at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:690)
	at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:772)
	at org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:138)
	at org.jboss.weld.util.Beans.injectBoundFields(Beans.java:872)
	at org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:884)
	at org.jboss.weld.manager.SimpleInjectionTarget$1.proceed(SimpleInjectionTarget.java:120)
	at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:54)
	at org.jboss.weld.manager.SimpleInjectionTarget.inject(SimpleInjectionTarget.java:114)
	at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.injectNonContextualInstance(CDIInjectionEnricher.java:145)
	at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.injectClass(CDIInjectionEnricher.java:125)
	... 66 more

Reproducible: Always

Steps to Reproduce:
Code:
		EntityManagerFactory entityManagerFactory = Persistence
				.createEntityManagerFactory(null);
		EntityManager entityManager = entityManagerFactory.createEntityManager();


Source code available: https://github.com/m1key/Inject-PersistenceContext/tree/WithEclipseLinkAsProvider
Comment 1 Tom Ware CLA 2011-08-02 15:35:10 EDT
Closing.  I cannot find a section in the specification that indicates that this should be supported.  Please quote a spec-reference and reopen if you can find it.
Comment 2 Tom Ware CLA 2011-08-02 15:36:33 EDT
On second thought, changing to enhancement.  Please feel free to change the severity back to the original value if you can find a spec reference indicating this should be supported.
Comment 3 Eclipse Webmaster CLA 2022-06-09 10:27:38 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink