[jboss-cvs] JBossAS SVN: r67161 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/annotation/creator/web and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 16 00:13:00 EST 2007


Author: scott.stark at jboss.org
Date: 2007-11-16 00:13:00 -0500 (Fri, 16 Nov 2007)
New Revision: 67161

Added:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractLifeCycleMethodProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostActivateMethodProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PrePassivateMethodProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoteHomeProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoveProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.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/MyStatefulHome.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/
   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
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpoint.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpointService.java
Removed:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ServletProcessor.java
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractSessionBeanProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/StatefulProcessor.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/MyStatefulBean.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java
Log:
Add more annotations and Web25MetaDataCreator for WebMetaData from annotations

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java	2007-11-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -72,14 +72,19 @@
       methodProcessors = new HashMap<Class<?>, List<Processor<Object,Method>>>();
 
       // Add component environment processors
+      // @Resources/@Resource
       addMethodProcessor(new ResourceMethodProcessor(finder));
       addFieldProcessor(new ResourceFieldProcessor(finder));
       addTypeProcessor(new ResourceClassProcessor(finder));
       addTypeProcessor(new ResourcesClassProcessor(finder));
+      // @EJBs/@EJB
       addMethodProcessor(new EJBMethodProcessor(finder));
       addFieldProcessor(new EJBFieldProcessor(finder));
       addTypeProcessor(new EJBClassProcessor(finder));
       addTypeProcessor(new EJBsClassProcessor(finder));
+      // @PostConstruct/@PreDestroy
+      addMethodProcessor(new PostConstructMethodProcessor(finder));
+      addMethodProcessor(new PreDestroyMethodProcessor(finder));
    }
 
    public void addFieldProcessor(Processor processor)
@@ -209,27 +214,31 @@
       
       List<Processor<Object, Field>> fps = fieldProcessors.get(processorType);
       if(fps != null)
-      for(Field field : cls.getDeclaredFields())
       {
          processorCount += fps.size();
          if(trace)
             log.trace("fieldProcessors("+fps.size()+") for metaData: "+fps);
-         for(Processor<Object, Field> processor : fps)
+         for(Field field : cls.getDeclaredFields())
          {
-            processor.process(metaData, field);
+            for(Processor<Object, Field> processor : fps)
+            {
+               processor.process(metaData, field);
+            }
          }
       }
 
       List<Processor<Object, Method>> mps = methodProcessors.get(processorType);
       if(mps != null)
