/** * Resolves persistence-unit-ref * * @param environment The environment to resolve the elements for * @param classLoader The deployment class loader * @param deploymentReflectionIndex The reflection index * @return The bindings for the environment entries */ private List<BindingConfiguration> getPersistenceUnitRefs( DeploymentUnit deploymentUnit, DeploymentDescriptorEnvironment environment, ClassLoader classLoader, DeploymentReflectionIndex deploymentReflectionIndex, ResourceInjectionTarget resourceInjectionTarget) throws DeploymentUnitProcessingException { final List<BindingConfiguration> bindingConfigurations = new ArrayList<BindingConfiguration>(); if (environment.getEnvironment() == null) { return bindingConfigurations; } PersistenceUnitReferencesMetaData persistenceUnitRefs = environment.getEnvironment().getPersistenceUnitRefs(); if (persistenceUnitRefs != null) { if (persistenceUnitRefs.size() > 0) { JPADeploymentMarker.mark(deploymentUnit); } for (PersistenceUnitReferenceMetaData puRef : persistenceUnitRefs) { String name = puRef.getName(); String persistenceUnitName = puRef.getPersistenceUnitName(); String lookup = puRef.getLookupName(); if (!isEmpty(lookup) && !isEmpty(persistenceUnitName)) { throw MESSAGES.cannotSpecifyBoth( "<lookup-name>", lookup, "persistence-unit-name", persistenceUnitName, "<persistence-unit-ref/>", resourceInjectionTarget); } if (!name.startsWith("java:")) { name = environment.getDefaultContext() + name; } // our injection (source) comes from the local (ENC) lookup, no matter what. LookupInjectionSource injectionSource = new LookupInjectionSource(name); // add any injection targets processInjectionTargets( resourceInjectionTarget, injectionSource, classLoader, deploymentReflectionIndex, puRef, EntityManagerFactory.class); BindingConfiguration bindingConfiguration = null; if (!isEmpty(lookup)) { bindingConfiguration = new BindingConfiguration(name, new LookupInjectionSource(lookup)); } else { InjectionSource puBindingSource = this.getPersistenceUnitBindingSource(deploymentUnit, persistenceUnitName); bindingConfiguration = new BindingConfiguration(name, puBindingSource); } bindingConfigurations.add(bindingConfiguration); } } return bindingConfigurations; }