super.postProcessPersistenceUnitInfo(newPU); ConfigurationOnlyState state = ConfigurationOnlyState.getState(); String persistenceUnitName = newPU.getPersistenceUnitName(); MutablePersistenceUnitInfo pui = getMergedUnit(persistenceUnitName, newPU); List<String> managedClassNames = newPU.getManagedClassNames(); for (String managedClassName : managedClassNames){ if (!pui.getManagedClassNames().contains(managedClassName)) { pui.addManagedClassName(managedClassName); List<String> mappingFileNames = newPU.getMappingFileNames(); for (String mappingFileName : mappingFileNames) { if (!pui.getMappingFileNames().contains(mappingFileName)) { pui.addMappingFileName(mappingFileName); pui.setExcludeUnlistedClasses(newPU.excludeUnlistedClasses()); for (URL url : newPU.getJarFileUrls()) { if (!pui.getJarFileUrls().contains(url) && !pui.getPersistenceUnitRootUrl().equals(url)) { pui.addJarFileUrl(url); if (pui.getProperties() == null) { pui.setProperties(newPU.getProperties()); } else { Properties props = newPU.getProperties(); if (props != null) { for (Object key : props.keySet()) { pui.getProperties().put(key, props.get(key)); for (BroadleafClassTransformer transformer : classTransformers) {
@Override public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { if (persistenceUnitProperties != null) { String puName = pui.getPersistenceUnitName() + "."; Set<String> keys = persistenceUnitProperties.keySet(); Properties props = pui.getProperties(); for (String key : keys) { if (key.startsWith(puName)){ String value = persistenceUnitProperties.get(key); String newKey = key.substring(puName.length()); if ("null".equalsIgnoreCase(value)){ props.remove(newKey); } else if (value != null && ! "".equals(value)) { props.put(newKey, value); } } } pui.setProperties(props); } }
void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui, PersistenceUnitInfo oldPui) { String persistenceUnitName = pui.getPersistenceUnitName(); if (!pui.getJarFileUrls().contains(url)) { LOG.debug("Adding JAR file URL {} to persistence unit {}.", url, persistenceUnitName); pui.addJarFileUrl(url); if (!pui.getManagedClassNames().contains(className)) { LOG.debug("Adding class {} to PersistenceUnit {}", className, persistenceUnitName); pui.addManagedClassName(className); if (!pui.getMappingFileNames().contains(mappingFileName)) { LOG.debug("Adding mapping file to persistence unit {}.", mappingFileName, persistenceUnitName); pui.addMappingFileName(mappingFileName); URL newUrl = pui.getPersistenceUnitRootUrl(); URL oldUrl = oldPui.getPersistenceUnitRootUrl(); boolean urlNotInJarUrls = !pui.getJarFileUrls().contains(oldUrl); pui.addJarFileUrl(oldUrl);
newPU.addJarFileUrl(newPU.getPersistenceUnitRootUrl()); newPU.setPersistenceUnitRootUrl(null); final String persistenceUnitName = newPU.getPersistenceUnitName(); newPU.addJarFileUrl(url); newPU.addManagedClassName(managedClassName); newPU.addMappingFileName(mappingFileName); newPU.getProperties().putAll(oldPU.getProperties()); if (newPU.getPersistenceProviderClassName() == null) { newPU.setPersistenceProviderClassName(oldPU.getPersistenceProviderClassName()); } else if (!newPU.getPersistenceProviderClassName().equals(oldPU.getPersistenceProviderClassName())) { throw new IllegalStateException("Different PersistenceProviderClassName specified for persistence unit name [" + newPU.getPersistenceUnitName() + "]"); if (newPU.getJtaDataSource() == null) { newPU.setJtaDataSource(oldPU.getJtaDataSource()); } else if (!newPU.getJtaDataSource().equals(oldPU.getJtaDataSource())) { throw new IllegalStateException("Different JTA datasources specified for persistence unit name [" + newPU.getPersistenceUnitName() + "]"); if (newPU.getNonJtaDataSource() == null) { newPU.setNonJtaDataSource(oldPU.getNonJtaDataSource()); } else if (!newPU.getNonJtaDataSource().equals(oldPU.getNonJtaDataSource())) { throw new IllegalStateException("Different non-JTA datasources specified for persistence unit name [" + newPU.getPersistenceUnitName() + "]"); newPU.getProperties().putAll((Properties)context.getBean(persistenceUnitName + "JpaProperties", Reference.class).get());
/** * Show PUI infos * * @param pui * PersistenceUnitInfo */ private void dumpPersistenceUnitInfo( MutablePersistenceUnitInfo pui ) { _Log.debug( "Dumping content for PersistenceUnitInfo of " + pui.getPersistenceUnitName( ) ); _Log.debug( "** getTransactionType : " + pui.getTransactionType( ) ); _Log.debug( "** getPersistenceProviderClassName : " + pui.getPersistenceProviderClassName( ) ); _Log.debug( "** getPersistenceProviderPackageName : " + pui.getPersistenceProviderPackageName( ) ); _Log.debug( "** getPersistenceUnitName : " + pui.getPersistenceUnitName( ) ); _Log.debug( "** getPersistenceXMLSchemaVersion : " + pui.getPersistenceXMLSchemaVersion( ) ); _Log.debug( "** getJtaDataSource : " + pui.getJtaDataSource( ) ); _Log.debug( "** getManagedClassNames : " + pui.getManagedClassNames( ) ); _Log.debug( "** getMappingFileNames : " + pui.getMappingFileNames( ) ); _Log.debug( "** getNonJtaDataSource : " + pui.getNonJtaDataSource( ) ); _Log.debug( "** getPersistenceUnitRootUrl :" + pui.getPersistenceUnitRootUrl( ) ); _Log.debug( "** getProperties : " + pui.getProperties( ) ); } }
@Override public void preparePersistenceUnitInfos() { MutablePersistenceUnitInfo pui = new MutablePersistenceUnitInfo(); pui.setPersistenceUnitName(defaultPersistenceUnitName); pui.setExcludeUnlistedClasses(true); if (pui.getJtaDataSource() == null) { pui.setJtaDataSource(jtaDataSource); } if (pui.getNonJtaDataSource() == null) { pui.setNonJtaDataSource(dataSource); } // TODO register AssignableUUIDGenerator // AssignableUUIDGenerator.setServerConfigurationService(serverConfigurationService); // pui.getIdentifierGeneratorFactory().register("uuid2", AssignableUUIDGenerator.class); postProcessPersistenceUnitInfo(pui); Boolean autoddl = serverConfigurationService.getBoolean("auto.ddl", true); String hbm2ddl = serverConfigurationService.getString(AvailableSettings.HBM2DDL_AUTO, "update"); if (!autoddl) { // if sakai auto.ddl is turned off then set to validate hbm2ddl = "validate"; } pui.getProperties().setProperty(AvailableSettings.HBM2DDL_AUTO, hbm2ddl); defaultPersistenceUnitInfo = pui; }
pui.addMappingFileName( ormAbsolutePath.substring( ormAbsolutePath.indexOf( CLASSPATH_PATH_IDENTIFIER ) ) ); if ( !pui.getManagedClassNames( ).contains( strClass ) ) pui.addManagedClassName( strClass );
@Override public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { String puName = pui.getPersistenceUnitName(); for (ORMConfigDto config : configs) { if (puName.equals(config.getPuName())) { if (CollectionUtils.isNotEmpty(config.getClassNames())) { pui.getManagedClassNames().addAll(config.getClassNames()); } if (CollectionUtils.isNotEmpty(config.getMappingFiles())) { pui.getMappingFileNames().addAll(config.getMappingFiles()); } } } } }
@Override protected void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { try { Field persistenceUnitInfosField = DefaultPersistenceUnitManager.class.getDeclaredField("persistenceUnitInfos"); persistenceUnitInfosField.setAccessible(true); Map<String, MutablePersistenceUnitInfo> persistenceUnitInfos = (Map<String, MutablePersistenceUnitInfo>) persistenceUnitInfosField.get(this); if(persistenceUnitInfos.isEmpty()){ pui.setPersistenceUnitName(mergedPersistenceUnitName); pui.setTransactionType(transactionTypeOverride); }else{ MutablePersistenceUnitInfo currentlyMergedPui = persistenceUnitInfos.get(mergedPersistenceUnitName); for(String className:pui.getManagedClassNames()){ currentlyMergedPui.getManagedClassNames().add(className); } } } catch (Exception e) { throw new RuntimeException("Error while merging persistence units.",e); } super.postProcessPersistenceUnitInfo(pui); }
if (annotatedClasses != null) { for (Class<?> clazz : annotatedClasses) { pui.addManagedClassName(clazz.getName()); log.info("Add annotated class [{}]", clazz.getCanonicalName()); pui.addManagedPackage(aPackage); log.info("Add annotated package [{}]", aPackage.trim()); for (Resource resource : cacheableMappingLocations) { try { pui.addMappingFileName(resource.getURL().toString()); log.info("Add cacheable mapping location [{}]", resource.getFilename()); } catch (IOException e) { for (Resource resource : mappingDirectoryLocations) { try { pui.addMappingFileName(resource.getURL().toString()); log.info("Add mapping directory location [{}]", resource.getFilename()); } catch (IOException e) { for (Resource resource : mappingJarLocations) { try { pui.addJarFileUrl(resource.getURL()); log.info("Add mapping jar location [{}]", resource.getFilename()); } catch (IOException e) { pui.addMappingFileName(resource.getFilename()); log.info("Add mapping location [{}]", resource.getFilename());
@Override public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); provider.setEnvironment(environment); provider.setResourceLoader(resourceLoader); provider.addIncludeFilter(new AnnotationTypeFilter(Entity.class)); provider.addIncludeFilter(new AnnotationTypeFilter(MappedSuperclass.class)); for (BeanDefinition definition : provider.findCandidateComponents(basePackage)) { LOG.debug("Registering classpath-scanned entity {} in persistence unit info!", definition.getBeanClassName()); if (definition.getBeanClassName() != null) { pui.addManagedClassName(definition.getBeanClassName()); } } for (String location : scanForMappingFileLocations()) { LOG.debug("Registering classpath-scanned entity mapping file {} in persistence unit info!", location); pui.addMappingFileName(location); } }
private void performDllGeneration() throws MalformedURLException { for (String eachDatabaseProductName : this.databaseProductNames) { String[] allBasePackages = this.getBasePackages(); this.logger.info("Using base packages " + Joiner.on(", ").join(allBasePackages)); final PersistenceProvider provider = new PersistenceProvider(); final DefaultPersistenceUnitManager manager = new DefaultPersistenceUnitManager(); manager.setDefaultPersistenceUnitRootLocation(null); manager.setDefaultPersistenceUnitName("default"); manager.setPackagesToScan(allBasePackages); manager.setPersistenceXmlLocations(new String[0]); manager.afterPropertiesSet(); final MutablePersistenceUnitInfo puInfo = (MutablePersistenceUnitInfo) manager.obtainDefaultPersistenceUnitInfo(); puInfo.setPersistenceProviderPackageName(provider.getClass().getName()); puInfo.setPersistenceUnitRootUrl(new URL("http://foo.bar")); this.logger.info("Managed classes found: " + puInfo.getManagedClassNames().size()); this.logger.debug("Managed class names:\n -> " + Joiner.on("\n -> ").join(puInfo.getManagedClassNames())); final Map<String, Object> properties = this.buildProperties(eachDatabaseProductName); puInfo.getProperties().putAll(properties); provider.generateSchema(puInfo, properties); } } }
if (!pui.getManagedClassNames().contains(className) && converterAnnotationTypeFilter.match(reader, readerFactory)) { pui.addManagedClassName(className); if (LOG.isDebugEnabled()) { LOG.debug(getPersistenceUnitName()
pui.addManagedClassName(clzz); pui.addManagedClassName(clzz);
/** * Post-process the persistence unit information. If we have seen this persistence * unit name before, merge any newly-defined classes in. Also, if any properties * are set on this post-processor, set them onto the target PersistenceUnitInfo */ @Override public synchronized void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { ValidationUtils.assertNotNull(pui, "persistenceUnitInfo cannot be null"); Set<String> classes = puiClasses.get(pui.getPersistenceUnitName()); if (classes == null) { classes = new LinkedHashSet<String>(); puiClasses.put(pui.getPersistenceUnitName(), classes); } pui.getManagedClassNames().addAll(classes); classes.addAll(pui.getManagedClassNames()); if (properties != null) pui.setProperties(properties); }
/** * Post-process the given PersistenceUnitInfo in order to put all entities in a single persistence unit. * * @param pui * the chosen PersistenceUnitInfo, as read from <code>persistence.xml</code>. Passed in as * MutablePersistenceUnitInfo. */ public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { List<String> classes = puiClasses.get(pui.getPersistenceUnitName()); if (classes == null) { classes = new ArrayList<String>(); puiClasses.put(pui.getPersistenceUnitName(), classes); } pui.getManagedClassNames().addAll(classes); classes.addAll(pui.getManagedClassNames()); } }
/** * {@inheritDoc} */ @Override public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { pui.setExcludeUnlistedClasses(DEFAULT_EXCLUDE_UNLISTED_CLASSES); processConverterPackages(pui); for (String managedClassName : getManagedClassNames()) { pui.addManagedClassName(managedClassName); } }
String className = reader.getClassMetadata().getClassName(); if (matchesFilter(reader, readerFactory, entityTypeFilters)) { pui.addManagedClassName(className); } else if (className.endsWith(PACKAGE_INFO_SUFFIX)) { pui.addManagedPackage(className.substring(0, className.length() - PACKAGE_INFO_SUFFIX.length()));
for (Resource res : resources) { String resJar = resolveJar(res.getURL()); if (!resJar.equals(pui.getPersistenceUnitRootUrl().toString())) { log.info("Adding " + resJar + " to persistence context"); pui.addJarFileUrl(new URL(resJar));
protected void disableSchemaCreateIfApplicable(String persistenceUnitName, MutablePersistenceUnitInfo pui) { String autoDDLStatus = pui.getProperties().getProperty("hibernate.hbm2ddl.auto"); boolean isCreate = autoDDLStatus != null && (autoDDLStatus.equals("create") || autoDDLStatus.equals("create-drop")); boolean detectedCreate = false; if (isCreate && mBeanExporter != null) { try { if (mBeanExporter.getServer().isRegistered(ObjectName.getInstance("bean:name=autoDDLCreateStatusTestBean"))) { Boolean response = (Boolean) mBeanExporter.getServer().invoke(ObjectName.getInstance("bean:name=autoDDLCreateStatusTestBean"), "getStartedWithCreate", new Object[]{persistenceUnitName}, new String[]{String.class.getName()}); if (response == null) { mBeanExporter.getServer().invoke(ObjectName.getInstance("bean:name=autoDDLCreateStatusTestBean"), "setStartedWithCreate", new Object[]{persistenceUnitName, true}, new String[]{String.class.getName(), Boolean.class.getName()}); } else { detectedCreate = true; } } } catch (Exception e) { LOG.warn("Unable to query the mbean server for previous auto.ddl status", e); } } if (detectedCreate) { pui.getProperties().setProperty("hibernate.hbm2ddl.auto", "none"); } } }