Example usage for org.hibernate.jpa.boot.internal ParsedPersistenceXmlDescriptor getName

List of usage examples for org.hibernate.jpa.boot.internal ParsedPersistenceXmlDescriptor getName

Introduction

In this page you can find the example usage for org.hibernate.jpa.boot.internal ParsedPersistenceXmlDescriptor getName.

Prototype

@Override
    public String getName() 

Source Link

Usage

From source file:org.keycloak.connections.jpa.util.JpaUtils.java

License:Apache License

public static EntityManagerFactory createEntityManagerFactory(KeycloakSession session, String unitName,
        Map<String, Object> properties, boolean jta) {
    PersistenceUnitTransactionType txType = jta ? PersistenceUnitTransactionType.JTA
            : PersistenceUnitTransactionType.RESOURCE_LOCAL;
    List<ParsedPersistenceXmlDescriptor> persistenceUnits = PersistenceXmlParser
            .locatePersistenceUnits(properties);
    for (ParsedPersistenceXmlDescriptor persistenceUnit : persistenceUnits) {
        if (persistenceUnit.getName().equals(unitName)) {
            List<Class<?>> providedEntities = getProvidedEntities(session);
            for (Class<?> entityClass : providedEntities) {
                // Add all extra entity classes to the persistence unit.
                persistenceUnit.addClasses(entityClass.getName());
            }// w  w w .  ja v  a 2s .co m
            // Now build the entity manager factory, supplying a proxy classloader, so Hibernate will be able
            // to find and load the extra provided entities.
            persistenceUnit.setTransactionType(txType);
            return Bootstrap.getEntityManagerFactoryBuilder(persistenceUnit, properties,
                    new ProxyClassLoader(providedEntities)).build();
        }
    }
    throw new RuntimeException("Persistence unit '" + unitName + "' not found");
}

From source file:org.lightmare.jpa.hibernate.jpa.HibernatePersistenceProviderExt.java

License:Open Source License

/**
 * Creates {@link PersistenceUnitDescriptor} for passed persistence unit
 * name {@link Map} of properties and {@link ClassLoader} instance
 * /*w  w  w  .j  av  a 2 s . c om*/
 * @param persistenceUnitName
 * @param properties
 * @param providedClassLoader
 * @return {@link PersistenceUnitDescriptor}
 */
@SuppressWarnings({ "rawtypes" })
public PersistenceUnitDescriptor getPersistenceXmlDescriptor(String persistenceUnitName, Map properties,
        ClassLoader providedClassLoader) {

    ParsedPersistenceXmlDescriptor descriptor = null;

    final Map integration = wrap(properties);
    final List<ParsedPersistenceXmlDescriptor> units;

    try {
        units = PersistenceXmlParserImpl.locatePersistenceUnits(integration, metaConfig);
    } catch (Exception ex) {
        LOG.debug("Unable to locate persistence units", ex);
        throw new PersistenceException("Unable to locate persistence units", ex);
    }

    LOG.debugf("Located and parsed %s persistence units; checking each", units.size());

    if (persistenceUnitName == null && units.size() > CollectionUtils.SINGLTON_LENGTH) {
        // no persistence-unit name to look for was given and we found
        // multiple persistence-units
        throw new PersistenceException("No name provided and multiple persistence units found");
    }

    boolean notMatches = Boolean.TRUE;
    Iterator<ParsedPersistenceXmlDescriptor> descriptorIterator = units.iterator();
    ParsedPersistenceXmlDescriptor persistenceUnit;
    while (descriptorIterator.hasNext() && notMatches) {
        persistenceUnit = descriptorIterator.next();
        LOG.debugf(
                "Checking persistence-unit [name=%s, explicit-provider=%s] against incoming persistence unit name [%s]",
                persistenceUnit.getName(), persistenceUnit.getProviderClassName(), persistenceUnitName);

        final boolean matches = (persistenceUnitName == null
                || persistenceUnitName.equals(persistenceUnit.getName()));
        notMatches = Boolean.FALSE.equals(matches);
        if (notMatches) {
            LOG.debug("Excluding from consideration due to name mis-match");
            // See if we (Hibernate) are the persistence provider
        } else if (Boolean.FALSE.equals(ProviderChecker.isProvider(persistenceUnit, properties))) {
            LOG.debug("Excluding from consideration due to provider mis-match");
        } else {
            descriptor = persistenceUnit;
        }
    }

    return descriptor;
}