[jboss-cvs] JBossAS SVN: r67218 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/ejb and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Nov 17 02:53:29 EST 2007


Author: scott.stark at jboss.org
Date: 2007-11-17 02:53:29 -0500 (Sat, 17 Nov 2007)
New Revision: 67218

Added:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RunAsProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/RunAsProcessor.java
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/WebComponentProcessor.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java
   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/MyServlet.java
Log:
Add RunAs, DeclareRoles processors

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractResourceProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -263,7 +263,7 @@
       ref.setResAuth(resAuthType);
       if(annotation.mappedName().length() > 0)
          ref.setMappedName(annotation.mappedName());
-      Descriptions descriptions = getDescription(annotation.description());
+      Descriptions descriptions = ProcessorUtils.getDescription(annotation.description());
       if(descriptions != null)
       {
          ref.setDescriptions(descriptions);
@@ -287,7 +287,7 @@
       if(name.length() == 0)
          name = getName(element);
       entry.setEnvEntryName(name);
-      Descriptions descriptions = getDescription(annotation.description());
+      Descriptions descriptions = ProcessorUtils.getDescription(annotation.description());
       if(descriptions != null)
          entry.setDescriptions(descriptions);
       if(annotation.type() != Object.class)
@@ -313,7 +313,7 @@
       if(annotation.mappedName().length() > 0)
          ref.setMappedName(annotation.mappedName());
       ref.setAnnotatedElement(element);
-      DescriptionGroupMetaData dg = getDescriptionGroup(annotation.description());
+      DescriptionGroupMetaData dg = ProcessorUtils.getDescriptionGroup(annotation.description());
       if(dg != null)
          ref.setDescriptionGroup(dg);
       if(annotation.type() != Object.class)
@@ -340,7 +340,7 @@
          ref.setType(annotation.type().getName());
       else
          ref.setType(getType(element));
-      Descriptions descriptions = getDescription(annotation.description());
+      Descriptions descriptions = ProcessorUtils.getDescription(annotation.description());
       if(descriptions != null)
          ref.setDescriptions(descriptions);
       Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils.getInjectionTargets(name, element);
@@ -363,7 +363,7 @@
          ref.setType(annotation.type().getName());
       else
          ref.setType(getType(element));
-      Descriptions descriptions = getDescription(annotation.description());
+      Descriptions descriptions = ProcessorUtils.getDescription(annotation.description());
       if(descriptions != null)
          ref.setDescriptions(descriptions);
       Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils.getInjectionTargets(name, element);
@@ -373,27 +373,4 @@
       return ref;
    }
 