-      for(Method method : cls.getDeclaredMethods())
       {
          processorCount += mps.size();
          if(trace)
-            log.trace("methodProcessors("+mps.size()+") for metaData: "+fps);
-         for(Processor<Object, Method> processor : mps)
+            log.trace("methodProcessors("+mps.size()+") for metaData: "+mps);
+         for(Method method : cls.getDeclaredMethods())
          {
-            processor.process(metaData, method);
+            for(Processor<Object, Method> processor : mps)
+            {
+               processor.process(metaData, method);
+            }
          }
       }
       

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractLifeCycleMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractLifeCycleMethodProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractLifeCycleMethodProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,53 @@
+/*
+ * 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 java.lang.reflect.Method;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+
+/**
+ * Base of the lifecycle type processors
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class AbstractLifeCycleMethodProcessor
+   extends AbstractFinderUser
+   implements Creator<Method, LifecycleCallbackMetaData>
+{
+   public AbstractLifeCycleMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public LifecycleCallbackMetaData create(Method element)
+   {
+      LifecycleCallbackMetaData metaData = new LifecycleCallbackMetaData();
+      metaData.setClassName(element.getDeclaringClass().getName());
+      metaData.setMethodName(element.getName());
+      return metaData;
+   }
+
+}


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

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractSessionBeanProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractSessionBeanProcessor.java	2007-11-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractSessionBeanProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -54,10 +54,11 @@
       
       addTypeProcessor(new LocalProcessor(finder));
       addTypeProcessor(new RemoteProcessor(finder));
-      
+      addTypeProcessor(new RemoteHomeProcessor(finder));
+
       addMethodProcessor(new InitProcessor(finder));
    }
-   
+
    public abstract SessionBeanMetaData create(Class<?> beanClass);
    
    protected SessionBeanMetaData create(Class<?> beanClass, String name, String mappedName, String description)

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostActivateMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostActivateMethodProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostActivateMethodProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,69 @@
+/*
+ * 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 java.lang.reflect.Method;
+
+import javax.ejb.PostActivate;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+
+/**
+ * Translate @PostActivate into LifecycleCallbackMetaData for
+ * SessionBeanMetaData
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class PostActivateMethodProcessor
+   extends AbstractLifeCycleMethodProcessor
+   implements Processor<SessionBeanMetaData, Method>
+{
+   /**
+    * @param finder
+    */
+   public PostActivateMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(SessionBeanMetaData metaData, Method element)
+   {
+      PostActivate annotation = finder.getAnnotation(element, PostActivate.class);
+      if(annotation == null)
+         return;
+
+      LifecycleCallbackMetaData callback = super.create(element);
+      LifecycleCallbacksMetaData preDestroys = metaData.getPostActivates();
+      if(preDestroys == null)
+      {
+         preDestroys = new LifecycleCallbacksMetaData();
+         metaData.setPostActivates(preDestroys);
+      }
+      preDestroys.add(callback);
+   }
+
+}


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

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PostConstructMethodProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,69 @@
+/*
+ * 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 java.lang.reflect.Method;
+
+import javax.annotation.PostConstruct;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+
+/**
+ * Translate @PostConstruct into LifecycleCallbackMetaData for
+ * EnvironmentRefsGroupMetaData
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class PostConstructMethodProcessor
+   extends AbstractLifeCycleMethodProcessor
+   implements Processor<EnvironmentRefsGroupMetaData, Method>
+{
+   /**
+    * @param finder
+    */
+   public PostConstructMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(EnvironmentRefsGroupMetaData metaData, Method element)
+   {
+      PostConstruct annotation = finder.getAnnotation(element, PostConstruct.class);
+      if(annotation == null)
+         return;
+
+      LifecycleCallbackMetaData callback = super.create(element);
+      LifecycleCallbacksMetaData postConstructs = metaData.getPostConstructs();
+      if(postConstructs == null)
+      {
+         postConstructs = new LifecycleCallbacksMetaData();
+         metaData.setPostConstructs(postConstructs);
+      }
+      postConstructs.add(callback);
+   }
+
+}


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

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PreDestroyMethodProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,69 @@
+/*
+ * 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 java.lang.reflect.Method;
+
+import javax.annotation.PreDestroy;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+
+/**
+ * Translate @PreDestroy into LifecycleCallbackMetaData for
+ * EnvironmentRefsGroupMetaData
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class PreDestroyMethodProcessor
+   extends AbstractLifeCycleMethodProcessor
+   implements Processor<EnvironmentRefsGroupMetaData, Method>
+{
+   /**
+    * @param finder
+    */
+   public PreDestroyMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(EnvironmentRefsGroupMetaData metaData, Method element)
+   {
+      PreDestroy annotation = finder.getAnnotation(element, PreDestroy.class);
+      if(annotation == null)
+         return;
+
+      LifecycleCallbackMetaData callback = super.create(element);
+      LifecycleCallbacksMetaData preDestroys = metaData.getPreDestroys();
+      if(preDestroys == null)
+      {
+         preDestroys = new LifecycleCallbacksMetaData();
+         metaData.setPreDestroys(preDestroys);
+      }
+      preDestroys.add(callback);
+   }
+
+}


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

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PrePassivateMethodProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PrePassivateMethodProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/PrePassivateMethodProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,69 @@
+/*
+ * 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 java.lang.reflect.Method;
+
+import javax.ejb.PrePassivate;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+
+/**
+ * Translate @PrePassivate into LifecycleCallbackMetaData for
+ * SessionBeanMetaData
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class PrePassivateMethodProcessor
+   extends AbstractLifeCycleMethodProcessor
+   implements Processor<SessionBeanMetaData, Method>
+{
+   /**
+    * @param finder
+    */
+   public PrePassivateMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(SessionBeanMetaData metaData, Method element)
+   {
+      PrePassivate annotation = finder.getAnnotation(element, PrePassivate.class);
+      if(annotation == null)
+         return;
+
+      LifecycleCallbackMetaData callback = super.create(element);
+      LifecycleCallbacksMetaData preDestroys = metaData.getPrePassivates();
+      if(preDestroys == null)
+      {
+         preDestroys = new LifecycleCallbacksMetaData();
+         metaData.setPrePassivates(preDestroys);
+      }
+      preDestroys.add(callback);
+   }
+
+}


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

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoteHomeProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoteHomeProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoteHomeProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * 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.ejb.RemoteHome;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
+
+/**
+ * @RemoteHome annotation processor.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: $
+ */
+public class RemoteHomeProcessor extends AbstractFinderUser
+   implements Processor<SessionBeanMetaData, Class<?>>
+{  
+   public RemoteHomeProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+   
+   public void process(SessionBeanMetaData metaData, Class<?> type)
+   {
+      RemoteHome remote = finder.getAnnotation(type, RemoteHome.class);
+      if(remote == null)
+         return;
+
+      metaData.setHome(remote.value().getName());
+   }
+}


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

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoveProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoveProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/RemoveProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * 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 java.lang.reflect.Method;
+
+import javax.ejb.Remove;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
+import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
+import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
+import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
+import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.SessionType;
+
+/**
+ * Process @Remove annotation.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: $
+ */
+public class RemoveProcessor extends AbstractFinderUser
+   implements Creator<Method, RemoveMethodMetaData>,
+   Processor<SessionBeanMetaData, Method>
+{
+   public RemoveProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+   
+   public RemoveMethodMetaData create(Method method)
+   {
+      Remove remove = finder.getAnnotation(method, Remove.class);
+      if(remove == null)
+         return null;
+      
+      RemoveMethodMetaData metaData = new RemoveMethodMetaData();
+      NamedMethodMetaData beanMethod = new NamedMethodMetaData();
+      beanMethod.setMethodName(method.getName());
+      metaData.setBeanMethod(beanMethod);
+      metaData.setRetainIfException(remove.retainIfException());
+
+      MethodParametersMetaData methodParams = MethodParametersHelper.create(method);
+      beanMethod.setMethodParams(methodParams);
+      
+      return metaData;
+   }
+   
+   public void process(SessionBeanMetaData bean, Method method)
+   {
+      RemoveMethodMetaData removeMethod = create(method);
+      if(removeMethod == null)
+         return;
+      
+      if(bean.getSessionType() != SessionType.Stateful)
+         throw new IllegalArgumentException("Remove annotation is only valid on a stateful bean");
+      
+      if(bean.getRemoveMethods() == null)
+         bean.setRemoveMethods(new RemoveMethodsMetaData());
+      
+      bean.getRemoveMethods().add(removeMethod);
+   }
+}


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

Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ServletProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ServletProcessor.java	2007-11-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ServletProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -1,42 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
- * 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 org.jboss.metadata.annotation.finder.AnnotationFinder;
-
-/**
- * Create the correct meta data for a stateless annotation.
- *
- * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
- */
-public class ServletProcessor extends AbstractComponentProcessor
-{
-   public ServletProcessor(AnnotationFinder<AnnotatedElement> finder)
-   {
-      super(finder);
-   }
-   
-}

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/StatefulProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/StatefulProcessor.java	2007-11-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/StatefulProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -33,6 +33,7 @@
  * Create the correct meta data for a stateful annotation.
  *
  * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
  * @version $Revision: $
  */
 public class StatefulProcessor extends AbstractSessionBeanProcessor
