You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2009/01/09 22:35:09 UTC

svn commit: r733157 - in /incubator/openwebbeans/trunk: distribution/ distribution/src/assembly/ webbeans-impl/src/test/java/org/apache/webbeans/test/mock/ webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ webbeans-impl/src/test/re...

Author: gerdogdu
Date: Fri Jan  9 13:35:09 2009
New Revision: 733157

URL: http://svn.apache.org/viewvc?rev=733157&view=rev
Log:
OWB-36 WebBeansScanner Test,via Mark Struberg

Added:
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockServletContext.java   (with props)
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ScannerTestBean.java   (with props)
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java   (with props)
    incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/
    incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/ejb-jar.xml   (with props)
    incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/web-beans.xml   (with props)
Modified:
    incubator/openwebbeans/trunk/distribution/pom.xml
    incubator/openwebbeans/trunk/distribution/src/assembly/dist.xml

Modified: incubator/openwebbeans/trunk/distribution/pom.xml
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/distribution/pom.xml?rev=733157&r1=733156&r2=733157&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/distribution/pom.xml (original)
+++ incubator/openwebbeans/trunk/distribution/pom.xml Fri Jan  9 13:35:09 2009
@@ -38,6 +38,7 @@
                 <artifactId>maven-assembly-plugin</artifactId>
                 <version>2.2-beta-2</version>
                 <configuration>
+                    <tarLongFileMode>gnu</tarLongFileMode>
                     <descriptors>
                         <descriptor>src/assembly/dist.xml</descriptor>
                     </descriptors>
@@ -68,33 +69,13 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>guess</artifactId>
-            <version>${project.version}</version>
-            <classifier>sources</classifier>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>webbeans-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
             <artifactId>webbeans-api</artifactId>
             <version>${project.version}</version>
-            <classifier>sources</classifier>
-        </dependency>
-        
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>webbeans-impl</artifactId>
-            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>webbeans-impl</artifactId>
             <version>${project.version}</version>
-            <classifier>sources</classifier>
         </dependency>
     </dependencies>
 

Modified: incubator/openwebbeans/trunk/distribution/src/assembly/dist.xml
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/distribution/src/assembly/dist.xml?rev=733157&r1=733156&r2=733157&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/distribution/src/assembly/dist.xml (original)
+++ incubator/openwebbeans/trunk/distribution/src/assembly/dist.xml Fri Jan  9 13:35:09 2009
@@ -85,15 +85,22 @@
             </includes>
         </dependencySet>
 
-        <dependencySet>
-            <outputDirectory>src</outputDirectory>
-            <includes>
-                <include>org.apache.openwebbeans:webbeans-api:jar:sources</include>
-                <include>org.apache.openwebbeans:webbeans-impl:jar:sources</include>
-                <include>org.apache.openwebbeans:guess:jar:sources</include>
-            </includes>
-        </dependencySet>
-
     </dependencySets>
 
+    <fileSets>
+        <fileSet>
+            <directory>..</directory>
+            <useDefaultExcludes>true</useDefaultExcludes>
+            <outputDirectory>src</outputDirectory>
+            <excludes>
+                <exclude>**/target/**</exclude>
+                <exclude>**/.classpath</exclude>
+                <exclude>**/.project</exclude>
+                <exclude>**/.settings/**</exclude>
+                <exclude>**/.git/**</exclude>
+                <exclude>**/.gitignore</exclude>
+            </excludes>
+        </fileSet>
+    </fileSets>
+
 </assembly>

