[jboss-cvs] JBossAS SVN: r71213 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/annotation/web and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 24 18:16:56 EDT 2008


Author: anil.saldhana at jboss.com
Date: 2008-03-24 18:16:56 -0400 (Mon, 24 Mar 2008)
New Revision: 71213

Added:
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/AnnotationWeb_testAnnotationXML.xml
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/JBossWeb_testAnnotationXML.xml
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java
Log:
JBMETA-10: JBossWebMetaData merge should ignore web xml runas as it can be coming from the annotation. The final merge with annotations, xml, jbosswebmetadata is the complete metadata

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java	2008-03-24 21:17:47 UTC (rev 71212)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java	2008-03-24 22:16:56 UTC (rev 71213)
@@ -42,14 +42,12 @@
 import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
 import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
-import org.jboss.metadata.javaee.spec.ParamValueMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
 import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
 import org.jboss.metadata.javaee.spec.PersistenceContextReferencesMetaData;
 import org.jboss.metadata.javaee.spec.PersistenceUnitReferenceMetaData;
@@ -62,6 +60,8 @@
 import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
 import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
 import org.jboss.metadata.javaee.support.IdMetaDataImplWithDescriptionGroup;
 import org.jboss.metadata.web.spec.ErrorPageMetaData;
@@ -1062,7 +1062,9 @@
                // Update the run-as indentity to use the principal name
                if (webXmlRunAs == null)
                {
-                  throw new IllegalStateException("run-as-principal: " + principalName + " found in jboss-web.xml but there was no run-as in web.xml");
+                  //Needs to be merged from Annotations
+                  webXmlRunAs = "PLACEHOLDER_FOR_ANNOTATION";
+                  //throw new IllegalStateException("run-as-principal: " + principalName + " found in jboss-web.xml but there was no run-as in web.xml");
                }
                // See if there are any additional roles for this principal
                Set<String> extraRoles = securityRoles.getSecurityRoleNamesByPrincipal(principalName);

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java	2008-03-24 21:17:47 UTC (rev 71212)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java	2008-03-24 22:16:56 UTC (rev 71213)
@@ -46,20 +46,26 @@
 import org.jboss.metadata.javaee.spec.RunAsMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+import org.jboss.metadata.web.jboss.JBoss50DTDWebMetaData;
+import org.jboss.metadata.web.jboss.JBossServletMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.metadata.web.spec.AnnotationMergedView;
 import org.jboss.metadata.web.spec.ServletMetaData;
 import org.jboss.metadata.web.spec.Web25MetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
-import org.jboss.test.BaseTestCase;
 import org.jboss.test.metadata.annotation.ejb3.MyStatelessLocal;
+import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
 
 /**
  * This tests the annotation translation framework.
  *
  * @author Scott.Stark at jboss.org
+ * @author Anil.Saldhana at jboss.org
  * @version $Revision$
  */