@@ -40,8 +41,11 @@
    public StatefulProcessor(AnnotationFinder<AnnotatedElement> finder)
    {
       super(finder);
+      addMethodProcessor(new RemoveProcessor(finder));
+      addMethodProcessor(new PostActivateMethodProcessor(finder));
+      addMethodProcessor(new PrePassivateMethodProcessor(finder));
    }
-   
+
    public SessionBeanMetaData create(Class<?> beanClass)
    {
       Stateful annotation = finder.getAnnotation(beanClass, Stateful.class);

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,75 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.ApplicationExceptionProcessor;
+import org.jboss.metadata.annotation.creator.Creator;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.StatefulProcessor;
+import org.jboss.metadata.annotation.creator.StatelessProcessor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
+import org.jboss.metadata.web.spec.Web25MetaData;
+import org.jboss.metadata.web.spec.WebMetaData;
+
+/**
+ * Create a Web25MetaData instance from the class annotations
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class Web25MetaDataCreator extends AbstractFinderUser
+   implements Creator<Collection<Class>, Web25MetaData>
+{
+   private List<Processor<WebMetaData, Class<?>>> processors;
+   
+   public Web25MetaDataCreator(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+      
+      processors = new ArrayList<Processor<WebMetaData,Class<?>>>();
+      processors.add(new WebComponentProcessor(finder));
+   }
+
+   public Web25MetaData create(Collection<Class> classes)
+   {
+      Web25MetaData metaData = new Web25MetaData();
+      metaData.setVersion("2.5");
+
+      for(Class<?> cls : classes)
+      {
+         for(Processor<WebMetaData, Class<?>> processor : processors)
+         {
+            processor.process(metaData, cls);
+         }
+      }
+      
+      return metaData;
+   }
+
+}


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

Added: 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	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/WebComponentProcessor.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * 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 org.jboss.metadata.annotation.creator.AbstractComponentProcessor;
+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.web.spec.WebMetaData;
+
+/**
+ * Create the correct meta data for web component.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: $
+ */
+public class WebComponentProcessor extends AbstractComponentProcessor<WebMetaData>
+   implements Processor<WebMetaData,Class<?>>
+{
+   public WebComponentProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   @Override
+   public void process(WebMetaData metaData, Class<?> type)
+   {
+      super.process(metaData, type);
+
+      EnvironmentRefsGroupMetaData env = new EnvironmentRefsGroupMetaData();
+      super.process(env, type);
+      metaData.setJndiEnvironmentRefsGroup(env);
+   }
+   
+}


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

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-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -31,8 +31,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 
-import junit.framework.TestCase;
-
 import org.jboss.metadata.annotation.creator.EjbJar30Creator;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
@@ -40,20 +38,24 @@
 import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
 import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
 import org.jboss.metadata.ejb.spec.InitMethodMetaData;
-import org.jboss.metadata.ejb.spec.MethodInterfaceType;
+import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
 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.SessionBeanMetaData;
 import org.jboss.metadata.ejb.spec.SessionType;
 import org.jboss.metadata.ejb.spec.TransAttributeType;
 import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
 import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
+import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
 import org.jboss.test.BaseTestCase;
 
 /**
  * This tests the annotation translation framework.
  *
  * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
  * @version $Revision$
  */
 public class AnnotationEjb3UnitTestCase extends BaseTestCase
@@ -78,11 +80,7 @@
       assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
       assertEquals(1, bean.getBusinessRemotes().size());
       assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
-      
-      assertNotNull("bean has no init methods", bean.getInitMethods());
-      assertEquals(1, bean.getInitMethods().size());
-      InitMethodMetaData initMethod = bean.getInitMethods().iterator().next();
-      assertEquals("init", initMethod.getBeanMethod().getMethodName());
+      assertEquals(MyStatefulHome.class.getName(), bean.getHome());
 
       // @EJBs
       AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
@@ -101,6 +99,46 @@
       assertEquals("local.jar#MyLocalSession1", local2.getLink());
       assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
       assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
+      // @PostConstruct
+      LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+      assertNotNull(postConstructs);
+      assertEquals(1, postConstructs.size());
+      LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+      assertEquals("setUp", postConstruct.getMethodName());
+      assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
+      // @PreDestroy
+      LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+      assertNotNull(preDestroys);
+      assertEquals(1, preDestroys.size());
+      LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+      assertEquals("tearDown", preDestroy.getMethodName());
+      assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
+      // @Init
+      InitMethodsMetaData initMethods = bean.getInitMethods();
+      assertNotNull(initMethods);
+      assertEquals(1, initMethods.size());
+      InitMethodMetaData initMethod = initMethods.get(0);
+      assertEquals("init", initMethod.getBeanMethod().getMethodName());
+      // @PostActivate
+      LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
+      assertNotNull(postActivates);
+      assertEquals(1, postActivates.size());
+      LifecycleCallbackMetaData postActivate = postActivates.get(0);
+      assertEquals("activate", postActivate.getMethodName());
+      assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
+      // @PrePassivate
+      LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
+      assertNotNull(prePassivates);
+      assertEquals(1, prePassivates.size());
+      LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
+      assertEquals("passivate", prePassivate.getMethodName());
+      assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
+      // @Remove
+      RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
+      assertNotNull(removeMethods);
+      assertEquals(1, removeMethods.size());
+      RemoveMethodMetaData removeMethod = removeMethods.get(0);
+      assertEquals("remove", removeMethod.getBeanMethod().getMethodName());      
    }
 
    private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