Added: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockServletContext.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockServletContext.java?rev=733157&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockServletContext.java (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockServletContext.java Fri Jan  9 13:35:09 2009
@@ -0,0 +1,183 @@
+package org.apache.webbeans.test.mock;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+
+/**
+ * Implement the ServletContext interface for testing.
+ */
+public class MockServletContext implements ServletContext
+{
+
+    @SuppressWarnings("unchecked")
+    private Hashtable attributes = new Hashtable();
+
+    @Override
+    public Object getAttribute(String name)
+    {
+        return attributes.get(name);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Enumeration getAttributeNames()
+    {
+        return attributes.keys();
+    }
+
+    @Override
+    public ServletContext getContext(String uripath)
+    {
+        return this;
+    }
+
+    @Override
+    public String getContextPath()
+    {
+        return "mockContextpath";
+    }
+
+    @Override
+    public String getInitParameter(String name)
+    {
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Enumeration getInitParameterNames()
+    {
+        return new StringTokenizer(""); // 'standard' empty Enumeration
+    }
+
+    @Override
+    public int getMajorVersion()
+    {
+        return 2;
+    }
+
+    @Override
+    public String getMimeType(String file)
+    {
+        return null;
+    }
+
+    @Override
+    public int getMinorVersion()
+    {
+        return 0;
+    }
+
+    @Override
+    public RequestDispatcher getNamedDispatcher(String name)
+    {
+        return null;
+    }
+
+    @Override
+    public String getRealPath(String path)
+    {
+        return "mockRealPath";
+    }
+
+    @Override
+    public RequestDispatcher getRequestDispatcher(String path)
+    {
+        return null;
+    }
+
+    @Override
+    public URL getResource(String path) throws MalformedURLException
+    {
+        return null;
+    }
+
+    @Override
+    public InputStream getResourceAsStream(String path)
+    {
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Set getResourcePaths(String path)
+    {
+        return null;
+    }
+
+    @Override
+    public String getServerInfo()
+    {
+        return "mockServer";
+    }
+
+    @Override
+    public Servlet getServlet(String name) throws ServletException
+    {
+        return null;
+    }
+
+    @Override
+    public String getServletContextName()
+    {
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Enumeration getServletNames()
+    {
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Enumeration getServlets()
+    {
+        return null;
+    }
+
+    @Override
+    public void log(String msg)
+    {
+        // TODO
+    }
+
+    @Override
+    public void log(Exception exception, String msg)
+    {
+        // TODO
+
+    }
+
+    @Override
+    public void log(String message, Throwable throwable)
+    {
+        // TODO
+
+    }
+
+    @Override
+    public void removeAttribute(String name)
+    {
+        attributes.remove(name);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public void setAttribute(String name, Object object)
+    {
+        attributes.put(name, object);
+    }
+
+}

Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockServletContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ScannerTestBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ScannerTestBean.java?rev=733157&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ScannerTestBean.java (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ScannerTestBean.java Fri Jan  9 13:35:09 2009
@@ -0,0 +1,25 @@
+package org.apache.webbeans.test.unittests.config;
+
+import javax.webbeans.Named;
+import javax.webbeans.RequestScoped;
+
+/**
+ * Test WebBean for the {@link WebBeansScannerTest}
+ */
+@RequestScoped
+@Named
+public class ScannerTestBean
+{
+    private int myInt = 3;
+
+    public int getMyInt()
+    {
+        return myInt;
+    }
+
+    public void setMyInt(int myInt)
+    {
+        this.myInt = myInt;
+    }
+
+}

Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/ScannerTestBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java?rev=733157&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java Fri Jan  9 13:35:09 2009
@@ -0,0 +1,126 @@
+package org.apache.webbeans.test.unittests.config;
+
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.ServletContext;
+import javax.webbeans.Named;
+import javax.webbeans.RequestScoped;
+
+import junit.framework.Assert;
+
+import org.apache.webbeans.config.WebBeansScanner;
+import org.apache.webbeans.test.mock.MockServletContext;
+import org.apache.webbeans.test.servlet.TestContext;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test the {@link WebBeansScanner}.
+ */
+public class WebBeansScannerTest extends TestContext
+{
+
+    public WebBeansScannerTest()
+    {
+        super(WebBeansScannerTest.class.getName());
+    }
+
+    @Before
+    public void init()
+    {
+        super.init();
+    }
+
+    @Test
+    public void testWebBeansScanner() throws Exception
+    {
+        WebBeansScanner scanner = new WebBeansScanner();
+
+        ServletContext servletContext = new MockServletContext();
+        scanner.scan(servletContext);
+        
+        // try to re-run the scan
+        scanner.scan(servletContext);
+
+        Map<String, Set<String>> classMap = scanner.getANNOTATION_DB().getClassIndex();
+        Assert.assertNotNull(classMap);
+        Assert.assertFalse(classMap.isEmpty());
+        Set<String> testBeanAnnotations = classMap.get(ScannerTestBean.class.getName());
+
+        String[] expectedAnnotations = new String[] { RequestScoped.class.getName(), Named.class.getName() };
+
+        Assert.assertTrue(equalsIgnorePosition(testBeanAnnotations.toArray(), expectedAnnotations));
+    }
+
+    /**
+     * TODO please review this function and move to some place where all tests
+     * can use it! See also
+     * EJBInterceptComponentTest#testMultipleInterceptedComponent and other test
+     * functions
+     * 
+     * Compare two arrays regardless of the position of the elements in the
+     * arrays. 
+     * The complex handling with temporary flags is necessary due to the
+     * possibility of having multiple occurrences of the same element in the
+     * arrays. In this case both arrays have to contain the exactly same amount
+     * of those elements.
+     * 
+     * This is only suited for smaller arrays (e.g. count < 100) since the
+     * algorithm uses a product of both arrays.
+     * 
+     * If one likes to use this for larger arrays, we'd have to use hashes.
+     * 
+     * @param arr1
+     * @param arr2
+     * @return
+     */
+    public static boolean equalsIgnorePosition(Object[] arr1, Object[] arr2)
+    {
+        if (arr1 == null && arr2 == null)
+        {
+            return true;
+        }
+
+        if (arr1 == null || arr2 == null)
+        {
+            return false;
+        }
+
+        if (arr1.length != arr2.length)
+        {
+            return false;
+        }
+
+        boolean[] found1 = new boolean[arr1.length];
+        boolean[] found2 = new boolean[arr2.length];
+
+        for (int i1 = 0; i1 < arr1.length; i1++)
+        {
+            Object o1 = arr1[i1];
+
+            for (int i2 = 0; i2 < arr2.length; i2++)
+            {
+                Object o2 = arr2[i2];
+
+                // if they are equal and not found already
+                if (o1.equals(o2) && found2[i2] == false)
+                {
+                    // mark the entries in both arrays as found
+                    found1[i1] = true;
+                    found2[i2] = true;
+                    break;
+                }
+            }
+        }
+
+        for (int i = 0; i < found1.length; i++)
+        {
+            if (!found1[i] || !found2[i])
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+}

Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/ejb-jar.xml?rev=733157&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/ejb-jar.xml (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/ejb-jar.xml Fri Jan  9 13:35:09 2009
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE ejb-jar PUBLIC 
+   '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 
+   'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>
+
+<!-- 
+    This file is only needed to trigger the WebBeansScanner.
+    It does NOT contain a valid EJB configuration yet!
+    See the WebBeansScannerTest for further information.  
+-->
+
+<ejb-jar>
+   <enterprise-beans>
+
+      <!-- A minimal session EJB deployment -->
+      <session>
+         <ejb-name>testEJB</ejb-name>
+         <home>webbeans.testHome</home>
+         <remote>webbeans.test</remote>
+         <ejb-class>webbeans.TestBean</ejb-class>
+         <!-- or Stateless -->
+         <session-type>Stateful</session-type>
+         <transaction-type>Container</transaction-type>
+      </session>
+      
+      <!-- A minimal BMP entity EJB deployment -->
+      <entity>
+         <ejb-name>TestBMP</ejb-name>
+         <home>webbeans.TestBMPHome</home>
+         <remote>webbeans.TestBMP</remote>
+         <ejb-class>webbeans.TestBMPBean</ejb-class>
+         <persistence-type>Bean</persistence-type>
+         <prim-key-class>webbeans.TestBMPPK</prim-key-class>
+         <reentrant>False</reentrant>
+      </entity>
+
+   </enterprise-beans>
+</ejb-jar>

Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/ejb-jar.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/web-beans.xml
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/web-beans.xml?rev=733157&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/web-beans.xml (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/web-beans.xml Fri Jan  9 13:35:09 2009
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<WebBeans 	xmlns="urn:java:javax.webbeans"
+ 			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+			xsi:schemaLocation="urn:java:javax.webbeans http://java.sun.com/jee/web-beans-1.0.xsd">
+<!-- 
+    This file is only needed to trigger the WebBeansScanner.
+    It does NOT contain a valid WebBeans configuration yet!
+    See the WebBeansScannerTest for further information.  
+-->
+	<Deploy>
+		<Standard/>
+		<Production/>
+	</Deploy>
+	
+</WebBeans>
\ No newline at end of file

Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/test/resources/META-INF/web-beans.xml
------------------------------------------------------------------------------
    svn:eol-style = native