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"); } } }
@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); } }
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) { try { pui.getProperties().setProperty("hibernate.hbm2ddl.auto", "none"); pui.getProperties().setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false");
package my.package; public class SetupDatabase implements PersistenceUnitPostProcessor { private String username; private String password; private String dbserver; public void SetupDatabase(){ //do stuff to obtain needed information } public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { pui.getProperties().setProperty("hibernate.connection.username", username ); pui.getProperties().setProperty("hibernate.connection.password", password); pui.getProperties().setProperty("hibernate.connection.url", dbserver ); } }
/** * 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( ) ); } }
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); } } }
@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; }
newPU.getProperties().putAll(oldPU.getProperties()); newPU.getProperties().putAll((Properties)context.getBean(persistenceUnitName + "JpaProperties", Reference.class).get());