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

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

Introduction

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

Prototype

public void addClasses(List<String> classes) 

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());
            }/*from w  w  w .j a  v  a2  s  . c o  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.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);/* w ww . j a va 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);
            }//  w w w. j a  v  a 2s .  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());
    }
}