You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2005/03/24 19:13:23 UTC

svn commit: r158930 - cocoon/trunk/src/java/org/apache/cocoon/components/classloader/DefaultClassLoaderFactory.java

Author: sylvain
Date: Thu Mar 24 10:13:22 2005
New Revision: 158930

URL: http://svn.apache.org/viewcvs?view=rev&rev=158930
Log:
stronger checks that classpath is a directory

Modified:
    cocoon/trunk/src/java/org/apache/cocoon/components/classloader/DefaultClassLoaderFactory.java

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/classloader/DefaultClassLoaderFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/classloader/DefaultClassLoaderFactory.java?view=diff&r1=158929&r2=158930
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/classloader/DefaultClassLoaderFactory.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/classloader/DefaultClassLoaderFactory.java Thu Mar 24 10:13:22 2005
@@ -61,6 +61,14 @@
         this.resolver = (SourceResolver)manager.lookup(SourceResolver.ROLE);
     }
     
+    private void ensureIsDirectory(Source src, String location) throws ConfigurationException {
+        if (!src.exists()) {
+            throw new ConfigurationException(src.getURI() + " doesn't exist, at " + location);
+        } else if (!(src instanceof TraversableSource) || !((TraversableSource)src).isCollection()) {
+            throw new ConfigurationException(src.getURI() + " is not a directory, at " + location);
+        }
+    }
+    
     private URL[] parseConfiguration(Configuration config) throws ConfigurationException {
         List urlList = new ArrayList();
         Configuration[] children = config.getChildren();
@@ -72,22 +80,20 @@
                 src = resolver.resolveURI(child.getAttribute("src"));
                 // A class dir: simply add its URL
                 if ("class-dir".equals(name)) {
+                    ensureIsDirectory(src, child.getLocation());
                     urlList.add(new URL(src.getURI()));
                 
                 // A lib dir: scan for all jar and zip it contains
                 } else if ("lib-dir".equals(name)) {
-                    if (src instanceof TraversableSource) {
-                        Iterator iter = ((TraversableSource)src).getChildren().iterator();
-                        while (iter.hasNext()) {
-                            Source childSrc = (Source)iter.next();
-                            String childURI = childSrc.getURI();
-                            resolver.release(childSrc);
-                            if (childURI.endsWith(".jar") || childURI.endsWith(".zip")) {
-                                urlList.add(new URL(childURI));
-                            }
+                    ensureIsDirectory(src, child.getLocation());
+                    Iterator iter = ((TraversableSource)src).getChildren().iterator();
+                    while (iter.hasNext()) {
+                        Source childSrc = (Source)iter.next();
+                        String childURI = childSrc.getURI();
+                        resolver.release(childSrc);
+                        if (childURI.endsWith(".jar") || childURI.endsWith(".zip")) {
+                            urlList.add(new URL(childURI));
                         }
-                    } else {
-                        throw new ConfigurationException(src.getURI() + " is not a directory, at " + child.getLocation());
                     }
                 } else {
                     throw new ConfigurationException("Unexpected element " + name + " at " + child.getLocation());