Search in sources :

Example 1 with ValidationMode

use of javax.persistence.ValidationMode in project tomee by apache.

the class PersistenceBuilder method createEntityManagerFactory.

public ReloadableEntityManagerFactory createEntityManagerFactory(final PersistenceUnitInfo info, final ClassLoader classLoader, final Map<ComparableValidationConfig, ValidatorFactory> validators, final boolean hasCdi) throws Exception {
    final PersistenceUnitInfoImpl unitInfo = new PersistenceUnitInfoImpl(persistenceClassLoaderHandler);
    // Persistence Unit Id
    unitInfo.setId(info.id);
    // Persistence Unit Name
    unitInfo.setPersistenceUnitName(info.name);
    // Persistence Provider Class Name
    unitInfo.setPersistenceProviderClassName(info.provider);
    // ClassLoader
    unitInfo.setClassLoader(classLoader);
    // Exclude Unlisted Classes
    unitInfo.setExcludeUnlistedClasses(info.excludeUnlistedClasses);
    unitInfo.setLazilyInitialized(info.webappName != null || "true".equalsIgnoreCase(info.properties.getProperty("tomee.jpa.factory.lazy", SystemInstance.get().getProperty("tomee.jpa.factory.lazy", "false"))));
    final Context context = SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext();
    // JTA Datasource
    String jtaDataSourceId = info.jtaDataSource;
    unitInfo.setJtaDataSourceName(jtaDataSourceId);
    if (jtaDataSourceId != null) {
        if (!SystemInstance.get().hasProperty("openejb.geronimo")) {
            final String initialJndiName = jtaDataSourceId;
            try {
                if (!jtaDataSourceId.startsWith("java:openejb/Resource/") && !jtaDataSourceId.startsWith("openejb/Resource/")) {
                    jtaDataSourceId = "openejb/Resource/" + jtaDataSourceId;
                }
                final CommonDataSource jtaDataSource = (CommonDataSource) context.lookup(jtaDataSourceId);
                unitInfo.setJtaDataSource(jtaDataSource);
            } catch (final NamingException e) {
                try {
                    unitInfo.setJtaDataSource((DataSource) new InitialContext().lookup(initialJndiName));
                } catch (final NamingException ne) {
                    throw new OpenEJBException("Could not lookup <jta-data-source> '" + jtaDataSourceId + "' for unit '" + unitInfo.getPersistenceUnitName() + "'", e);
                }
            }
        }
    }
    // Managed Class Names
    unitInfo.setManagedClassNames(info.classes);
    // Mapping File Names
    unitInfo.setMappingFileNames(info.mappingFiles);
    // Handle Properties
    unitInfo.setProperties(info.properties);
    // Schema version of the persistence.xml file
    unitInfo.setPersistenceXMLSchemaVersion(info.persistenceXMLSchemaVersion);
    // Second-level cache mode for the persistence unit
    final SharedCacheMode sharedCacheMode = Enum.valueOf(SharedCacheMode.class, info.sharedCacheMode);
    unitInfo.setSharedCacheMode(sharedCacheMode);
    // The validation mode to be used for the persistence unit
    final ValidationMode validationMode = Enum.valueOf(ValidationMode.class, info.validationMode);
    unitInfo.setValidationMode(validationMode);
    // Persistence Unit Transaction Type
    final PersistenceUnitTransactionType type = Enum.valueOf(PersistenceUnitTransactionType.class, info.transactionType);
    unitInfo.setTransactionType(type);
    // Non JTA Datasource
    String nonJtaDataSourceId = info.nonJtaDataSource;
    unitInfo.setNonJtaDataSourceName(nonJtaDataSourceId);
    if (nonJtaDataSourceId != null) {
        if (!SystemInstance.get().hasProperty("openejb.geronimo")) {
            final String initialJndiName = nonJtaDataSourceId;
            try {
                if (!nonJtaDataSourceId.startsWith("java:openejb/Resource/")) {
                    nonJtaDataSourceId = "java:openejb/Resource/" + nonJtaDataSourceId;
                }
                final CommonDataSource nonJtaDataSource = (CommonDataSource) context.lookup(nonJtaDataSourceId);
                unitInfo.setNonJtaDataSource(nonJtaDataSource);
            } catch (final NamingException e) {
                try {
                    unitInfo.setNonJtaDataSource((DataSource) new InitialContext().lookup(initialJndiName));
                } catch (final NamingException ne) {
                    throw new OpenEJBException("Could not lookup <non-jta-data-source> '" + nonJtaDataSourceId + "' for unit '" + unitInfo.getPersistenceUnitName() + "'", e);
                }
            }
        }
    }
    // Persistence Unit Root Url
    unitInfo.setRootUrlAndJarUrls(info.persistenceUnitRootUrl, info.jarFiles);
    // create the persistence provider
    final String persistenceProviderClassName = unitInfo.getPersistenceProviderClassName();
    unitInfo.setPersistenceProviderClassName(persistenceProviderClassName);
    final EntityManagerFactoryCallable callable = new EntityManagerFactoryCallable(persistenceProviderClassName, unitInfo, classLoader, validators, hasCdi);
    return new ReloadableEntityManagerFactory(classLoader, callable, unitInfo);
}
Also used : InitialContext(javax.naming.InitialContext) Context(javax.naming.Context) ContainerSystem(org.apache.openejb.spi.ContainerSystem) OpenEJBException(org.apache.openejb.OpenEJBException) PersistenceUnitInfoImpl(org.apache.openejb.persistence.PersistenceUnitInfoImpl) ValidationMode(javax.persistence.ValidationMode) CommonDataSource(javax.sql.CommonDataSource) InitialContext(javax.naming.InitialContext) CommonDataSource(javax.sql.CommonDataSource) DataSource(javax.sql.DataSource) SharedCacheMode(javax.persistence.SharedCacheMode) NamingException(javax.naming.NamingException) PersistenceUnitTransactionType(javax.persistence.spi.PersistenceUnitTransactionType)

Aggregations

Context (javax.naming.Context)1 InitialContext (javax.naming.InitialContext)1 NamingException (javax.naming.NamingException)1 SharedCacheMode (javax.persistence.SharedCacheMode)1 ValidationMode (javax.persistence.ValidationMode)1 PersistenceUnitTransactionType (javax.persistence.spi.PersistenceUnitTransactionType)1 CommonDataSource (javax.sql.CommonDataSource)1 DataSource (javax.sql.DataSource)1 OpenEJBException (org.apache.openejb.OpenEJBException)1 PersistenceUnitInfoImpl (org.apache.openejb.persistence.PersistenceUnitInfoImpl)1 ContainerSystem (org.apache.openejb.spi.ContainerSystem)1