You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2006/04/03 19:42:05 UTC

svn commit: r391092 - /geronimo/branches/1.1/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/Module.java

Author: dain
Date: Mon Apr  3 10:42:03 2006
New Revision: 391092

URL: http://svn.apache.org/viewcvs?rev=391092&view=rev
Log:
Fixed bug where directory for generated geronimo classes was being created in the root of the file system at /META-INF

Modified:
    geronimo/branches/1.1/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/Module.java

Modified: geronimo/branches/1.1/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/Module.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/Module.java?rev=391092&r1=391091&r2=391092&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/Module.java (original)
+++ geronimo/branches/1.1/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/Module.java Mon Apr  3 10:42:03 2006
@@ -27,7 +27,6 @@
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.deployment.util.DeploymentUtil;
 import org.apache.geronimo.deployment.DeploymentContext;
-import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.gbean.AbstractName;
 
 /**
@@ -151,19 +150,46 @@
         addClass(location, fqcn, bytes, context);
     }
 
-    private URI getUniqueModuleLocation(DeploymentContext context) {
+    private URI getUniqueModuleLocation(DeploymentContext context) throws IOException {
         if (uniqueModuleLocation == null) {
+            URI metainfUri = URI.create("META-INF/");
+            File metainfDir = context.getTargetFile(metainfUri);
+            if (!metainfDir.exists()) {
+                metainfDir.mkdirs();
+            }
+            if (!metainfDir.isDirectory()) {
+                throw new IOException("META-INF directory exists but is not a directory: " + metainfDir.getAbsolutePath());
+            }
+            if (!metainfDir.canRead()) {
+                throw new IOException("META-INF directory is not readable: " + metainfDir.getAbsolutePath());
+            }
+            if (!metainfDir.canWrite()) {
+                throw new IOException("META-INF directory is not wirtable: " + metainfDir.getAbsolutePath());
+            }
+
             String suffix = "";
-            URI candidateURI;
-            File candidateFile;
-            int i = 1;
+            URI generatedUri;
+            File generatedDir;
+            int i = 0;
             do {
-                candidateURI = URI.create("/META-INF/geronimo-generated" + suffix + "/");
-                candidateFile = context.getTargetFile(candidateURI);
+                generatedUri = metainfUri.resolve("geronimo-generated" + suffix + "/");
+                generatedDir = context.getTargetFile(generatedUri);
                 suffix = "" + i++;
-            } while (candidateFile.exists());
-            candidateFile.mkdirs();
-            uniqueModuleLocation = candidateURI;
+            } while (generatedDir.exists());
+            generatedDir.mkdirs();
+
+            // these shouldn't ever happen, but let's check anyway
+            if (!generatedDir.isDirectory()) {
+                throw new IOException("Geronimo generated classes directory exists but is not a directory: " + generatedDir.getAbsolutePath());
+            }
+            if (!generatedDir.canRead()) {
+                throw new IOException("Geronimo generated classes directory is not readable: " + generatedDir.getAbsolutePath());
+            }
+            if (!generatedDir.canWrite()) {
+                throw new IOException("Geronimo generated classes directory is not wirtable: " + generatedDir.getAbsolutePath());
+            }
+
+            uniqueModuleLocation = generatedUri;
         }
         return uniqueModuleLocation;
     }