[jboss-cvs] JBossAS SVN: r73733 - in projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets: test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 28 07:32:28 EDT 2008


Author: alesj
Date: 2008-05-28 07:32:28 -0400 (Wed, 28 May 2008)
New Revision: 73733

Modified:
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/support/Classpath.java
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java
Log:
Facelets Classpath hack, to understand VFS. :-)

Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/support/Classpath.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/support/Classpath.java	2008-05-28 10:59:36 UTC (rev 73732)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/support/Classpath.java	2008-05-28 11:32:28 UTC (rev 73733)
@@ -23,6 +23,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.JarURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
@@ -32,6 +33,8 @@
 import java.util.Set;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 /**
  * Mock of Facelets's Classpath class.
@@ -73,21 +76,23 @@
             }
             else
             {
-               searchDir(all, new File(URLDecoder.decode(url.getFile(), "UTF-8")), suffix);
+               boolean searchDone = searchDir(all, new File(URLDecoder.decode(url.getFile(), "UTF-8")), suffix);
+               if (searchDone == false)
+               {
+                  searchFromURL(all, prefix, suffix, url);
+               }
             }
          }
       }
       return (URL[])all.toArray(new URL[all.size()]);
    }
 
-   private static void searchDir(Set result, File file, String suffix)
-         throws IOException
+   private static boolean searchDir(Set result, File file, String suffix) throws IOException
    {
       if (file.exists() && file.isDirectory())
       {
          File[] fc = file.listFiles();
          String path;
-         URL src;
          for (int i = 0; i < fc.length; i++)
          {
             path = fc[i].getAbsolutePath();
@@ -101,9 +106,73 @@
                result.add(fc[i].toURL());
             }
          }
+         return true;
       }
+      return false;
    }
 
+   private static void searchFromURL(Set result, String prefix, String suffix, URL url) throws IOException
+   {
+      boolean done = false;
+      InputStream is = getInputStream(url);
+      if (is != null)
+      {
+         try
+         {
+            ZipInputStream zis;
+            if (is instanceof ZipInputStream)
+               zis = (ZipInputStream)is;
+            else
+               zis = new ZipInputStream(is);   
+            ZipEntry entry = zis.getNextEntry();
+            String urlString = url.toExternalForm();
+            while (entry != null)
+            {
+               String entryName = entry.getName();
+               if (entryName.endsWith(suffix))
+               {
+                  result.add(new URL(urlString + entryName));
+               }
+               entry = zis.getNextEntry();
+            }
+            done = true;
+         }
+         catch (Exception ignore)
+         {
+         }
+      }
+      if (done == false && prefix.length() > 0)
+      {
+         String urlString = url.toExternalForm();
+         String[] split = prefix.split("/");
+         prefix = join(split, false);
+         String end = join(split, true);
+         int p = urlString.lastIndexOf(end);
+         url = new URL(urlString.substring(0, p));
+         searchFromURL(result, prefix, suffix, url);
+      }
+   }
+
+   private static String join(String[] split, boolean full)
+   {
+      String join = "";
+      for (int i =0; i < split.length - (full ? 0 : 1); i++)
+         join += split[i];
+      return join;
+   }
+
+   private static InputStream getInputStream(URL url)
+   {
+      try
+      {
+         return url.openStream();
+      }
+      catch (Throwable t)
+      {
+         return null;
+      }
+   }
+
    /**
     * For URLs to JARs that do not use JarURLConnection - allowed by
     * the servlet spec - attempt to produce a JarFile object all the same.

Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java	2008-05-28 10:59:36 UTC (rev 73732)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/facelets/test/FaceletsUnitTestCase.java	2008-05-28 11:32:28 UTC (rev 73733)
@@ -114,7 +114,7 @@
 
    public void testPackedFacelets() throws Throwable
    {
-//      testFacelets("packed");
+      testFacelets("packed");
    }
 
    public void testUnpackedFacelets() throws Throwable




More information about the jboss-cvs-commits mailing list