[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