[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