List of usage examples for org.hibernate.jpa.boot.internal ParsedPersistenceXmlDescriptor getName
@Override
public String getName()
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; }