jpa/subsystem/src/main/java/org/jboss/as/jpa/processor/PersistenceRefProcessor.java
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 JpaLogger.ROOT_LOGGER.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;
    }
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 JpaLogger.ROOT_LOGGER.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;
    }
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 JpaLogger . ROOT_LOGGER . 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 ; }
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
Resolves persistence - unit - ref