List of usage examples for org.hibernate.jpa.boot.internal ParsedPersistenceXmlDescriptor getProviderClassName
@Override
public String getProviderClassName()
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 * /*from ww w . j av a 2s . 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; }