-   protected Descriptions getDescription(String description)
-   {
-      DescriptionsImpl descriptions = null;
-      if(description.length() > 0)
-      {
-         DescriptionImpl di = new DescriptionImpl();
-         di.setDescription(description);
-         descriptions = new DescriptionsImpl();
-         descriptions.add(di);
-      }
-      return descriptions;
-   }
-   protected DescriptionGroupMetaData getDescriptionGroup(String description)
-   {
-      DescriptionGroupMetaData dg = null;
-      if(description.length() > 0)
-      {
-         dg = new DescriptionGroupMetaData();
-         Descriptions descriptions = getDescription(description);
-         dg.setDescriptions(descriptions);
-      }
-      return dg;      
-   }
 }

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.annotation.security.RunAs;
+
+import org.jboss.annotation.javaee.Descriptions;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
+
+/**
+ * @RunAs processor
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class AbstractRunAsProcessor
+   extends AbstractFinderUser
+   implements Creator<Class, RunAsMetaData>
+{
+   public AbstractRunAsProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public RunAsMetaData create(Class element)
+   {
+      RunAs runAs = finder.getAnnotation(element, RunAs.class);
+      if(runAs == null)
+         return null;
+
+      RunAsMetaData metaData = new RunAsMetaData();
+      metaData.setRoleName(runAs.value());
+      Descriptions descriptions = ProcessorUtils.getDescription("RunAs("+runAs.value()+") on class: "+element.getName());
+      metaData.setDescriptions(descriptions);
+      return metaData;
+   }
+
+}


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractRunAsProcessor.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.annotation.security.DeclareRoles;
+
+import org.jboss.annotation.javaee.Descriptions;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+
+/**
+ * @DeclareRoles processor
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class DeclareRolesProcessor
+   extends AbstractFinderUser
+   implements Processor<SecurityRolesMetaData, Class>
+{
+   public DeclareRolesProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(SecurityRolesMetaData metaData, Class element)
+   {
+      DeclareRoles roles = finder.getAnnotation(element, DeclareRoles.class);
+      if(roles == null)
+         return;
+
+      for(String role : roles.value())
+      {
+         SecurityRoleMetaData sr = new SecurityRoleMetaData();
+         sr.setRoleName(role);
+         Descriptions descriptions = ProcessorUtils.getDescription("DeclareRoles("+roles.value()+") on class: "+element.getName());
+         sr.setDescriptions(descriptions);
+         metaData.add(sr);
+      }
+   }
+
+}


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/DeclareRolesProcessor.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ProcessorUtils.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -27,6 +27,10 @@
 import java.util.Collections;
 import java.util.Set;
 
+import org.jboss.annotation.javaee.Descriptions;
+import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
+import org.jboss.metadata.javaee.spec.DescriptionImpl;
+import org.jboss.metadata.javaee.spec.DescriptionsImpl;
 import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
 
 /**
@@ -85,4 +89,29 @@
       }
       return c;
    }
+
+   public static Descriptions getDescription(String description)
+   {
+      DescriptionsImpl descriptions = null;
+      if(description.length() > 0)
+      {
+         DescriptionImpl di = new DescriptionImpl();
+         di.setDescription(description);
+         descriptions = new DescriptionsImpl();
+         descriptions.add(di);
+      }
+      return descriptions;
+   }
+   public static DescriptionGroupMetaData getDescriptionGroup(String description)
+   {
+      DescriptionGroupMetaData dg = null;
+      if(description.length() > 0)
+      {
+         dg = new DescriptionGroupMetaData();
+         Descriptions descriptions = getDescription(description);
+         dg.setDescriptions(descriptions);
+      }
+      return dg;      
+   }
+
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -24,12 +24,15 @@
 import java.lang.reflect.AnnotatedElement;
 
 import org.jboss.metadata.annotation.creator.AbstractComponentProcessor;
+import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
 import org.jboss.metadata.annotation.creator.Processor;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.AssemblyDescriptorMetaData;
 import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
 import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
 
 /**
  * Comment
@@ -46,8 +49,13 @@
    protected AbstractEnterpriseBeanProcessor(AnnotationFinder<AnnotatedElement> finder)
    {
       super(finder);
+      // @TransactionAttribute
       addTypeProcessor(new TransactionAttributeClassProcessor<MD>(finder));
       addMethodProcessor(new TransactionAttributeMethodProcessor<MD>(finder));
+      // @RunAs
+      addTypeProcessor(new RunAsProcessor(finder));
+      // @DeclareRoles
+      addTypeProcessor(new DeclareRolesProcessor(finder));
    }
 
    public void process(EjbJar3xMetaData ejbJarMetaData, Class<?> beanClass)
@@ -64,8 +72,21 @@
          ejbJarMetaData.setEnterpriseBeans(new EnterpriseBeansMetaData());
       
       ejbJarMetaData.getEnterpriseBeans().add(beanMetaData);
-      
       processClass(beanMetaData, beanClass);
-   }
-   
+
+      // @DeclareRoles
+      AssemblyDescriptorMetaData assembly = ejbJarMetaData.getAssemblyDescriptor();
+      if(assembly == null)
+      {
+         assembly = new AssemblyDescriptorMetaData();
+         ejbJarMetaData.setAssemblyDescriptor(assembly);
+      }
+      SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+      if(securityRoles == null)
+      {
+         securityRoles = new SecurityRolesMetaData();
+         assembly.setSecurityRoles(securityRoles);
+      }
+      super.processClass(securityRoles, beanClass);
+   }  
 }

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RunAsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RunAsProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RunAsProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ejb;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.annotation.security.RunAs;
+
+import org.jboss.metadata.annotation.creator.AbstractRunAsProcessor;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
+
+/**
+ * Processor for ejb @RunAs
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class RunAsProcessor extends AbstractRunAsProcessor
+   implements Processor<EnterpriseBeanMetaData, Class>
+{
+   /**
+    * @param finder
+    */
+   public RunAsProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(EnterpriseBeanMetaData metaData, Class type)
+   {
+      RunAs annotation = finder.getAnnotation(type, RunAs.class);
+      if(annotation == null)
+         return;
+
+      RunAsMetaData runAs = super.create(type);
+      SecurityIdentityMetaData identity = metaData.getSecurityIdentity();
+      if(identity == null)
+      {
+         identity = new SecurityIdentityMetaData();
+         metaData.setSecurityIdentity(identity);         
+      }
+      identity.setRunAs(runAs);
+   }
+}


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/RunAsProcessor.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/RunAsProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/RunAsProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/RunAsProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.web;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.annotation.security.RunAs;
+
+import org.jboss.metadata.annotation.creator.AbstractRunAsProcessor;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.metadata.web.spec.ServletsMetaData;
+
+/**
+ * Processor for ejb @RunAs
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class RunAsProcessor extends AbstractRunAsProcessor
+   implements Processor<ServletsMetaData, Class>
+{
+   /**
+    * @param finder
+    */
+   public RunAsProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(ServletsMetaData metaData, Class type)
+   {
+      RunAs annotation = finder.getAnnotation(type, RunAs.class);
+      if(annotation == null)
+         return;
+
+      RunAsMetaData runAs = super.create(type);
+      ServletMetaData servlet = new ServletMetaData();
+      servlet.setServletName(type.getSimpleName());
+      servlet.setServletClass(type.getName());
+      servlet.setRunAs(runAs);
+      metaData.add(servlet);
+   }
+}


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/RunAsProcessor.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/WebComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/WebComponentProcessor.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/WebComponentProcessor.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -25,9 +25,12 @@
 
 
 import org.jboss.metadata.annotation.creator.AbstractComponentProcessor;
