@Override protected RegionFactory resolveRegionFactory(Map configurationValues, ServiceRegistryImplementor registry) { final Object useSecondLevelCache = configurationValues.get(USE_SECOND_LEVEL_CACHE); final String jpaSharedCodeModeValue = configurationValues.get(JPA_SHARED_CACHE_MODE) != null ? configurationValues.get(JPA_SHARED_CACHE_MODE).toString() : UNSPECIFIED; final Object regionFactory = configurationValues.get(HIBERNATE_REGION_FACTORY_CLASS); // treat Hibernate 2lc as off, if not specified. // Note that Hibernate 2lc in 5.1.x, defaults to disabled, so this code is only needed in 5.3.x+. if(Boolean.parseBoolean((String)useSecondLevelCache)) { JPA_LOGGER.tracef("WildFlyCustomRegionFactoryInitiator#resolveRegionFactory using %s for 2lc, useSecondLevelCache=%s, jpaSharedCodeModeValue=%s, regionFactory=%s", V53_INFINISPAN_REGION_FACTORY, useSecondLevelCache,jpaSharedCodeModeValue, regionFactory); configurationValues.put(HIBERNATE_REGION_FACTORY_CLASS, V53_INFINISPAN_REGION_FACTORY); return super.resolveRegionFactory(configurationValues, registry); } else if(UNSPECIFIED.equals(jpaSharedCodeModeValue) || NONE.equals(jpaSharedCodeModeValue)) { // explicitly disable 2lc cache JPA_LOGGER.tracef("WildFlyCustomRegionFactoryInitiator#resolveRegionFactory not using a 2lc, useSecondLevelCache=%s, jpaSharedCodeModeValue=%s, regionFactory=%s", useSecondLevelCache,jpaSharedCodeModeValue, regionFactory); return NoCachingRegionFactory.INSTANCE; } else { JPA_LOGGER.tracef("WildFlyCustomRegionFactoryInitiator#resolveRegionFactory using %s for 2lc, useSecondLevelCache=%s, jpaSharedCodeModeValue=%s, regionFactory=%s", V53_INFINISPAN_REGION_FACTORY, useSecondLevelCache,jpaSharedCodeModeValue, regionFactory); configurationValues.put(HIBERNATE_REGION_FACTORY_CLASS, V53_INFINISPAN_REGION_FACTORY); return super.resolveRegionFactory(configurationValues, registry); } } }
@Override public void contribute(StandardServiceRegistryBuilder serviceRegistryBuilder) { // note that the following deprecated getSettings() is agreed to be replaced with method that returns immutable copy of configuration settings. final Object jtaPlatformInitiatorEnabled = serviceRegistryBuilder.getSettings().getOrDefault(CONTROLJTAINTEGRATION, true); if (serviceRegistryBuilder.getSettings().get(TRANSACTION_PLATFORM) != null) { // applications that already specify the transaction platform property which will override the WildFlyCustomJtaPlatform. JPA_LOGGER.tracef("ServiceContributorImpl#contribute application configured the JTA Platform to be used instead of WildFlyCustomJtaPlatform (%s=%s)", TRANSACTION_PLATFORM, serviceRegistryBuilder.getSettings().get(TRANSACTION_PLATFORM)); } else if (jtaPlatformInitiatorEnabled == null || (jtaPlatformInitiatorEnabled instanceof Boolean && ((Boolean) jtaPlatformInitiatorEnabled).booleanValue()) || Boolean.parseBoolean(jtaPlatformInitiatorEnabled.toString())) { // use WildFlyCustomJtaPlatform unless they explicitly set wildfly.jpa.jtaplatform to false. JPA_LOGGER.tracef("ServiceContributorImpl#contribute application will use WildFlyCustomJtaPlatform"); serviceRegistryBuilder.addInitiator(new WildFlyCustomJtaPlatformInitiator()); } final Object regionFactoryInitiatorEnabled = serviceRegistryBuilder.getSettings().getOrDefault(CONTROL2LCINTEGRATION, true); final Object regionFactory = serviceRegistryBuilder.getSettings().get(HIBERNATE_REGION_FACTORY_CLASS); if ((regionFactory instanceof String) && (((String) regionFactory)).contains(EHCACHE)) { JPA_LOGGER.tracef("ServiceContributorImpl#contribute application is using Ehcache via regionFactory=%s", regionFactory); } else if (regionFactoryInitiatorEnabled == null || (regionFactoryInitiatorEnabled instanceof Boolean && ((Boolean) regionFactoryInitiatorEnabled).booleanValue()) || Boolean.parseBoolean(regionFactoryInitiatorEnabled.toString())) { JPA_LOGGER.tracef("ServiceContributorImpl#contribute adding ORM initiator for 2lc region factory"); serviceRegistryBuilder.addInitiator(new WildFlyCustomRegionFactoryInitiator()); } } }
@Override public void addProviderDependencies(PersistenceUnitMetadata pu) { final Properties properties = pu.getProperties(); final String sharedCacheMode = properties.getProperty(SHARED_CACHE_MODE); if ( Classification.NONE.equals(platform.defaultCacheClassification())) { JPA_LOGGER.tracef("second level cache is not supported in platform, ignoring shared cache mode"); pu.setSharedCacheMode(SharedCacheMode.NONE); } // check if 2lc is explicitly disabled which takes precedence over other settings boolean sharedCacheDisabled = SharedCacheMode.NONE.equals(pu.getSharedCacheMode()) || NONE.equals(sharedCacheMode) || SharedCacheMode.UNSPECIFIED.equals(pu.getSharedCacheMode()) || UNSPECIFIED.equals(sharedCacheMode); if (!sharedCacheDisabled && (null == properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE) || Boolean.parseBoolean(properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE)))) { HibernateSecondLevelCache.addSecondLevelCacheDependencies(pu.getProperties(), pu.getScopedPersistenceUnitName()); JPA_LOGGER.tracef("second level cache enabled for %s", pu.getScopedPersistenceUnitName()); } else { JPA_LOGGER.tracef("second level cache disabled for %s, pu %s property = %s, pu.getSharedCacheMode = %s", pu.getScopedPersistenceUnitName(), SHARED_CACHE_MODE, sharedCacheMode, pu.getSharedCacheMode().toString()); pu.setSharedCacheMode(SharedCacheMode.NONE); // ensure that Hibernate doesn't try to use the 2lc for UNSPECIFIED } }
JPA_LOGGER.tracef( "second level cache is not supported in platform, ignoring shared cache mode" ); pu.getSharedCacheMode() ) ) ) ) { JPA_LOGGER.tracef( "second level cache enabled for %s", pu.getScopedPersistenceUnitName() ); JPA_LOGGER.tracef( "second level cache disabled for %s, pu %s property = %s, pu.getSharedCacheMode = %s", pu.getScopedPersistenceUnitName(),
@Override public void addProviderDependencies(PersistenceUnitMetadata pu) { final Properties properties = pu.getProperties(); final String sharedCacheMode = properties.getProperty(SHARED_CACHE_MODE); if ( Classification.NONE.equals(platform.defaultCacheClassification())) { if (!SharedCacheMode.NONE.equals(pu.getSharedCacheMode())) { JPA_LOGGER.tracef("second level cache is not supported in platform, ignoring shared cache mode"); } pu.setSharedCacheMode(SharedCacheMode.NONE); } // check if 2lc is explicitly disabled which takes precedence over other settings boolean sharedCacheDisabled = SharedCacheMode.NONE.equals(pu.getSharedCacheMode()) || NONE.equals(sharedCacheMode); if (!sharedCacheDisabled && Boolean.parseBoolean(properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE)) || (sharedCacheMode != null && (!NONE.equals(sharedCacheMode))) || (!SharedCacheMode.NONE.equals(pu.getSharedCacheMode()) && (!SharedCacheMode.UNSPECIFIED.equals(pu.getSharedCacheMode())))) { HibernateSecondLevelCache.addSecondLevelCacheDependencies(pu.getProperties(), pu.getScopedPersistenceUnitName()); JPA_LOGGER.tracef("second level cache enabled for %s", pu.getScopedPersistenceUnitName()); } else { JPA_LOGGER.tracef("second level cache disabled for %s, pu %s property = %s, pu.getSharedCacheMode = %s", pu.getScopedPersistenceUnitName(), SHARED_CACHE_MODE, sharedCacheMode, pu.getSharedCacheMode().toString()); } }
@Override public void addProviderDependencies(PersistenceUnitMetadata pu) { final Properties properties = pu.getProperties(); final String sharedCacheMode = properties.getProperty(SHARED_CACHE_MODE); if ( Classification.NONE.equals(platform.defaultCacheClassification())) { JPA_LOGGER.tracef("second level cache is not supported in platform, ignoring shared cache mode"); pu.setSharedCacheMode(SharedCacheMode.NONE); } // check if 2lc is explicitly disabled which takes precedence over other settings boolean sharedCacheDisabled = SharedCacheMode.NONE.equals(pu.getSharedCacheMode()) || NONE.equals(sharedCacheMode); if (!sharedCacheDisabled && (null == properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE) || Boolean.parseBoolean(properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE)))) { HibernateSecondLevelCache.addSecondLevelCacheDependencies(pu.getProperties(), pu.getScopedPersistenceUnitName()); JPA_LOGGER.tracef("second level cache enabled for %s", pu.getScopedPersistenceUnitName()); } else { JPA_LOGGER.tracef("second level cache disabled for %s, pu %s property = %s, pu.getSharedCacheMode = %s", pu.getScopedPersistenceUnitName(), SHARED_CACHE_MODE, sharedCacheMode, pu.getSharedCacheMode().toString()); } }
@Override public void addProviderDependencies(PersistenceUnitMetadata pu) { final Properties properties = pu.getProperties(); final String sharedCacheMode = properties.getProperty(SHARED_CACHE_MODE); if ( Classification.NONE.equals(platform.defaultCacheClassification())) { if (!SharedCacheMode.NONE.equals(pu.getSharedCacheMode())) { JPA_LOGGER.tracef("second level cache is not supported in platform, ignoring shared cache mode"); } pu.setSharedCacheMode(SharedCacheMode.NONE); } // check if 2lc is explicitly disabled which takes precedence over other settings boolean sharedCacheDisabled = SharedCacheMode.NONE.equals(pu.getSharedCacheMode()) || NONE.equals(sharedCacheMode); if (!sharedCacheDisabled && Boolean.parseBoolean(properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE)) || (sharedCacheMode != null && (!NONE.equals(sharedCacheMode))) || (!SharedCacheMode.NONE.equals(pu.getSharedCacheMode()) && (!SharedCacheMode.UNSPECIFIED.equals(pu.getSharedCacheMode())))) { HibernateSecondLevelCache.addSecondLevelCacheDependencies(pu.getProperties(), pu.getScopedPersistenceUnitName()); JPA_LOGGER.tracef("second level cache enabled for %s", pu.getScopedPersistenceUnitName()); } else { JPA_LOGGER.tracef("second level cache disabled for %s, pu %s property = %s, pu.getSharedCacheMode = %s", pu.getScopedPersistenceUnitName(), SHARED_CACHE_MODE, sharedCacheMode, pu.getSharedCacheMode().toString()); } }