@@ -149,6 +187,20 @@
       AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
       assertNotNull(injectedFieldWithOverridenName);
       assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
+      // @PostConstruct
+      LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+      assertNotNull(postConstructs);
+      assertEquals(1, postConstructs.size());
+      LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+      assertEquals("setUp", postConstruct.getMethodName());
+      assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
+      // @PreDestroy
+      LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+      assertNotNull(preDestroys);
+      assertEquals(1, preDestroys.size());
+      LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+      assertEquals("tearDown", preDestroy.getMethodName());
+      assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
    }
 
    private Collection<Class> loadClassesFromCurrentClassDir()

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java	2007-11-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -21,20 +21,28 @@
  */
 package org.jboss.test.metadata.annotation.ejb3;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.ejb.EJB;
 import javax.ejb.EJBs;
 import javax.ejb.Init;
+import javax.ejb.PostActivate;
+import javax.ejb.PrePassivate;
 import javax.ejb.Remote;
+import javax.ejb.RemoteHome;
+import javax.ejb.Remove;
 import javax.ejb.Stateful;
 
 /**
  * Comment
  *
  * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
  * @version $Revision: $
  */
 @Stateful(name="AnotherName")
 @Remote(MyStateful.class)
+ at RemoteHome(MyStatefulHome.class)
 @EJBs(
       value={
             @EJB(name="ejb/local1", beanInterface=MyStatelessLocal.class,
@@ -47,9 +55,29 @@
 )
 public class MyStatefulBean
 {
+   @PostConstruct
+   public void setUp()
+   {
+      
+   }
+   @PreDestroy
+   public void tearDown()
+   {
+   }
    @Init
    public void init()
    {
-      
    }
+   @PostActivate
+   public void activate()
+   {
+   }
+   @PrePassivate
+   public void passivate()
+   {
+   }
+   @Remove
+   public void remove()
+   {
+   }
 }

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulHome.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulHome.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulHome.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,33 @@
+/*
+ * 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.test.metadata.annotation.ejb3;
+
+import javax.ejb.EJBHome;
+
+/**
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public interface MyStatefulHome extends EJBHome
+{
+   public MyStateful create(String x);
+}


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

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-16 02:01:42 UTC (rev 67160)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatelessBean.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -23,8 +23,12 @@
 
 import java.net.URL;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 import javax.annotation.Resources;
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RunAs;
 import javax.ejb.EJB;
 import javax.ejb.Init;
 import javax.ejb.LocalHome;
@@ -39,6 +43,7 @@
  * Comment
  *
  * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
  * @version $Revision: $
  */
 @SuppressWarnings("unused")
@@ -48,6 +53,8 @@
    @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 RunAs("InternalUser")
 public class MyStatelessBean implements MyStatelessLocal
 {
    @EJB
@@ -100,4 +107,15 @@
    {
       this.pi = pi;
    }
+
+   @PostConstruct
+   public void setUp()
+   {
+      
+   }
+   @PreDestroy
+   public void tearDown()
+   {
+   }
+
 }

Added: 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	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/AnnotationWebUnitTestCase.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,158 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * 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.test.metadata.annotation.web;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import javax.transaction.UserTransaction;
+
+import org.jboss.metadata.annotation.creator.web.Web25MetaDataCreator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
+import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
+import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
+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.web.spec.Web25MetaData;
+import org.jboss.test.BaseTestCase;
+import org.jboss.test.metadata.annotation.ejb3.MyStatelessLocal;
+
+/**
+ * This tests the annotation translation framework.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class AnnotationWebUnitTestCase extends BaseTestCase
+{
+   /**
+    * @param name
+    */
+   public AnnotationWebUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   private void assertEnv(EnvironmentRefsGroupMetaData env)
+   {
+      // @EJB
+      AnnotatedEJBReferencesMetaData ejbRefs = env.getAnnotatedEjbReferences();
+      assertEquals(4, ejbRefs.size());
+      AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
+      assertNotNull(injectedField);
+      assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
+      AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
+      assertNotNull(injectedFieldWithOverridenName);
+      assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
+      AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
+      assertNotNull(local1);
+      assertEquals("java:/MyLocalSession1", local1.getMappedName());
+      assertEquals("ejb/local1", local1.getEjbRefName());
+      assertEquals("MyLocalSession1", local1.getLink());
+      assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
+      assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
+      AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
+      assertNotNull(local2);
+      assertEquals("java:/MyLocalSession2", local2.getMappedName());
+      assertEquals("ejb/local2", local2.getEjbRefName());
+      assertEquals("local.jar#MyLocalSession1", local2.getLink());
+      assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
+      assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
+
+      ResourceReferencesMetaData resRefs = env.getResourceReferences();
+      // 
+      assertEquals(3, resRefs.size());
+      ResourceReferenceMetaData homePageRef = resRefs.get("homePage");
+      assertNotNull(homePageRef);
+      assertEquals("java.net.URL", homePageRef.getType());
+      Set<ResourceInjectionTargetMetaData> homePageRefTargets = homePageRef.getInjectionTargets();
+      assertEquals(1, homePageRefTargets.size());
+      ResourceInjectionTargetMetaData homePageRefTarget = homePageRefTargets.iterator().next();
+      assertEquals(MyServlet.class.getName(), homePageRefTarget.getInjectionTargetClass());
+      assertEquals("homePage", homePageRefTarget.getInjectionTargetName());
+      ResourceReferenceMetaData googleHome = resRefs.get("googleHome");
+      assertNotNull(googleHome);
+      assertEquals("java.net.URL", googleHome.getType());
+      assertEquals("http://www.google.com", googleHome.getMappedName());
+      ResourceReferenceMetaData defaultDS = resRefs.get("jdbc/ds");
+      assertNotNull(defaultDS);
+      assertEquals("javax.sql.DataSource", defaultDS.getType());
+      assertEquals("java:/DefaultDS", defaultDS.getMappedName());
+
+      ResourceEnvironmentReferencesMetaData resEnvRefs = env.getResourceEnvironmentReferences();
+      assertEquals(1, resEnvRefs.size());
+      ResourceEnvironmentReferenceMetaData contextRef = resEnvRefs.get("utx");
+      assertNotNull(contextRef);
+      assertEquals(UserTransaction.class.getName(), contextRef.getType());
+      Set<ResourceInjectionTargetMetaData> contextRefTargets = contextRef.getInjectionTargets();
+      assertEquals(1, contextRefTargets.size());
+      ResourceInjectionTargetMetaData contextRefTarget = contextRefTargets.iterator().next();
+      assertEquals(MyServlet.class.getName(), contextRefTarget.getInjectionTargetClass());
+      assertEquals("utx", contextRefTarget.getInjectionTargetName());
+
+      EnvironmentEntriesMetaData envEntries = env.getEnvironmentEntries();
+      assertEquals(2, envEntries.size());
+      EnvironmentEntryMetaData pi = envEntries.get("pi");
+      assertEquals("3.14159", pi.getValue());
+      // TODO: should this be java.lang.Double?
+      assertEquals("double", pi.getType());
+
+      MessageDestinationReferencesMetaData msgRefs = env.getMessageDestinationReferences();
+      assertEquals(1, msgRefs.size());
+      MessageDestinationReferenceMetaData mailQueue = msgRefs.get("mailQueue");
+      assertNotNull(mailQueue);
+      assertEquals("javax.jms.Queue", mailQueue.getType());
+   }
+
+   public void test1() throws Exception
+   {
+      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 metaData = creator.create(classes);
+      
+      assertTrue(metaData.is25());
+      assertEquals("2.5", metaData.getVersion());
+
+      assertEnv(metaData.getJndiEnvironmentRefsGroup());
+      
+   }
+}


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

Added: 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	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/web/MyServlet.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,103 @@
+package org.jboss.test.metadata.annotation.web;
+
+import java.net.URL;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+import javax.annotation.Resources;
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.EJBs;
+import javax.jms.Queue;
+import javax.sql.DataSource;
+import javax.transaction.UserTransaction;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+
+import org.jboss.test.metadata.annotation.ejb3.MyStatelessLocal;
+import org.jboss.test.metadata.annotation.ws.TestEndpoint;
+import org.jboss.test.metadata.annotation.ws.TestEndpointService;
+
+ at EJBs(
+      value={
+            @EJB(name="ejb/local1", beanInterface=MyStatelessLocal.class,
+                  beanName="MyLocalSession1", mappedName="java:/MyLocalSession1",
+                  description="A reference to MyLocalSession1"),
+            @EJB(name="ejb/local2", beanInterface=MyStatelessLocal.class,
+                  beanName="local.jar#MyLocalSession1", mappedName="java:/MyLocalSession2",
+                  description="A reference to MyLocalSession2")
+      }
+)
+ at Resources({
+   @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 RunAs("InternalUser")
+ at WebServiceRefs({
+   @WebServiceRef(name = "service2", value = TestEndpointService.class),
+   @WebServiceRef(name = "port1", value = TestEndpointService.class, type = TestEndpoint.class)
+})
+public class MyServlet
+{
+   @Resource
+   UserTransaction utx;
+   @EJB
+   private MyStatelessLocal injectedField;
+
+   @Resource(description="string-env-entry")
+   private String sfield;
+   private URL homePage;
+   private URL googleHome;
+   private Queue mailQueue;
+   private double pi;
+   @WebServiceRef
+   private TestEndpointService service;
+   @WebServiceRef
+   private TestEndpoint endpoint;
+
+   @EJB(name="overrideName")
+   private MyStatelessLocal injectedFieldWithOverridenName;
+
+   public URL getHomePage()
+   {
+      return homePage;
+   }
+   @Resource(description="url-resource-ref2")
+   public void setHomePage(URL homePage)
+   {
+      this.homePage = homePage;
+   }
+
+   public Queue getMailQueue()
+   {
+      return mailQueue;
+   }
+   @Resource(description="message-destination-ref")
+   public void setMailQueue(Queue mailQueue)
+   {
+      this.mailQueue = mailQueue;
+   }
+
+   public double getPi()
+   {
+      return pi;
+   }
+   @Resource(description="pi-env-entry", mappedName="3.14159")
+   public void setPi(double pi)
+   {
+      this.pi = pi;
+   }
+
+   @PostConstruct
+   public void setUp()
+   {
+      
+   }
+   @PreDestroy
+   public void tearDown()
+   {
+   }
+}


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

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpoint.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpoint.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpoint.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,50 @@
+/*
+ * 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.test.metadata.annotation.ws;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+/**
+ * Sample test endpoint
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+ at WebService(name = "TestEndpoint", targetNamespace = "http://org.jboss.ws/wsref", wsdlLocation = "http://localhost.localdomain:8080/jaxws-samples-webserviceref?wsdl")
+ at SOAPBinding(style = SOAPBinding.Style.RPC)
+public interface TestEndpoint
+{
+    /**
+     *
+     * @param arg0
+     * @return
+     *     returns java.lang.String
+     */
+    @WebMethod
+    @WebResult(targetNamespace = "http://org.jboss.ws/wsref", partName = "return")
+    public String echo(
+        @WebParam(name = "arg0", partName = "arg0")
+        String arg0);
+}


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

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpointService.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpointService.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ws/TestEndpointService.java	2007-11-16 05:13:00 UTC (rev 67161)
@@ -0,0 +1,78 @@
+/*
+ * 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.test.metadata.annotation.ws;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+
+/**
+ * Sample wevservice class
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+ at WebServiceClient(name = "TestEndpointService", targetNamespace = "http://org.jboss.ws/wsref", wsdlLocation = "file://bogus-location/jaxws-samples-webserviceref?wsdl")
+public class TestEndpointService
+   extends Service
+{
+   private final static URL WSDL_LOCATION;
+   private final static QName TESTENDPOINTSERVICE = new QName("http://org.jboss.ws/wsref", "TestEndpointService");
+   private final static QName TESTENDPOINTPORT = new QName("http://org.jboss.ws/wsref", "TestEndpointPort");
+   
+   static
+   {
+       URL url = null;
+       try
+       {
+           url = new URL("file://bogus-location/jaxws-samples-webserviceref?wsdl");
+       } catch (MalformedURLException e) {
+           e.printStackTrace();
+       }
+       WSDL_LOCATION = url;
+   }
+   
+   public TestEndpointService(URL wsdlLocation, QName serviceName)
+   {
+       super(wsdlLocation, serviceName);
+   }
+
+   public TestEndpointService()
+   {
+       super(WSDL_LOCATION, TESTENDPOINTSERVICE);
+   }
+   
+   /**
+    *
+    * @return
+    *     returns TestEndpoint
+    */
+   @WebEndpoint(name = "TestEndpointPort")
+   public TestEndpoint getTestEndpointPort()
+   {
+       return (TestEndpoint)super.getPort(TestEndpointService.TESTENDPOINTPORT, TestEndpoint.class);
+   }
+
+}


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




More information about the jboss-cvs-commits mailing list