+import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
 import org.jboss.metadata.annotation.creator.Processor;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+import org.jboss.metadata.web.spec.ServletsMetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
 
 /**
@@ -42,6 +45,10 @@
    public WebComponentProcessor(AnnotationFinder<AnnotatedElement> finder)
    {
       super(finder);
+      // @RunAs
+      addTypeProcessor(new RunAsProcessor(finder));
+      // @DeclareRoles
+      addTypeProcessor(new DeclareRolesProcessor(finder));
    }
 
    @Override
@@ -52,6 +59,22 @@
       EnvironmentRefsGroupMetaData env = new EnvironmentRefsGroupMetaData();
       super.process(env, type);
       metaData.setJndiEnvironmentRefsGroup(env);
+
+      // @RunAs
+      ServletsMetaData servlets = metaData.getServlets();
+      if(servlets == null)
+      {
+         servlets = new ServletsMetaData();
+         metaData.setServlets(servlets);
+      }
+      super.processClass(servlets, type);
+      // @DeclareRoles
+      SecurityRolesMetaData securityRoles = metaData.getSecurityRoles();
+      if(securityRoles == null)
+      {
+         securityRoles = new SecurityRolesMetaData();
+         metaData.setSecurityRoles(securityRoles);
+      }
+      super.processClass(securityRoles, type);
    }
-   
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -35,6 +35,7 @@
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
 import org.jboss.metadata.common.ejb.IEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.spec.AssemblyDescriptorMetaData;
 import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
 import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
 import org.jboss.metadata.ejb.spec.InitMethodMetaData;
@@ -42,6 +43,7 @@
 import org.jboss.metadata.ejb.spec.MethodsMetaData;
 import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
 import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
+import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
 import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
 import org.jboss.metadata.ejb.spec.SessionType;
 import org.jboss.metadata.ejb.spec.TransAttributeType;
@@ -49,6 +51,10 @@
 import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+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.spec.ServletMetaData;
 import org.jboss.test.BaseTestCase;
 
 /**
@@ -201,6 +207,13 @@
       LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
       assertEquals("tearDown", preDestroy.getMethodName());
       assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
+
+      // MyServlet @RunAs
+      SecurityIdentityMetaData identity = bean.getSecurityIdentity();
+      assertNotNull(identity);
+      RunAsMetaData runAs = identity.getRunAs();
+      assertNotNull(runAs);
+      assertEquals("InternalUser", runAs.getRoleName());
    }
 
    private Collection<Class> loadClassesFromCurrentClassDir()
@@ -273,8 +286,20 @@
       assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
       assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
       
-      assertNotNull("no application exceptions defined", metaData.getAssemblyDescriptor().getApplicationExceptions());
-      assertEquals(1, metaData.getAssemblyDescriptor().getApplicationExceptions().size());
-      System.out.println(metaData.getAssemblyDescriptor().getContainerTransactionsByEjbName("MyStatelessBean"));
+      AssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
+      assertNotNull("no application exceptions defined", assembly.getApplicationExceptions());
+      assertEquals(1, assembly.getApplicationExceptions().size());
+      System.out.println(assembly.getContainerTransactionsByEjbName("MyStatelessBean"));
+
+      // @DeclareRoles
+      SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+      assertNotNull(securityRoles);
+      assertEquals(2, securityRoles.size());
+      SecurityRoleMetaData role1 = securityRoles.get("Role1");
+      assertNotNull(role1);
+      assertEquals("Role1", role1.getRoleName());
+      SecurityRoleMetaData role2 = securityRoles.get("Role2");
+      assertNotNull(role2);
+      assertEquals("Role2", role2.getRoleName());
    }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -53,7 +53,7 @@
    @Resource(description="url-resource-ref", name="googleHome", type=java.net.URL.class, mappedName="http://www.google.com"),
    @Resource(description="DataSource-resource-ref", name="jdbc/ds", type=DataSource.class, mappedName="java:/DefaultDS")
 })
- at DeclareRoles(value="Role1")
+ at DeclareRoles(value={"Role1","Role2"})
 @RunAs("InternalUser")
 public class MyStatelessBean implements MyStatelessLocal
 {

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	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -43,6 +43,10 @@
 import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
 import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
+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.spec.ServletMetaData;
 import org.jboss.metadata.web.spec.Web25MetaData;
 import org.jboss.test.BaseTestCase;
 import org.jboss.test.metadata.annotation.ejb3.MyStatelessLocal;
@@ -153,6 +157,23 @@
       assertEquals("2.5", metaData.getVersion());
 
       assertEnv(metaData.getJndiEnvironmentRefsGroup());
-      
+
+      // MyServlet @RunAs
+      assertNotNull(metaData.getServlets());
+      ServletMetaData servlet = metaData.getServlets().get("MyServlet");
+      assertNotNull(servlet);
+      RunAsMetaData runAs = servlet.getRunAs();
+      assertNotNull(runAs);
+      assertEquals("InternalUser", runAs.getRoleName());
+      // @DeclareRoles
+      SecurityRolesMetaData securityRoles = metaData.getSecurityRoles();
+      assertNotNull(securityRoles);
+      assertEquals(2, securityRoles.size());
+      SecurityRoleMetaData role1 = securityRoles.get("Role1");
+      assertNotNull(role1);
+      assertEquals("Role1", role1.getRoleName());
+      SecurityRoleMetaData role2 = securityRoles.get("Role2");
+      assertNotNull(role2);
+      assertEquals("Role2", role2.getRoleName());
    }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java	2007-11-17 03:47:39 UTC (rev 67217)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java	2007-11-17 07:53:29 UTC (rev 67218)
@@ -38,7 +38,7 @@
    @Resource(description="url-resource-ref", name="googleHome", type=java.net.URL.class, mappedName="http://www.google.com"),
    @Resource(description="DataSource-resource-ref", name="jdbc/ds", type=DataSource.class, mappedName="java:/DefaultDS")
 })
- at DeclareRoles(value="Role1")
+ at DeclareRoles(value={"Role1", "Role2"})
 @RunAs("InternalUser")
 @WebServiceRefs({
    @WebServiceRef(name = "service2", value = TestEndpointService.class),




More information about the jboss-cvs-commits mailing list