Java源码示例:org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo
示例1
@Override
public void afterPropertiesSet() throws PersistenceException {
PersistenceUnitManager managerToUse = this.persistenceUnitManager;
if (this.persistenceUnitManager == null) {
this.internalPersistenceUnitManager.afterPropertiesSet();
managerToUse = this.internalPersistenceUnitManager;
}
this.persistenceUnitInfo = determinePersistenceUnitInfo(managerToUse);
JpaVendorAdapter jpaVendorAdapter = getJpaVendorAdapter();
if (jpaVendorAdapter != null && this.persistenceUnitInfo instanceof SmartPersistenceUnitInfo) {
String rootPackage = jpaVendorAdapter.getPersistenceProviderRootPackage();
if (rootPackage != null) {
((SmartPersistenceUnitInfo) this.persistenceUnitInfo).setPersistenceProviderPackageName(rootPackage);
}
}
super.afterPropertiesSet();
}
示例2
@Override
public void afterPropertiesSet() throws PersistenceException {
PersistenceUnitManager managerToUse = this.persistenceUnitManager;
if (this.persistenceUnitManager == null) {
this.internalPersistenceUnitManager.afterPropertiesSet();
managerToUse = this.internalPersistenceUnitManager;
}
this.persistenceUnitInfo = determinePersistenceUnitInfo(managerToUse);
JpaVendorAdapter jpaVendorAdapter = getJpaVendorAdapter();
if (jpaVendorAdapter != null && this.persistenceUnitInfo instanceof SmartPersistenceUnitInfo) {
String rootPackage = jpaVendorAdapter.getPersistenceProviderRootPackage();
if (rootPackage != null) {
((SmartPersistenceUnitInfo) this.persistenceUnitInfo).setPersistenceProviderPackageName(rootPackage);
}
}
super.afterPropertiesSet();
}
示例3
public void generateSchema() throws MojoFailureException
{
final Map<String, Object> cfg = buildCfg();
String[] allBasePackages = this.getBasePackages();
getLog().info("Using base packages " + StringUtils.arrayToDelimitedString(allBasePackages, ", "));
final PersistenceProvider provider = new PersistenceProvider();
final DefaultPersistenceUnitManager manager = new DefaultPersistenceUnitManager();
manager.setDefaultPersistenceUnitRootLocation(null);
manager.setDefaultPersistenceUnitName("default");
manager.setPackagesToScan(allBasePackages);
final String[] zeroPULocations = new String[]{};
manager.setPersistenceXmlLocations(zeroPULocations);
manager.afterPropertiesSet();
final SmartPersistenceUnitInfo puInfo = (SmartPersistenceUnitInfo) manager.obtainDefaultPersistenceUnitInfo();
puInfo.setPersistenceProviderPackageName(provider.getClass().getName());
getLog().info("Entities found : " + puInfo.getManagedClassNames().size());
getLog().debug("Managed class names:\n * " + StringUtils.collectionToDelimitedString(puInfo.getManagedClassNames(), "\n * "));
puInfo.getProperties().putAll(cfg);
provider.generateSchema(new DelegatingPuInfo(puInfo), cfg);
}
示例4
@Override
@SuppressWarnings("rawtypes")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {
final List<String> mergedClassesAndPackages = new ArrayList<>(info.getManagedClassNames());
if (info instanceof SmartPersistenceUnitInfo) {
mergedClassesAndPackages.addAll(((SmartPersistenceUnitInfo) info).getManagedPackages());
}
return new EntityManagerFactoryBuilderImpl(
new PersistenceUnitInfoDescriptor(info) {
@Override
public List<String> getManagedClassNames() {
return mergedClassesAndPackages;
}
}, properties).build();
}
示例5
@Override
@SuppressWarnings("rawtypes")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {
final List<String> mergedClassesAndPackages = new ArrayList<>(info.getManagedClassNames());
if (info instanceof SmartPersistenceUnitInfo) {
mergedClassesAndPackages.addAll(((SmartPersistenceUnitInfo) info).getManagedPackages());
}
return new EntityManagerFactoryBuilderImpl(
new PersistenceUnitInfoDescriptor(info) {
@Override
public List<String> getManagedClassNames() {
return mergedClassesAndPackages;
}
}, properties).build();
}
示例6
@Override
@SuppressWarnings("rawtypes")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {
final List<String> mergedClassesAndPackages = new ArrayList<String>(info.getManagedClassNames());
if (info instanceof SmartPersistenceUnitInfo) {
mergedClassesAndPackages.addAll(((SmartPersistenceUnitInfo) info).getManagedPackages());
}
return new EntityManagerFactoryBuilderImpl(
new PersistenceUnitInfoDescriptor(info) {
@Override
public List<String> getManagedClassNames() {
return mergedClassesAndPackages;
}
}, properties).build();
}
示例7
@SuppressWarnings("rawtypes")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {
Ejb3Configuration cfg = new Ejb3Configuration();
if (info instanceof SmartPersistenceUnitInfo) {
for (String managedPackage : ((SmartPersistenceUnitInfo) info).getManagedPackages()) {
cfg.addPackage(managedPackage);
}
}
Ejb3Configuration configured = cfg.configure(info, properties);
return (configured != null ? configured.buildEntityManagerFactory() : null);
}
示例8
@SuppressWarnings("rawtypes")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {
Ejb3Configuration cfg = new Ejb3Configuration();
if (info instanceof SmartPersistenceUnitInfo) {
for (String managedPackage : ((SmartPersistenceUnitInfo) info).getManagedPackages()) {
cfg.addPackage(managedPackage);
}
}
Ejb3Configuration configured = cfg.configure(info, properties);
return (configured != null ? configured.buildEntityManagerFactory() : null);
}
示例9
@Override
@SuppressWarnings("rawtypes")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {
final List<String> mergedClassesAndPackages = new ArrayList<String>(info.getManagedClassNames());
if (info instanceof SmartPersistenceUnitInfo) {
mergedClassesAndPackages.addAll(((SmartPersistenceUnitInfo) info).getManagedPackages());
}
return new EntityManagerFactoryBuilderImpl(
new PersistenceUnitInfoDescriptor(info) {
@Override
public List<String> getManagedClassNames() {
return mergedClassesAndPackages;
}
}, properties).build();
}
示例10
private void generate() throws Exception {
Map<String, Object> map = JpaSchemaGeneratorUtils.buildProperties(this);
if (getVendor() == null) {
// with persistence.xml
Persistence.generateSchema(this.persistenceUnitName, map);
} else {
PersistenceProvider provider = getProviderClass().newInstance();
List<String> packages = getPackageToScan();
if (packages.isEmpty()) {
throw new IllegalArgumentException("packageToScan is required on xml-less mode.");
}
DefaultPersistenceUnitManager manager = new DefaultPersistenceUnitManager();
manager.setDefaultPersistenceUnitName(getPersistenceUnitName());
manager.setPackagesToScan(packages.toArray(new String[packages.size()]));
// issue #22
Field persistenceXmlLocations = manager.getClass().getDeclaredField("persistenceXmlLocations");
persistenceXmlLocations.setAccessible(true);
persistenceXmlLocations.set(manager, new String[0]);
manager.afterPropertiesSet();
SmartPersistenceUnitInfo info = (SmartPersistenceUnitInfo) manager.obtainDefaultPersistenceUnitInfo();
info.setPersistenceProviderPackageName(provider.getClass().getName());
info.getProperties().putAll(map);
// Path persistenceXml = null;
/* @formatter:off */
// if (Vendor.datanucleus.equals(getVendor())) {
// // datanucleus must need persistence.xml
// Path path = Paths.get(project.getBuild().getOutputDirectory(), "META-INF");
// persistenceXml = Files.createTempFile(path, "persistence-", ".xml");
// try (BufferedWriter writer = Files.newBufferedWriter(persistenceXml, StandardCharsets.UTF_8)) {
// PrintWriter out = new PrintWriter(writer);
// out.println("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
// out.println("<persistence version=\"2.1\"");
// out.println(" xmlns=\"http://xmlns.jcp.org/xml/ns/persistence\"
// xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
// out.println(" xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/persistence
// http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1.xsd\">");
// out.printf(" <persistence-unit name=\"%s\" transaction-type=\"RESOURCE_LOCAL\">\n",
// info.getPersistenceUnitName());
// out.println(" <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>");
// out.println(" <exclude-unlisted-classes>false</exclude-unlisted-classes>");
// out.println(" </persistence-unit>");
// out.println("</persistence>");
// }
// map.put(PropertyNames.PROPERTY_PERSISTENCE_XML_FILENAME, persistenceXml.toAbsolutePath().toString());
// // datanucleus does not support execution order...
// map.remove(PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_SOURCE);
// map.remove(PersistenceUnitProperties.SCHEMA_GENERATION_DROP_SOURCE);
// }
/* @formatter:on */
try {
provider.generateSchema(info, map);
} finally {
// if (persistenceXml != null) {
// Files.delete(persistenceXml);
// }
}
}
}