[webbeans-commits] Webbeans SVN: r1431 - in tck/trunk/impl: src/main/java/org/jboss/webbeans/tck/impl/packaging and 4 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Fri Feb 6 12:39:44 EST 2009


Author: pete.muir at jboss.org
Date: 2009-02-06 12:39:44 -0500 (Fri, 06 Feb 2009)
New Revision: 1431

Modified:
   tck/trunk/impl/pom.xml
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java
   tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java
   tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
Log:
Add support for artifacts which contain libraries

Modified: tck/trunk/impl/pom.xml
===================================================================
--- tck/trunk/impl/pom.xml	2009-02-06 17:02:22 UTC (rev 1430)
+++ tck/trunk/impl/pom.xml	2009-02-06 17:39:44 UTC (rev 1431)
@@ -109,6 +109,35 @@
                </execution>
             </executions>
          </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+               <execution>
+                  <id>copy-in-container-dependencies</id>
+                  <phase>compile</phase>
+                  <goals>
+                     <goal>copy</goal>
+                  </goals>
+                  <configuration>
+                     <outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
+                     <stripVersion>true</stripVersion>
+                     <artifactItems>
+                        <artifactItem>
+                           <groupId>org.jboss.webbeans.tck</groupId>
+                           <artifactId>webbeans-tck-api</artifactId>
+                           <overWrite>true</overWrite>
+                        </artifactItem>
+                        <artifactItem>
+                           <groupId>org.testng</groupId>
+                           <artifactId>testng</artifactId>
+                           <classifier>jdk15</classifier>
+                        </artifactItem>
+                     </artifactItems>
+                  </configuration>
+               </execution>
+            </executions>
+         </plugin>
       </plugins>
    </build>
    

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java	2009-02-06 17:02:22 UTC (rev 1430)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java	2009-02-06 17:39:44 UTC (rev 1431)
@@ -3,6 +3,7 @@
 import static org.jboss.webbeans.tck.impl.util.Reflections.loadClass;
 import static org.jboss.webbeans.tck.impl.util.Reflections.loadResourceAsStream;
 import static org.jboss.webbeans.tck.impl.util.Reflections.loadResources;
+import static org.jboss.webbeans.tck.impl.util.Strings.isEmpty;
 
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayInputStream;
@@ -16,6 +17,7 @@
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.net.URLDecoder;
+import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Random;
@@ -233,14 +235,12 @@
       }
       for (ResourceDescriptor resourceDescriptor : getResources())
       {
-         String directoryName = resourceDescriptor.getName().substring(0, resourceDescriptor.getName().lastIndexOf("/"));
-         String fileName = resourceDescriptor.getName().substring(resourceDescriptor.getName().lastIndexOf("/") + 1);
-         File directory = makeDirectoryStructure(root, directoryName);
-         File file = new File(directory, fileName);
-         file.createNewFile();
-         file.deleteOnExit();
-         copy(resourceDescriptor.getSource().openStream(), file);
+         copyResource(resourceDescriptor, root);
       }
+      for (ResourceDescriptor resourceDescriptor : getLibraries())
+      {
+         copyResource(resourceDescriptor, getLibraryRoot(root));
+      }
       this.explodedJar = root;
    }
    
@@ -249,6 +249,31 @@
       copyClass(clazz.getName(), root);
    }
    
+   private static void copyResource(ResourceDescriptor resourceDescriptor, File root) throws IOException
+   {
+      String directoryName;
+      String fileName;
+      if (resourceDescriptor.getName().lastIndexOf("/") > 0)
+      {
+         directoryName = resourceDescriptor.getName().substring(0, resourceDescriptor.getName().lastIndexOf("/"));
+         fileName = resourceDescriptor.getName().substring(resourceDescriptor.getName().lastIndexOf("/") + 1);
+      }
+      else
+      {
+         directoryName = "";
+         fileName = resourceDescriptor.getName();
+      }
+      if (isEmpty(fileName))
+      {
+         throw new IllegalArgumentException("Unable to determine source file name of " + resourceDescriptor);
+      }
+      File directory = makeDirectoryStructure(root, directoryName);
+      File file = new File(directory, fileName);
+      file.createNewFile();
+      file.deleteOnExit();
+      copy(resourceDescriptor.getSource().openStream(), file);
+   }
+   
    private static void copyClass(String className, File root) throws IOException
    {
       String classFilePathName = getClassFileName(className);
@@ -345,4 +370,19 @@
       return ".jar";
    }
    
