Author: rmannibucau
Date: Sun Aug 21 20:59:19 2011
New Revision: 1160060
URL: http://svn.apache.org/viewvc?rev=1160060&view=rev
Log:
allowing persistence.xml to be read from file or an URL for standalone webapp
Modified:
openejb/trunk/openejb3/assembly/openejb-lite/pom.xml
openejb/trunk/openejb3/assembly/openejb-lite/src/main/assembly/client.xml
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Modified: openejb/trunk/openejb3/assembly/openejb-lite/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-lite/pom.xml?rev=1160060&r1=1160059&r2=1160060&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-lite/pom.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-lite/pom.xml Sun Aug 21 20:59:19
2011
@@ -71,10 +71,6 @@
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-ra</artifactId>
</exclusion>
- <exclusion>
- <groupId>org.apache.openjpa</groupId>
- <artifactId>openjpa</artifactId>
- </exclusion>
</exclusions>
</dependency>
</dependencies>
Modified:
openejb/trunk/openejb3/assembly/openejb-lite/src/main/assembly/client.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-lite/src/main/assembly/client.xml?rev=1160060&r1=1160059&r2=1160060&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-lite/src/main/assembly/client.xml
(original)
+++ openejb/trunk/openejb3/assembly/openejb-lite/src/main/assembly/client.xml
Sun Aug 21 20:59:19 2011
@@ -61,6 +61,7 @@
<include>org.apache.openejb:openejb-itests-servlets</include>
<include>org.apache.openejb:openejb-itests-client</include>
<include>org.apache.openejb:openejb-client</include>
+ <include>org.apache.openjpa:openjpa</include>
<!-- ActiveMQ -->
<include>org.apache.activemq:activemq-core</include>
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1160060&r1=1160059&r2=1160060&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Sun Aug 21 20:59:19 2011
@@ -55,11 +55,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLClassLoader;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -75,6 +73,7 @@ import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
import static org.apache.openejb.util.URLs.toFile;
@@ -185,16 +184,48 @@ public class DeploymentLoader implements
AppModule appModule = new
AppModule(OpenEJB.class.getClassLoader(), file.getAbsolutePath(), new
Application(), true);
addWebModule(appModule, baseUrl,
OpenEJB.class.getClassLoader(), getContextRoot(), getModuleName());
- File persistenceXml = new File(file,
"WEB-INF/classes/META-INF/persistence.xml");
- if (persistenceXml.exists() && persistenceXml.isFile()) {
+ URL persistenceUrl = null;
+ if (file.isDirectory()) {
+ File persistenceXml = new File(file,
"WEB-INF/classes/META-INF/persistence.xml");
+ if (persistenceXml.exists() && persistenceXml.isFile()) {
+ try {
+ persistenceUrl = persistenceXml.toURI().toURL();
+ } catch (MalformedURLException e) {
+ // no-op
+ }
+ }
+ } else { // .war
+ JarFile jf = null;
+ try {
+ jf = new JarFile(file);
+ } catch (IOException e) {
+ return appModule;
+ }
+ ZipEntry entry =
jf.getEntry("WEB-INF/classes/META-INF/persistence.xml");
+ if (entry != null) {
+ String base = baseUrl.toString();
+ if (!base.startsWith("jar:")) {
+ base = "jar:" + base;
+ }
+
+ try {
+ persistenceUrl = new URL(base +
"!/WEB-INF/classes/META-INF/persistence.xml");
+ } catch (MalformedURLException e) {
+ // no-op
+ }
+ }
+ }
+
+ if (persistenceUrl != null) {
List<URL> persistenceUrls = (List<URL>)
appModule.getAltDDs().get("persistence.xml");
if (persistenceUrls == null) {
persistenceUrls = new ArrayList<URL>();
appModule.getAltDDs().put("persistence.xml",
persistenceUrls);
}
try {
- persistenceUrls.add(persistenceXml.toURI().toURL());
+ persistenceUrls.add(persistenceUrl);
} catch (Exception e) {
+ // no-op
}
}
addPersistenceUnits(appModule, baseUrl);