-public class AnnotationWebUnitTestCase extends BaseTestCase
+public class AnnotationWebUnitTestCase extends AbstractJavaEEEverythingTest
 {
    /**
     * @param name
@@ -68,6 +74,14 @@
    {
       super(name);
    }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      DefaultSchemaResolver resolver = new DefaultSchemaResolver();
+      resolver.addClassBindingForLocation("web-app_2_5.xsd", Web25MetaData.class);
+      resolver.addClassBindingForLocation("jboss-web_5_0.dtd", JBoss50DTDWebMetaData.class);
+      return resolver;
+   }
 
    private void assertEnv(EnvironmentRefsGroupMetaData env)
    {
@@ -180,7 +194,8 @@
       assertNotNull(role2);
       assertEquals("Role2", role2.getRoleName());
    }
-   public void test1() throws Exception
+   
+   public void testAnnotationRead() throws Exception
    {
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       
@@ -218,4 +233,103 @@
       assertNotNull(role2);
       assertEquals("Role2", role2.getRoleName());
    }
+   
+   /**
+    * Annotation metadata merged into web spec meta data and then
+    * JBoss Meta Data is merged
+    * @throws Exception
+    */
+   public void testAnnotationXML() throws Exception
+   {
+      //Create the annotation web metadata
+      AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+      Class<?>[] webClasses = {
+            MyServlet.class
+      };
+      List<Class<?>> classes = Arrays.asList(webClasses);
+      System.out.println("Processing classes: "+classes);
+
+      enableTrace("org.jboss.metadata.annotation.creator");
+      Web25MetaDataCreator creator = new Web25MetaDataCreator(finder);
+      
+      Web25MetaData annotation = creator.create(classes);
+      
+      assertTrue(annotation.is25()); 
+      
+      //Now create the web meta data
+      WebMetaData xml = unmarshal(WebMetaData.class);
+      
+      WebMetaData merged = new WebMetaData();
+      //Merge the annotation and xml
+      AnnotationMergedView.merge(merged, xml, annotation);
+      
+      //Assert the run as role
+      ServletMetaData servletMetaData = merged.getServlets().get("MyServlet");
+      assertEquals("InternalUser", servletMetaData.getRunAs().getRoleName());
+      
+      //Create the JBossWebMetaData
+      JBossWebMetaData jbossWMD = unmarshal("JBossWeb_testAnnotationXML.xml", 
+                              JBossWebMetaData.class, null);
+      
+      //Let us merge the merged spec metadata with the jbossweb metadata
+      JBossWebMetaData mergedJBossWebMD = new JBossWebMetaData();
+      mergedJBossWebMD.merge(jbossWMD, merged);
+      
+      //Assert the run as role
+      JBossServletMetaData jbossServletMetaData = mergedJBossWebMD.getServlets().get("MyServlet");
+      assertEquals("InternalUser", jbossServletMetaData.getRunAs().getRoleName());
+      assertEquals("javajoe", jbossServletMetaData.getRunAsPrincipal()); 
+   }    
+   
+   /**
+    * Web Meta Data is merged into JBossWebMetaData. Finally
+    * AnnotationMetaData is merged with these to yield a final 
+    * metadata
+    * @throws Exception
+    */
+   public void testAnnotationXML2() throws Exception
+   {
+      //Create the annotation web metadata
+      AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+      Class<?>[] webClasses = {
+            MyServlet.class
+      };
+      List<Class<?>> classes = Arrays.asList(webClasses);
+      System.out.println("Processing classes: "+classes);
+
+      enableTrace("org.jboss.metadata.annotation.creator");
+      Web25MetaDataCreator creator = new Web25MetaDataCreator(finder);
+      
+      Web25MetaData annotation = creator.create(classes);
+      
+      assertTrue(annotation.is25()); 
+      
+      //Now create the web meta data
+      WebMetaData xml = unmarshal("AnnotationWeb_testAnnotationXML.xml",
+            WebMetaData.class);
+      
+      //Create the JBossWebMetaData
+      JBossWebMetaData jbossWMD = unmarshal("JBossWeb_testAnnotationXML.xml", 
+                              JBossWebMetaData.class);
+      
+      //Let us merge the merged spec metadata with the jbossweb metadata
+      JBossWebMetaData mergedJBossWebMD = new JBossWebMetaData();
+      mergedJBossWebMD.merge(jbossWMD, xml);
+      
+      
+      //Assert the run as role
+      assertTrue(mergedJBossWebMD.getRunAsIdentity("MyServlet").getRoleName().startsWith("PLACEHOLDER"));
+      
+      WebMetaData merged = new WebMetaData();
+      //Merge the annotation and xml
+      AnnotationMergedView.merge(merged, xml, annotation);
+     
+      JBossWebMetaData newMerged = new JBossWebMetaData();
+      newMerged.merge(mergedJBossWebMD, merged);
+      
+      //Assert the run as role
+      JBossServletMetaData jbossServletMetaData = newMerged.getServlets().get("MyServlet");
+      assertEquals("InternalUser", jbossServletMetaData.getRunAs().getRoleName());
+      assertEquals("javajoe", jbossServletMetaData.getRunAsPrincipal()); 
+   }    
 }

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/AnnotationWeb_testAnnotationXML.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/AnnotationWeb_testAnnotationXML.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/AnnotationWeb_testAnnotationXML.xml	2008-03-24 22:16:56 UTC (rev 71213)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+    <display-name>MyServlet</display-name>
+    <servlet>
+        <servlet-name>MyServlet</servlet-name>
+        <servlet-class>org.jboss.test.metadata.annotation.web.MyServlet</servlet-class>
+        <security-role-ref>
+            <role-name>ADM</role-name>
+            <role-link>Administrator</role-link>
+        </security-role-ref>
+        <security-role-ref>
+            <role-name>MGR</role-name>
+            <role-link>Manager</role-link>
+        </security-role-ref>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>MyServlet</servlet-name>
+        <url-pattern>/MyServletTest</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>54</session-timeout>
+    </session-config>
+    <security-constraint>
+        <web-resource-collection>
+            <web-resource-name>First</web-resource-name>
+            <url-pattern>/MyServletTest</url-pattern>
+            <http-method>GET</http-method>
+            <http-method>POST</http-method>
+        </web-resource-collection>
+        <auth-constraint>
+            <role-name>Administrator</role-name>
+        </auth-constraint>
+        <user-data-constraint>
+            <transport-guarantee>NONE</transport-guarantee>
+        </user-data-constraint>
+    </security-constraint>
+    <login-config>
+        <auth-method>BASIC</auth-method>
+        <realm-name>default</realm-name>
+    </login-config>
+    <security-role>
+        <role-name>Administrator</role-name>
+    </security-role>
+    <security-role>
+        <role-name>InternalUser</role-name>
+    </security-role>
+</web-app>
\ No newline at end of file

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/JBossWeb_testAnnotationXML.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/JBossWeb_testAnnotationXML.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/web/JBossWeb_testAnnotationXML.xml	2008-03-24 22:16:56 UTC (rev 71213)
@@ -0,0 +1,12 @@
+  <!DOCTYPE jboss-web PUBLIC
+    "-//JBoss//DTD Web Application 5.0//EN"
+    "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
+
+<jboss-web>
+  <security-domain>java:/jaas/test</security-domain>
+  <context-root>something</context-root>
+  <servlet>
+    <servlet-name>MyServlet</servlet-name>
+    <run-as-principal>javajoe</run-as-principal>
+  </servlet>
+</jboss-web>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list