@SuppressWarnings("deprecation")
 @Override
 public void addProviderProperties(Map properties, PersistenceUnitMetadata pu) {
   putPropertyIfAbsent(pu, properties, Configuration.USE_NEW_ID_GENERATOR_MAPPINGS, "true");
   putPropertyIfAbsent(
       pu,
       properties,
       org.hibernate.ejb.AvailableSettings.SCANNER,
       HibernateAnnotationScanner.class.getName());
   properties.put(AvailableSettings.APP_CLASSLOADER, pu.getClassLoader());
   putPropertyIfAbsent(pu, properties, AvailableSettings.JTA_PLATFORM, appServerJtaPlatform);
   properties.remove(
       AvailableSettings
           .TRANSACTION_MANAGER_STRATEGY); // remove legacy way of specifying TX manager (conflicts
   // with JTA_PLATFORM)
   putPropertyIfAbsent(
       pu,
       properties,
       org.hibernate.ejb.AvailableSettings.ENTITY_MANAGER_FACTORY_NAME,
       pu.getScopedPersistenceUnitName());
   putPropertyIfAbsent(
       pu, properties, AvailableSettings.SESSION_FACTORY_NAME, pu.getScopedPersistenceUnitName());
   if (!pu.getProperties().containsKey(AvailableSettings.SESSION_FACTORY_NAME)) {
     putPropertyIfAbsent(
         pu, properties, AvailableSettings.SESSION_FACTORY_NAME_IS_JNDI, Boolean.FALSE);
   }
 }
  /**
   * determine if management console can display the second level cache entries
   *
   * @param pu
   * @return false if a custom AvailableSettings.CACHE_REGION_PREFIX property is specified. true if
   *     the scoped persistence unit name is used to prefix cache entries.
   */
  @Override
  public boolean doesScopedPersistenceUnitNameIdentifyCacheRegionName(PersistenceUnitMetadata pu) {
    String cacheRegionPrefix =
        pu.getProperties().getProperty(AvailableSettings.CACHE_REGION_PREFIX);

    return cacheRegionPrefix == null || cacheRegionPrefix.equals(pu.getScopedPersistenceUnitName());
  }
 @Override
 public void addProviderDependencies(
     ServiceRegistry registry,
     ServiceTarget target,
     ServiceBuilder<?> builder,
     PersistenceUnitMetadata pu) {
   Properties properties = pu.getProperties();
   if (Boolean.parseBoolean(properties.getProperty(AvailableSettings.USE_SECOND_LEVEL_CACHE))) {
     HibernateSecondLevelCache.addSecondLevelCacheDependencies(registry, target, builder, pu);
   }
 }
 private void putPropertyIfAbsent(
     PersistenceUnitMetadata pu, Map properties, String property, Object value) {
   if (!pu.getProperties().containsKey(property)) {
     properties.put(property, value);
   }
 }