You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ju...@apache.org on 2005/01/28 13:35:12 UTC

svn commit: r148882 - /geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java

Author: jules
Date: Fri Jan 28 04:35:11 2005
New Revision: 148882

URL: http://svn.apache.org/viewcvs?view=rev&rev=148882
Log:
improve code that adds jars to app classloader

Modified:
   geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java

Modified: geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java?view=diff&rev=148882&p1=geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java&r1=148881&p2=geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java&r2=148882
==============================================================================
--- geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java	(original)
+++ geronimo/trunk/modules/spring-builder/src/java/org/apache/geronimo/spring/deployment/SPRConfigBuilder.java	Fri Jan 28 04:35:11 2005
@@ -108,6 +108,33 @@
     return xbdr;
   }
 
+  // TODO - it would be nice if this printed out original names of
+  // jars, rather than name of file that has been copied out...
+  protected void
+    addJarToClassPath(DeploymentContext ctx, JarFile jar)
+    throws Exception
+  {
+    String name=jar.getName();
+    log.info("Adding Jar to application ClassLoader: "+name);
+    ctx.addIncludeAsPackedJar(new URI(name+".tmp"), jar); // without the .tmp this crashes horribly
+
+    // if NestedJarFile was transparent we could remove this test and
+    // recurse to the bottom of the innermost jar - but instead we end
+    // up hanging waiting for the first entry of the first nested jar
+    // - So we are stuck with just supporting one level of nesting for
+    // the moment - shame :-(
+    if (!(jar instanceof NestedJarFile))
+    {
+      for (Enumeration e=jar.entries(); e.hasMoreElements();)
+      {
+	ZipEntry entry = (ZipEntry) e.nextElement();
+	String ename=entry.getName();
+	if (ename.endsWith(".jar"))
+	  addJarToClassPath(ctx, new NestedJarFile(jar, ename));
+      }
+    }
+  }
+
   public List
     buildConfiguration(Object plan, JarFile sprFile, File outfile)
     throws IOException, DeploymentException
@@ -131,20 +158,13 @@
 				    kernel);
 
       // set up classpath
-      log.info("Adding jar to classpath: "+sprFile.getName());
-      ctx.addIncludeAsPackedJar(new URI(sprFile.getName()+"-root.jar"), sprFile);
+      addJarToClassPath(ctx, sprFile);
 
       for (Enumeration e=sprFile.entries(); e.hasMoreElements();)
       {
 	ZipEntry entry = (ZipEntry) e.nextElement();
 	String name=entry.getName();
 	ctx.addFile(URI.create(name), sprFile, entry);
-
-	if (name.endsWith(".jar"))
-	{
-	  log.info("Adding jar to classpath: "+sprFile.getName()+"/"+name);
-	  ctx.addIncludeAsPackedJar(new URI(sprFile.getName()+"-nested-"+name), new NestedJarFile(sprFile, name));
-	}
       }
 
       // now we can get ClassLoader...