List of usage examples for org.hibernate.jpa.boot.internal ParsedPersistenceXmlDescriptor setTransactionType
public void setTransactionType(PersistenceUnitTransactionType transactionType)
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()); }// ww w . j av a2 s .c om // 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.internal.PersistenceXmlParserImpl.java
License:Open Source License
@SuppressWarnings("rawtypes") private List<ParsedPersistenceXmlDescriptor> parsePersistenceXml(URL xmlUrl, Map integration) { LOG.tracef("Attempting to parse persistence.xml file : %s", xmlUrl.toExternalForm()); final Document doc = loadUrl(xmlUrl); final Element top = doc.getDocumentElement(); final List<ParsedPersistenceXmlDescriptor> persistenceUnits = new ArrayList<ParsedPersistenceXmlDescriptor>(); final NodeList children = top.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { if (children.item(i).getNodeType() == Node.ELEMENT_NODE) { final Element element = (Element) children.item(i); final String tag = element.getTagName(); if (tag.equals("persistence-unit")) { // Decides which sub path in archives to use String shortPath = MetaConfig.getShortPath(metaConfig); if (StringUtils.invalid(shortPath)) { shortPath = "/META-INF/persistence.xml"; }/* www. j a v a 2 s .co m*/ // Decides whether is needed to scan archives final URL puRootUrl; if (MetaConfig.isScanArchives(metaConfig)) { puRootUrl = ArchiveHelper.getJarURLFromURLEntry(xmlUrl, shortPath); } else { puRootUrl = xmlUrl; } ParsedPersistenceXmlDescriptor persistenceUnit = new ParsedPersistenceXmlDescriptor(puRootUrl); bindPersistenceUnit(persistenceUnit, element); // per JPA spec, any settings passed in to // PersistenceProvider bootstrap methods should override // values found in persistence.xml if (integration.containsKey(AvailableSettings.PROVIDER)) { persistenceUnit.setProviderClassName((String) integration.get(AvailableSettings.PROVIDER)); } if (integration.containsKey(AvailableSettings.TRANSACTION_TYPE)) { String transactionType = (String) integration.get(AvailableSettings.TRANSACTION_TYPE); persistenceUnit.setTransactionType(parseTransactionType(transactionType)); } PersistenceDescriptorUtils.resolveTransactionType(persistenceUnit, metaConfig); if (integration.containsKey(AvailableSettings.JTA_DATASOURCE)) { persistenceUnit.setJtaDataSource(integration.get(AvailableSettings.JTA_DATASOURCE)); } if (integration.containsKey(AvailableSettings.NON_JTA_DATASOURCE)) { persistenceUnit.setNonJtaDataSource(integration.get(AvailableSettings.NON_JTA_DATASOURCE)); } PersistenceDescriptorUtils.resolveDataSource(persistenceUnit, metaConfig); decodeTransactionType(persistenceUnit); Properties properties = persistenceUnit.getProperties(); ConfigurationHelper.overrideProperties(properties, integration); persistenceUnits.add(persistenceUnit); } } } return persistenceUnits; }
From source file:org.lightmare.jpa.hibernate.internal.PersistenceXmlParserImpl.java
License:Open Source License
private void decodeTransactionType(ParsedPersistenceXmlDescriptor persistenceUnit) { // if transaction type is set already // use that value // else//from w w w . java 2s.com // if JTA DS // use JTA // else if NOT JTA DS // use RESOURCE_LOCAL // else // use defaultTransactionType if (persistenceUnit.getTransactionType() != null) { return; } if (persistenceUnit.getJtaDataSource() != null) { persistenceUnit.setTransactionType(PersistenceUnitTransactionType.JTA); } else if (persistenceUnit.getNonJtaDataSource() != null) { persistenceUnit.setTransactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL); } else { persistenceUnit.setTransactionType(defaultTransactionType); } }
From source file:org.lightmare.jpa.hibernate.internal.PersistenceXmlParserImpl.java
License:Open Source License
private void bindPersistenceUnit(ParsedPersistenceXmlDescriptor persistenceUnit, Element persistenceUnitElement) { final String name = persistenceUnitElement.getAttribute("name"); if (StringHelper.isNotEmpty(name)) { LOG.tracef("Persistence unit name from persistence.xml : %s", name); persistenceUnit.setName(name);//from w ww . j a v a 2 s . c o m } final PersistenceUnitTransactionType transactionType = parseTransactionType( persistenceUnitElement.getAttribute("transaction-type")); if (transactionType != null) { persistenceUnit.setTransactionType(transactionType); } NodeList children = persistenceUnitElement.getChildNodes(); boolean resolvedClasses = Boolean.FALSE; for (int i = 0; i < children.getLength(); i++) { if (children.item(i).getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) children.item(i); String tag = element.getTagName(); if (tag.equals("non-jta-data-source")) { persistenceUnit.setNonJtaDataSource(extractContent(element)); } else if (tag.equals("jta-data-source")) { persistenceUnit.setJtaDataSource(extractContent(element)); } else if (tag.equals("provider")) { persistenceUnit.setProviderClassName(extractContent(element)); } else if (tag.equals("class")) { if (CollectionUtils.invalid(MetaConfig.getClasses(metaConfig))) { persistenceUnit.addClasses(extractContent(element)); } else if (Boolean.FALSE.equals(resolvedClasses)) { PersistenceDescriptorUtils.resolveEntities(persistenceUnit, metaConfig); resolvedClasses = Boolean.TRUE; } } else if (tag.equals("mapping-file")) { persistenceUnit.addMappingFiles(extractContent(element)); } else if (tag.equals("jar-file")) { persistenceUnit.addJarFileUrl(ArchiveHelper.getURLFromPath(extractContent(element))); } else if (tag.equals("exclude-unlisted-classes")) { persistenceUnit.setExcludeUnlistedClasses(extractBooleanContent(element, true)); } else if (tag.equals("delimited-identifiers")) { persistenceUnit.setUseQuotedIdentifiers(true); } else if (tag.equals("validation-mode")) { persistenceUnit.setValidationMode(extractContent(element)); } else if (tag.equals("shared-cache-mode")) { persistenceUnit.setSharedCacheMode(extractContent(element)); } else if (tag.equals("properties")) { NodeList props = element.getChildNodes(); for (int j = 0; j < props.getLength(); j++) { if (props.item(j).getNodeType() == Node.ELEMENT_NODE) { Element propElement = (Element) props.item(j); if (!"property".equals(propElement.getTagName())) { continue; } String propName = propElement.getAttribute("name").trim(); String propValue = propElement.getAttribute("value").trim(); if (StringHelper.isEmpty(propValue)) { // fall back to the natural (Hibernate) way of // description propValue = extractContent(propElement, ""); } persistenceUnit.getProperties().put(propName, propValue); } } } } } if (Boolean.FALSE.equals(resolvedClasses)) { PersistenceDescriptorUtils.resolveEntities(persistenceUnit, metaConfig); } }
From source file:org.umbrew.hibernate.search.database.worker.backend.DatabaseBackendQueueProcessor.java
License:Open Source License
private synchronized void initializeEntityManagerFactoryHolder(MaskedProperty props) { if (EntityManagerFactoryHolder.getEntityManagerFactory() == null) { Map<String, String> settings = new HashMap<String, String>(); for (Object key : props.keySet()) { String property = key.toString(); if (property.startsWith(HIBERNATE_PREFIX)) { String value = props.getProperty(property).toString(); property = property.substring(HIBERNATE_PREFIX_FIRST_PART.length()); log.debugf("Setting property \"%s\" to \"%s\" for internal entity manager", property, value); settings.put(property, value); } else { log.tracef("Ignoring property \"%s\" for internal entity manager", property); }//from w w w . j a va2 s .c o m } putIfNotPresent(settings, "hibernate.hbm2ddl.auto", "update"); putIfNotPresent(settings, "hibernate.show_sql", "false"); putIfNotPresent(settings, "hibernate.format_sql", "false"); putIfNotPresent(settings, "hibernate.dialect_resolvers", StandardDialectResolver.class.getName()); putIfNotPresent(settings, "hibernate.transaction.jta.platform", jtaPlatform); ParsedPersistenceXmlDescriptor deploymentDescriptor = new ParsedPersistenceXmlDescriptor(null); deploymentDescriptor.addClasses(LuceneDatabaseWork.class.getName()); deploymentDescriptor.setTransactionType(PersistenceUnitTransactionType.JTA); EntityManagerFactoryBuilderImpl builder = new EntityManagerFactoryBuilderImpl(deploymentDescriptor, settings); builder.buildServiceRegistry(); EntityManagerFactoryHolder.setEntityManagerFactory(builder.build()); } }