Methods Summary |
---|
private java.util.List | _getJarFiles()
List<String> jarFileNames = new ArrayList<String>(
persistenceUnitDescriptor.getJarFiles());
List<URL> jarFiles = new ArrayList<URL>(jarFileNames.size() + 1);
String absolutePuRoot = getAbsolutePuRootFile().getAbsolutePath();
for (String jarFileName : jarFileNames) {
String nativeJarFileName = jarFileName.replace('/",
File.separatorChar);
final File parentFile = new File(absolutePuRoot).getParentFile();
// only components are exploded, hence first look for original archives.
File jarFile = new File(parentFile, nativeJarFileName);
if (!jarFile.exists()) {
// if the referenced jar is itself a component, then
// it might have been exploded, hence let's see
// if that is the case.
// let's calculate the name component and path component from this URI
// e.g. if URI is ../../foo_bar/my-ejb.jar,
// name component is foo_bar/my-ejb.jar and
// path component is ../../
// These are my own notions used here.
String pathComponent = "";
String nameComponent = jarFileName;
if(jarFileName.lastIndexOf("../") != -1) {
final int separatorIndex = jarFileName.lastIndexOf("../")+3;
pathComponent = jarFileName.substring(0,separatorIndex);
nameComponent = jarFileName.substring(separatorIndex);
}
logger.fine("For jar-file="+ jarFileName+ ", " + // NOI18N
"pathComponent=" +pathComponent + // NOI18N
", nameComponent=" + nameComponent); // NOI18N
File parentPath = new File(parentFile, pathComponent);
jarFile = new File(parentPath, DeploymentUtils.
getRelativeEmbeddedModulePath(parentPath.
getAbsolutePath(), nameComponent));
}
if (jarFile.exists()) {
try {
jarFiles.add(jarFile.toURI().toURL());
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
} else {
// Should be a caught by verifier. So, just log a message
String msg = localStrings.getString("puinfo.referenced_jar_not_found",
new Object[]{absolutePuRoot, jarFileName, jarFile});
logger.log(Level.WARNING, msg);
}
}
return jarFiles;
|
protected javax.sql.DataSource | _getJtaDataSource()
/*
* Use DEFAULT_DS_NAME iff user has not specified both jta-ds-name
* and non-jta-ds-name; and user has specified transaction-type as JTA.
* See Gf issue #1204 as well.
*/
if (getTransactionType() != PersistenceUnitTransactionType.JTA) {
logger.logp(Level.FINE,
"PersistenceUnitInfoImpl", // NOI18N
"_getJtaDataSource", // NOI18N
"This PU is configured as non-jta, so jta-data-source is null"); // NOI18N
return null; // this is a non-jta-data-source
}
String DSName;
String userSuppliedJTADSName = persistenceUnitDescriptor.getJtaDataSource();
if (!isNullOrEmpty(userSuppliedJTADSName)) {
DSName = userSuppliedJTADSName; // use user supplied jta-ds-name
} else if (isNullOrEmpty(persistenceUnitDescriptor.getNonJtaDataSource())) {
DSName = DEFAULT_DS_NAME;
} else {
String msg = localStrings.getString("puinfo.jta-ds-not-configured", // NOI18N
new Object[] {persistenceUnitDescriptor.getName()});
throw new RuntimeException(msg);
}
try {
logger.logp(Level.FINE, "PersistenceUnitLoaderImpl", // NOI18N
"_getJtaDataSource", "JTADSName = {0}", // NOI18N
DSName);
return DataSource.class.cast(lookupPMDataSource(DSName));
} catch (NamingException e) {
throw new RuntimeException(e);
}
|
protected javax.sql.DataSource | _getNonJtaDataSource()
/*
* If non-JTA name is *not* provided
* - use the JTA DS name (if supplied) to call lookupNonTxResource
* If non-JTA name is provided
* - use non-JTA DS name to call lookupNonTxResource
* (this is done for ease of use, because user does not have to
* explicitly mark a connection pool as non-transactional.
* Calling lookupNonTxResource() with a resource which is
* already configured as non-transactional has no side effects.)
* If neither non-JTA nor JTA name is provided
* use DEFAULT_DS_NAME to call lookupNonTxResource
*/
String DSName;
String userSuppliedNonJTADSName = persistenceUnitDescriptor.getNonJtaDataSource();
if (!isNullOrEmpty(userSuppliedNonJTADSName)) {
DSName = userSuppliedNonJTADSName;
} else {
String userSuppliedJTADSName = persistenceUnitDescriptor.getJtaDataSource();
if (!isNullOrEmpty(userSuppliedJTADSName)) {
DSName = userSuppliedJTADSName;
} else {
DSName = DEFAULT_DS_NAME;
}
}
try {
logger.logp(Level.FINE,
"PersistenceUnitInfoImpl", // NOI18N
"_getNonJtaDataSource", "nonJTADSName = {0}", // NOI18N
DSName);
return DataSource.class.cast(lookupNonJtaDataSource(DSName));
} catch (Exception e) {
throw new RuntimeException(e);
}
|
public void | addTransformer(javax.persistence.spi.ClassTransformer transformer){@inheritDoc}
classLoader.addTransformer(transformer);
|
private static void | createJar(java.lang.String sourcePath, java.lang.String destinationPath)Utility method to create a Jar file out of a directory.
Right now this not used because TopLink Essential can handle
exploded directories, but for better pluggability with different provoder
we may have to do use this method to create a jar out of exploded dir.
FileArchive source = new FileArchive();
OutputJarArchive destination = new OutputJarArchive();
try {
source.open(sourcePath);
destination.create(destinationPath);
for (Enumeration entries = source.entries();
entries.hasMoreElements();) {
String entry = String.class.cast(entries.nextElement());
InputStream is = null;
OutputStream os = null;
try {
is = source.getEntry(entry);
os = destination.putNextEntry(entry);
ArchivistUtils.copyWithoutClose(is, os);
} finally {
if (is != null) is.close();
if (os != null) destination.closeEntry();
}
}
} finally {
source.close();
destination.close();
}
|
public boolean | excludeUnlistedClasses()
return persistenceUnitDescriptor.isExcludeUnlistedClasses();
|
private java.lang.String | getAbsolutePuRoot()This method calculates the absolute path of the root of a PU.
Absolute path is not the path with regards to root of file system.
It is the path from the root of the Java EE application this
persistence unit belongs to.
Returned path always uses '/' as path separator.
RootDeploymentDescriptor rootDD = persistenceUnitDescriptor.getParent().
getParent();
String puRoot = persistenceUnitDescriptor.getPuRoot();
if(rootDD.isApplication()){
return puRoot;
} else {
ModuleDescriptor module = BundleDescriptor.class.cast(rootDD).
getModuleDescriptor();
if(module.isStandalone()) {
return puRoot;
} else {
final String moduleLocation =
DeploymentUtils.getRelativeEmbeddedModulePath(
applicationLocation, module.getArchiveUri());
return moduleLocation + '/" + puRoot; // see we always '/'
}
}
|
private java.io.File | getAbsolutePuRootFile()
if (absolutePuRootFile == null) {
absolutePuRootFile = new File(applicationLocation,
getAbsolutePuRoot().replace('/", File.separatorChar));
if (!absolutePuRootFile.exists()) {
throw new RuntimeException(
absolutePuRootFile.getAbsolutePath() + " does not exist!");
}
}
return absolutePuRootFile;
|
public java.lang.ClassLoader | getClassLoader(){@inheritDoc}
return ClassLoader.class.cast(classLoader);
|
private static java.lang.String | getDefaultprovider()This method first checks if default provider is specified in the
environment (e.g. using -D option in domain.xml). If so, we use that.
Else we defaults to TopLink.
final String DEFAULT_PERSISTENCE_PROVIDER_PROPERTY =
"com.sun.persistence.defaultProvider"; // NOI18N
if(defaultProvider == null) {
defaultProvider =
System.getProperty(DEFAULT_PERSISTENCE_PROVIDER_PROPERTY,
DEFAULT_PROVIDER_NAME);
}
return defaultProvider;
|
public java.util.List | getJarFileUrls(){@inheritDoc}
return jarFiles;
|
public javax.sql.DataSource | getJtaDataSource(){@inheritDoc}
return jtaDataSource;
|
public java.util.List | getManagedClassNames(){@inheritDoc}
return persistenceUnitDescriptor.getClasses(); // its already unmodifiable
|
public java.util.List | getMappingFileNames(){@inheritDoc}
return persistenceUnitDescriptor.getMappingFiles(); // its already unmodifiable
|
public java.lang.ClassLoader | getNewTempClassLoader(){@inheritDoc}
return classLoader.copy();
|
public javax.sql.DataSource | getNonJtaDataSource(){@inheritDoc}
return nonJtaDataSource;
|
public java.lang.String | getPersistenceProviderClassName(){@inheritDoc}
return getPersistenceProviderClassNameForPuDesc(persistenceUnitDescriptor);
|
public static java.lang.String | getPersistenceProviderClassNameForPuDesc(com.sun.enterprise.deployment.PersistenceUnitDescriptor persistenceUnitDescriptor)
String provider = persistenceUnitDescriptor.getProvider();
if (isNullOrEmpty(provider)) {
provider = getDefaultprovider();
}
return provider;
|
public java.lang.String | getPersistenceUnitName(){@inheritDoc}
return persistenceUnitDescriptor.getName();
|
public java.net.URL | getPersistenceUnitRootUrl()
try {
return getAbsolutePuRootFile().toURI().toURL();
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
|
public java.util.Properties | getProperties(){@inheritDoc}
return persistenceUnitDescriptor.getProperties(); // its already a clone
|
public javax.persistence.spi.PersistenceUnitTransactionType | getTransactionType(){@inheritDoc}
return PersistenceUnitTransactionType.valueOf(
persistenceUnitDescriptor.getTransactionType());
|
private static boolean | isNullOrEmpty(java.lang.String s)
return s == null || s.length() == 0;
|
protected javax.sql.DataSource | lookupNonJtaDataSource(java.lang.String DSName)get resource of type "nontx"
return (DataSource)ConnectorRuntime.getRuntime().lookupNonTxResource(DSName, false);
|
protected javax.sql.DataSource | lookupPMDataSource(java.lang.String DSName)get resource of type "__PM"
return (DataSource)ConnectorRuntime.getRuntime().lookupPMResource(DSName, false);
|
public java.lang.String | toString()
/*
* This method is used for debugging only.
*/
StringBuilder result = new StringBuilder("<persistence-unit>"); // NOI18N
result.append("\n\t<PURoot>" + getPersistenceUnitRootUrl() + "</PURoot>"); // NOI18N
result.append("\n\t<name>" + getPersistenceUnitName() + "</name>"); // NOI18N
result.append("\n\t<provider>" + getPersistenceProviderClassName() + // NOI18N
"</provider>"); // NOI18N
result.append("\n\t<transaction-type>" + getTransactionType() + // NOI18N
"</transaction-type>"); // NOI18N
result.append("\n\t<jta-data-source>" + getJtaDataSource() + // NOI18N
"</jta-data-source>"); // NOI18N
result.append("\n\t<non-jta-data-source>" + getNonJtaDataSource() + // NOI18N
"</non-jta-data-source>"); // NOI18N
for (URL jar : getJarFileUrls()) {
result.append("\n\t<jar-file>" + jar + "</jar-file>"); // NOI18N
}
for (String mappingFile : getMappingFileNames()) {
result.append("\n\t<mapping-file>" + mappingFile + // NOI18N
"</mapping-file>"); // NOI18N
}
for (String clsName : getManagedClassNames()) {
result.append("\n\t<class-name>" + clsName + "</class-name>"); // NOI18N
}
result.append("\n\t<exclude-unlisted-classes>" + excludeUnlistedClasses() + // NOI18N
"</exclude-unlisted-classes>"); // NOI18N
result.append("\n\t<properties>" + getProperties() + "</properties>"); // NOI18N
result.append("\n\t<class-loader>" + getClassLoader() + // NOI18N
"</class-loader>"); // NOI18N
result.append("\n</persistence-unit>\n"); // NOI18N
return result.toString();
|