You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ke...@apache.org on 2007/04/16 20:13:47 UTC

svn commit: r529346 - /geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java

Author: kevan
Date: Mon Apr 16 11:13:47 2007
New Revision: 529346

URL: http://svn.apache.org/viewvc?view=rev&rev=529346
Log:
GERONIMO-3017 Apply patch from Jay McHugh. Allows persistence.xml file to be specified in a war file. Thanks Jay.

Modified:
    geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java

Modified: geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java?view=diff&rev=529346&r1=529345&r2=529346
==============================================================================
--- geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java Mon Apr 16 11:13:47 2007
@@ -95,16 +95,25 @@
                     continue;
                 }
                 int endPos = persistenceLocation.lastIndexOf("!/");
-                String relative = persistenceLocation.substring(pos + base.length(), endPos);
-                PersistenceDocument persistenceDocument;
-                try {
-                    XmlObject xmlObject = XmlBeansUtil.parse(persistenceUrl, moduleContext.getClassLoader());
-                    persistenceDocument = (PersistenceDocument)xmlObject.changeType(PersistenceDocument.type);
-                } catch (XmlException e) {
-                    throw new DeploymentException("Could not parse persistence.xml file: " + persistenceUrl, e);
+                if (endPos < 0) {
+                    // if unable to find the '!/' marker, try to see if this is
+                    // a war file with the persistence.xml directly embeded - no ejb-jar
+                    endPos = persistenceLocation.lastIndexOf("WEB-INF");
+                }
+                if (endPos >= 0) {
+                    String relative = persistenceLocation.substring(pos + base.length(), endPos);
+                    PersistenceDocument persistenceDocument;
+                    try {
+                        XmlObject xmlObject = XmlBeansUtil.parse(persistenceUrl, moduleContext.getClassLoader());
+                        persistenceDocument = (PersistenceDocument)xmlObject.changeType(PersistenceDocument.type);
+                    } catch (XmlException e) {
+                        throw new DeploymentException("Could not parse persistence.xml file: " + persistenceUrl, e);
+                    }
+                    PersistenceDocument.Persistence persistence = persistenceDocument.getPersistence();
+                    buildPersistenceUnits(persistence, moduleContext, NameFactory.PERSISTENCE_UNIT_MODULE, relative);
+                } else {
+                    throw new DeploymentException("Could not find persistence.xml file: " + persistenceUrl);
                 }
-                PersistenceDocument.Persistence persistence = persistenceDocument.getPersistence();
-                buildPersistenceUnits(persistence, moduleContext, NameFactory.PERSISTENCE_UNIT_MODULE, relative);
             }
         } catch (IOException e) {
             throw new DeploymentException("Could not look for META-INF/persistence.xml files", e);