+   public Set<ResourceDescriptor> getLibraries()
+   {
+      return Collections.emptySet();
+   }
+   
+   public File getLibraryRoot(File archiveRoot)
+   {
+      return archiveRoot;
+   }
+   
+   public boolean isLibrariesSupported()
+   {
+      return false;
+   }
+   
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java	2009-02-06 17:02:22 UTC (rev 1430)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java	2009-02-06 17:39:44 UTC (rev 1431)
@@ -1,6 +1,10 @@
 package org.jboss.webbeans.tck.impl.packaging.jsr299;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.jboss.webbeans.tck.AbstractTest;
+import org.jboss.webbeans.tck.impl.packaging.ResourceDescriptor;
 import org.jboss.webbeans.tck.impl.util.Reflections;
 import org.jboss.webbeans.tck.literals.NewLiteral;
 import org.jboss.webbeans.tck.runner.TestRunner;
@@ -40,4 +44,13 @@
       this.unit = unit;
    }
    
+   @Override
+   public Set<ResourceDescriptor> getLibraries()
+   {
+      Set<ResourceDescriptor> libraries = new HashSet<ResourceDescriptor>(super.getLibraries());
+      libraries.add(new ResourceDescriptor("testng.jar", "/lib/testng-jdk15.jar"));
+      libraries.add(new ResourceDescriptor("jsr-299-tck-api.jar", "/lib/webbeans-tck-api.jar"));
+      return libraries;
+   }
+   
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java	2009-02-06 17:02:22 UTC (rev 1430)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java	2009-02-06 17:39:44 UTC (rev 1431)
@@ -15,6 +15,7 @@
    public static final String CUSTOM_WEB_XML_FILE_NAME = "org/jboss/webbeans/tck/impl/packaging/war/default/custom-web.xml";
    
    private File webInfClasses;
+   private File webInfLib;
    
    public WarArtifactDescriptor(Class<?> declaringClass, String beansXmlSourceFileName)
    {
@@ -49,4 +50,21 @@
    {
       return ".war";
    }
+   
+   @Override
+   public boolean isLibrariesSupported()
+   {
+      return true;
+   }
+   
+   @Override
+   public File getLibraryRoot(File archiveRoot)
+   {
+      if (webInfLib == null)
+      {
+         webInfLib = new File(archiveRoot, "WEB-INF/lib");
+         webInfLib.mkdirs();
+      }
+      return webInfLib;
+   }
 }

Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java	2009-02-06 17:02:22 UTC (rev 1430)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java	2009-02-06 17:39:44 UTC (rev 1431)
@@ -20,7 +20,7 @@
       File webInf = root.listFiles(WEB_INF_FILTER)[0];
       assert webInf.getName().equals("WEB-INF");
       assert webInf.isDirectory();
-      assert webInf.listFiles().length == 2;
+      assert webInf.listFiles().length == 3;
       assert webInf.listFiles(WEB_XML_FILTER).length == 1;
       File webXml = webInf.listFiles(WEB_XML_FILTER)[0];
       assert webXml.isFile();

Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java	2009-02-06 17:02:22 UTC (rev 1430)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java	2009-02-06 17:39:44 UTC (rev 1431)
@@ -3,10 +3,12 @@
 import java.io.File;
 import java.io.FilenameFilter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
+import org.jboss.webbeans.tck.AbstractTest;
 import org.jboss.webbeans.tck.impl.packaging.war.WarArtifactDescriptor;
 import org.jboss.webbeans.tck.impl.test.packaging.AbstractArtifactTest;
 import org.testng.annotations.Test;
@@ -34,7 +36,7 @@
       File webInf = root.listFiles(WEB_INF_FILTER)[0];
       assert webInf.getName().equals("WEB-INF");
       assert webInf.isDirectory();
-      assert webInf.listFiles().length == 2;
+      assert webInf.listFiles().length == 3;
       assert webInf.listFiles(WEB_XML_FILTER).length == 1;
       File webXml = webInf.listFiles(WEB_XML_FILTER)[0];
       assert webXml.isFile();
@@ -53,6 +55,25 @@
       assert cowClasses.length == 1;
       assert cowClasses[0].getName().equals("Cow.class");
       assert cowClasses[0].isFile();
+      File tckPackage = getPackageAsFile(AbstractTest.class.getPackage(), root);
+      File[] abstractTestClasses = tckPackage.listFiles(new FilenameFilter()
+      {
+         
+         public boolean accept(File dir, String name)
+         {
+            return name.equals("AbstractTest.class");
+         }
+         
+      });
+      assert abstractTestClasses.length == 1;
+      assert abstractTestClasses[0].getName().equals("AbstractTest.class");
+      assert abstractTestClasses[0].isFile();
+      File webInfLib = new File(webInf, "lib");
+      assert webInfLib.isDirectory();
+      assert webInfLib.list().length == 2;
+      List<String> libs = Arrays.asList(webInfLib.list());
+      assert libs.contains("jsr-299-tck-api.jar");
+      assert libs.contains("testng.jar");
    }
    
    




More information about the weld-commits mailing list