Modified: 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=966519&r1=966518&r2=966519&view=diff
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
 (original)
+++ 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
 Thu Jul 22 07:06:39 2010
@@ -1057,11 +1057,16 @@ public class CoreDeploymentInfo extends 
                 final Class clazz = 
interceptorInstance.getData().getInterceptorClass();
                 interceptorInstances.put(clazz.getName(), 
interceptorInstance.getInterceptor());
             }
+            OWBInjector beanInjector = null;
+
+            try {
+                //Inject Cdi dependencies to bean instance
+                beanInjector = new OWBInjector();
+                beanInjector.inject(bean);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
 
-            //Inject Cdi dependencies to bean instance
-            OWBInjector beanInjector = new OWBInjector();
-            beanInjector.inject(bean);
-            
             this.cdiInjectors.add(beanInjector);
 
             for (InterceptorData interceptorData : 
this.getInstanceScopedInterceptors()) {

Modified: 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/managed/Instance.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/managed/Instance.java?rev=966519&r1=966518&r2=966519&view=diff
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/managed/Instance.java
 (original)
+++ 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/managed/Instance.java
 Thu Jul 22 07:06:39 2010
@@ -156,6 +156,8 @@ public class Instance implements Seriali
                     interceptors.put(e.getKey(), bean);
                 } else if (!(e.getValue() instanceof Serializable)) {
                     interceptors.put(e.getKey(), new 
PojoSerialization(e.getValue()));
+                } else {
+                    interceptors.put(e.getKey(), e.getValue());
                 }
             }
 

Modified: 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/Instance.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/Instance.java?rev=966519&r1=966518&r2=966519&view=diff
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/Instance.java
 (original)
+++ 
openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/Instance.java
 Thu Jul 22 07:06:39 2010
@@ -156,6 +156,8 @@ public class Instance implements Seriali
                     interceptors.put(e.getKey(), bean);
                 } else if (!(e.getValue() instanceof Serializable)) {
                     interceptors.put(e.getKey(), new 
PojoSerialization(e.getValue()));
+                } else {
+                    interceptors.put(e.getKey(), e.getValue());
                 }
             }
 

Copied: 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java
 (from r964308, 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/decorator/CdiDecoratorTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java?p2=openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java&p1=openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/decorator/CdiDecoratorTest.java&r1=964308&r2=966519&rev=966519&view=diff
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/decorator/CdiDecoratorTest.java
 (original)
+++ 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java
 Thu Jul 22 07:06:39 2010
@@ -14,16 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.openejb.cdi.decorator;
-
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
+package org.apache.openejb.cdi;
 
+import junit.framework.TestCase;
 import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
 import org.apache.openejb.assembler.classic.SecurityServiceInfo;
 import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
@@ -32,22 +26,40 @@ import org.apache.openejb.cdi.CdiAppScan
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.core.ivm.naming.InitContextFactory;
+import org.apache.openejb.jee.Beans;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.StatelessBean;
 import org.junit.Before;
 
-import junit.framework.TestCase;
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.ejb.LocalBean;
+import javax.ejb.Stateless;
+import javax.inject.Inject;
+import javax.inject.Qualifier;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InterceptorBinding;
+import javax.interceptor.InvocationContext;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.Properties;
 
 @SuppressWarnings("deprecation")
-public class CdiDecoratorTest extends TestCase{
+public class CdiDecoratorTest extends TestCase {
 
     private InitialContext ctx;
-    
+
     @Before
     public void setUp() throws Exception {
-       
-       CdiAppScannerService.BEANS_XML_LOCATION = 
"org/apache/openejb/cdi/decorator/META-INF/beans.xml";
-       CdiAppScannerService.APPEND_PACKAGE_NAME = 
"org.apache.openejb.cdi.decorator";
+
+        CdiAppScannerService.BEANS_XML_LOCATION = 
"org/apache/openejb/cdi/decorator/META-INF/beans.xml";
+        CdiAppScannerService.APPEND_PACKAGE_NAME = 
"org.apache.openejb.cdi.decorator";
         ConfigurationFactory config = new ConfigurationFactory();
         Assembler assembler = new Assembler();
 
@@ -57,50 +69,134 @@ public class CdiDecoratorTest extends Te
 
         
assembler.createContainer(config.configureService(StatelessSessionContainerInfo.class));
 
-        EjbModule ejbModule = buildTestApp();
-        EjbJarInfo ejbJar = config.configureApplication(ejbModule);       
-        
-        assertNotNull(ejbJar);
+        EjbJar ejbJar = new EjbJar();
+        ejbJar.addEnterpriseBean(new StatelessBean(HelloStateless.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(LocalHello.class));
+
+        Beans beans = new Beans();
+        beans.addInterceptor(HelloLocalInterceptor.class);
+        beans.addDecorator(HelloDecorator.class);
+        beans.addManagedClass(HelloCdiBean.class);
+
+        EjbModule module = new EjbModule(ejbJar);
+        module.setBeans(beans);
 
-        assembler.createApplication(ejbJar);
+        assembler.createApplication(config.configureApplication(module));
 
         Properties properties = new Properties(System.getProperties());
         properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
InitContextFactory.class.getName());
         ctx = new InitialContext(properties);
     }
-    
-    public void testSimple(){
-       try {
-           IHello hello = (IHello)ctx.lookup("HelloLocal");
-           hello.hello();
-
-           assertTrue(HelloCdiBean.RUN);
-           assertTrue(LocalHello.RUN);
-           assertTrue(Hello.RUN);
-           assertTrue(HelloLocalInterceptor.RUN);
-           assertTrue(HelloDecorator.RUN);
-           
-       } catch (NamingException e) {
-           e.printStackTrace();
-       }
-       
-       
+
+    public void testSimple() {
+        try {
+            Hello hello = (Hello) ctx.lookup("HelloStatelessLocal");
+            hello.hello();
+
+            assertTrue(HelloCdiBean.RUN);
+            assertTrue(LocalHello.RUN);
+            assertTrue(HelloStateless.RUN);
+            assertTrue(HelloLocalInterceptor.RUN);
+            assertTrue(HelloDecorator.RUN);
+
+        } catch (NamingException e) {
+            e.printStackTrace();
+        }
     }
-    
-    public EjbModule buildTestApp() throws Exception {
-        EjbJar ejbJar = new EjbJar();
-        ejbJar.setId(this.getClass().getName());
-        
-        ejbJar.addEnterpriseBean(new StatelessBean(Hello.class));
-        ejbJar.addEnterpriseBean(new StatelessBean(LocalHello.class));
-        EjbModule module = new EjbModule(ejbJar);
-        
-        //Just for marker!
-        module.getAltDDs().put("beans.xml", null);
+
+
+    public static interface Hello {
+        public void hello();
+    }
+
+    @InterceptorBinding
+    @Target(value = {ElementType.TYPE})
+    @Retention(RetentionPolicy.RUNTIME)
+    public static @interface LocalEjbInterceptorBinding {
+
+    }
+
+    @Qualifier
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(value = {ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
+    public static @interface LocalEjbQualifier {
+
+    }
+
+    @Stateless
+    public static class HelloStateless implements Hello {
+
+        @Inject
+        private HelloCdiBean cdiBean;
         
+        public static boolean RUN = false;
+
+        @Override
+        public void hello() {
+            RUN = true;
+            System.out.println("In EJB : " + HelloStateless.class.getName());
+            cdiBean.sayHelloWorld();
+        }
+    }
+
+    public static class HelloCdiBean {
+
+        @Inject
+        @LocalEjbQualifier
+        private Hello helloEjb;
         
-        return module;
+        public static boolean RUN = false;
+
+        public void sayHelloWorld() {
+            RUN = true;
+            System.out.println("In Managed Bean : " + 
HelloCdiBean.class.getName());
+            this.helloEjb.hello();
+        }
+    }
+
+    @Decorator
+    public static class HelloDecorator implements Hello {
+
+        public static boolean RUN = false;
+
+        @Inject
+        @Delegate
+        @LocalEjbQualifier
+        private Hello hello;
+
+        @Override
+        public void hello() {
+            System.out.println("In CDI Style Decorator  : " + 
HelloDecorator.class.getName());
+            RUN = true;
+            this.hello.hello();
+        }
+    }
+
+    @Interceptor
+    @LocalEjbInterceptorBinding
+    public static class HelloLocalInterceptor {
+
+        public static boolean RUN = false;
+
+        @AroundInvoke
+        public Object aroundInvoke(InvocationContext ctx) throws Exception {
+            System.out.println("In CDI Style Interceptor  : " + 
HelloLocalInterceptor.class.getName());
+            RUN = true;
+            return ctx.proceed();
+        }
+    }
+
+    @LocalBean
+    @LocalEjbQualifier
+    @LocalEjbInterceptorBinding
+    public static class LocalHello implements Hello {
+
+        public static boolean RUN = false;
+
+        @Override
+        public void hello() {
+            System.out.println("In EJB : " + LocalHello.class.getName());
+            RUN = true;
+        }
     }
-    
-    
 }

Propchange: 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/SimpleCdiTest.java
 (from r964308, 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/simple/SimpleCdiTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/SimpleCdiTest.java?p2=openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/SimpleCdiTest.java&p1=openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/simple/SimpleCdiTest.java&r1=964308&r2=966519&rev=966519&view=diff
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/simple/SimpleCdiTest.java
 (original)
+++ 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/SimpleCdiTest.java
 Thu Jul 22 07:06:39 2010
@@ -14,89 +14,213 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.openejb.cdi.simple;
-
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
+package org.apache.openejb.cdi;
 
+import junit.framework.TestCase;
 import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.EjbJarInfo;
-import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
 import org.apache.openejb.assembler.classic.SecurityServiceInfo;
-import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
 import org.apache.openejb.assembler.classic.TransactionServiceInfo;
-import org.apache.openejb.cdi.CdiAppScannerService;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.core.ivm.naming.InitContextFactory;
+import org.apache.openejb.jee.Beans;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.StatelessBean;
 import org.junit.Before;
 
-import junit.framework.TestCase;
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.ejb.EJB;
+import javax.ejb.Local;
+import javax.ejb.Stateless;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+import javax.inject.Qualifier;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InterceptorBinding;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.io.Serializable;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.Properties;
 
 @SuppressWarnings("deprecation")
-public class SimpleCdiTest extends TestCase{
+public class SimpleCdiTest extends TestCase {
 
     private InitialContext ctx;
-    
+
     @Before
     public void setUp() throws Exception {
-       
-       CdiAppScannerService.BEANS_XML_LOCATION = 
"org/apache/openejb/cdi/simple/META-INF/beans.xml";
-       CdiAppScannerService.APPEND_PACKAGE_NAME = 
"org.apache.openejb.cdi.simple";
+
         ConfigurationFactory config = new ConfigurationFactory();
         Assembler assembler = new Assembler();
 
-        
assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
         
assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
         
assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
 
-        
assembler.createContainer(config.configureService(StatelessSessionContainerInfo.class));
+        EjbJar ejbJar = new EjbJar();
+        ejbJar.addEnterpriseBean(new StatelessBean(Echo.class));
+
+        Beans beans = new Beans();
+        beans.addInterceptor(EchoInterceptor.class);
+        beans.addDecorator(EchoDecorator.class);
+        beans.addManagedClass(SimpleModel.class);
+        beans.addManagedClass(ProducesEjbInjector.class);
 
-        EjbModule ejbModule = buildTestApp();
-        EjbJarInfo ejbJar = config.configureApplication(ejbModule);       
-        
-        assertNotNull(ejbJar);
+        EjbModule module = new EjbModule(ejbJar);
+        module.setBeans(beans);
 
-        assembler.createApplication(ejbJar);
+        assembler.createApplication(config.configureApplication(module));
 
         Properties properties = new Properties(System.getProperties());
         properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
InitContextFactory.class.getName());
         ctx = new InitialContext(properties);
     }
-    
-    public void testSimple(){
-       try {
-           EchoLocal echo = (EchoLocal)ctx.lookup("EchoLocal");
-           String result = echo.echo("Gurkan");
-           assertEquals("Gurkan", result);
-           
-           assertTrue(EchoInterceptor.RUN);
-           assertTrue(NormalEjbInterceptor.RUN);
-           assertTrue(NormalEjbInterceptor.INJECTED);
-           
-       } catch (NamingException e) {
-           e.printStackTrace();
-       }
-       
-       
+
+    public void testSimple() {
+        try {
+            EchoLocal echo = (EchoLocal) ctx.lookup("EchoLocal");
+            String result = echo.echo("Gurkan");
+            assertEquals("Gurkan", result);
+
+            assertTrue(EchoInterceptor.RUN);
+            assertTrue(NormalEjbInterceptor.RUN);
+            assertTrue(NormalEjbInterceptor.INJECTED);
+
+        } catch (NamingException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @InterceptorBinding
+    @Target(value = {ElementType.TYPE})
+    @Retention(RetentionPolicy.RUNTIME)
+    public static @interface EchoInterceptorBinding {
+
     }
-    
-    public EjbModule buildTestApp() throws Exception {
-        EjbJar ejbJar = new EjbJar();
-        ejbJar.setId(this.getClass().getName());
-        
-        ejbJar.addEnterpriseBean(new StatelessBean(Echo.class));
-        EjbModule module = new EjbModule(ejbJar);
-        module.getAltDDs().put("beans.xml", 
SimpleCdiTest.class.getClassLoader().getResource("cdi/beans.xml"));
-        
-        
-        return module;
+
+    @Interceptor
+    @EchoInterceptorBinding
+    public static class EchoInterceptor implements Serializable {
+
+        public static boolean RUN = false;
+
+        @AroundInvoke
+        public Object aroundInvoke(InvocationContext context) throws Exception 
{
+            RUN = true;
+            return context.proceed();
+        }
+    }
+
+    @Stateless
+    @EchoInterceptorBinding
+    @Interceptors(value = {NormalEjbInterceptor.class})
+    public static class Echo implements EchoLocal {
+
+        @Inject
+        private SimpleModel model;
+
+        @Inject
+        private ProducesEjbInjector injector;
+
+        @Override
+        public String echo(String echo) {
+            assertNotNull(model);
+            return echo;
+        }
+
+    }
+
+    @Local
+    public static interface EchoLocal {
+        public String echo(String echo);
+    }
+
+    public static class ProducesEjbInjector {
+
+        @Inject
+        @EchoEjbQualifier
+        private EchoLocal echo;
+
+        public EchoLocal getEcho() {
+            return echo;
+        }
+
+        public void setEcho(EchoLocal echo) {
+            this.echo = echo;
+        }
+    }
+
+    public static class NormalEjbInterceptor implements Serializable {
+
+        public static boolean RUN = false;
+        public static boolean INJECTED = false;
+
+        @Inject
+        private SimpleModel injection;
+
+        @AroundInvoke
+        public Object aroundInvoke(InvocationContext context) throws Exception 
{
+            RUN = true;
+            if (injection != null) {
+                INJECTED = true;
+            }
+
+            return context.proceed();
+        }
+    }
+
+    @Qualifier
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(value = {ElementType.FIELD})
+    public static @interface EchoEjbQualifier {
+
+    }
+
+    public static class SimpleModel implements Serializable {
+
+        @EJB
+        private EchoLocal echoLocal;
+
+        @Produces
+        @EchoEjbQualifier
+        @EJB
+        private EchoLocal local2ViaProduce;
+
+        public EchoLocal getLocal2ViaProduce() {
+            return local2ViaProduce;
+        }
+
+        public void setLocal2ViaProduce(EchoLocal local2ViaProduce) {
+            this.local2ViaProduce = local2ViaProduce;
+        }
+
+        public EchoLocal getEchoLocal() {
+            return echoLocal;
+        }
+
+        public void setEchoLocal(EchoLocal echoLocal) {
+            this.echoLocal = echoLocal;
+        }
+    }
+
+    @Decorator
+    public static class EchoDecorator implements EchoLocal {
+
+        @Inject
+        @Delegate
+        private EchoLocal local;
+
+        @Override
+        public String echo(String echo) {
+            return local.echo(echo);
+        }
     }
-    
-    
 }

Propchange: 
openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/SimpleCdiTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
openejb/branches/openejb-jcdi/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java?rev=966519&view=auto
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java
 (added)
+++ 
openejb/branches/openejb-jcdi/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java
 Thu Jul 22 07:06:39 2010
@@ -0,0 +1,195 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.jee;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * <p/>
+ * <p>The following schema fragment specifies the expected content contained 
within this class.
+ * <p/>
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+ *       &lt;all>
+ *         &lt;element ref="{http://java.sun.com/xml/ns/javaee}interceptors"; 
minOccurs="0"/>
+ *         &lt;element ref="{http://java.sun.com/xml/ns/javaee}decorators"; 
minOccurs="0"/>
+ *         &lt;element ref="{http://java.sun.com/xml/ns/javaee}alternatives"; 
minOccurs="0"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ */
+...@xmlaccessortype(XmlAccessType.FIELD)
+...@xmltype(name = "", propOrder = {
+
+})
+...@xmlrootelement(name = "beans")
+public class Beans {
+
+    @XmlTransient
+    private final List<String> managedClasses = new ArrayList<String>();
+
+    @XmlElementWrapper(name = "interceptors")
+    @XmlElement(name = "class")
+    protected List<String> interceptors;
+
+    @XmlElementWrapper(name = "decorators")
+    @XmlElement(name = "class")
+    protected List<String> decorators;
+
+    protected Alternatives alternatives;
+
+    public List<String> getManagedClasses() {
+        return managedClasses;
+    }
+
+    public void addManagedClass(String className) {
+        managedClasses.add(className);
+    }
+
+    public void addManagedClass(Class clazz) {
+        addManagedClass(clazz.getName());
+    }
+    
+    public List<String> getInterceptors() {
+        if (interceptors == null) {
+            interceptors = new ArrayList<String>();
+        }
+        return interceptors;
+    }
+    
+    public void addInterceptor(String className) {
+        getInterceptors().add(className);
+    } 
+
+    public void addInterceptor(Class clazz) {
+        addInterceptor(clazz.getName());
+    } 
+
+    public List<String> getDecorators() {
+        if (decorators == null) {
+            decorators = new ArrayList<String>();
+        }
+        return decorators;
+    }
+
+    public void addDecorator(String className) {
+        getDecorators().add(className);
+    } 
+
+    public void addDecorator(Class clazz) {
+        addDecorator(clazz.getName());
+    } 
+
+    public List<String> getAlternativeClasses() {
+        return getAlternatives().getClasses();
+    }
+
+    public void addAlternativeClass(String className) {
+        getAlternativeClasses().add(className);
+    } 
+
+    public void addAlternativeClass(Class clazz) {
+        addAlternativeClass(clazz.getName());
+    } 
+
+    public List<String> getAlternativeStereotypes() {
+        return getAlternatives().getStereotypes();
+    }
+
+    public void addAlternativeStereotype(String className) {
+        getAlternativeStereotypes().add(className);
+    } 
+
+    public void addAlternativeStereotype(Class clazz) {
+        addAlternativeStereotype(clazz.getName());
+    } 
+    
+    /**
+     * Gets the value of the alternatives property.
+     *
+     * @return possible object is
+     *         {...@link Alternatives }
+     */
+    private Alternatives getAlternatives() {
+        if (alternatives == null) {
+            alternatives = new Alternatives();
+        }
+        return alternatives;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * <p/>
+     * <p>The following schema fragment specifies the expected content 
contained within this class.
+     * <p/>
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType";>
+     *       &lt;choice maxOccurs="unbounded" minOccurs="0">
+     *         &lt;element name="class" 
type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *         &lt;element name="stereotype" 
type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *       &lt;/choice>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+            "classes",
+            "stereotypes"
+    })
+    @XmlRootElement(name = "alternatives")
+    public static class Alternatives {
+
+        @XmlElement(name = "class")
+        protected List<String> classes;
+
+        @XmlElement(name = "stereotype")
+        protected List<String> stereotypes;
+
+        public List<String> getClasses() {
+            if (classes == null) {
+                classes = new ArrayList<String>();
+            }
+            return classes;
+        }
+
+        public List<String> getStereotypes() {
+            if (stereotypes == null) {
+                stereotypes = new ArrayList<String>();
+            }
+            return stereotypes;
+        }
+    }
+}

Propchange: 
openejb/branches/openejb-jcdi/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java?rev=966519&r1=966518&r2=966519&view=diff
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java
 (original)
+++ 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/java/org/apache/openejb/jee/JeeTest.java
 Thu Jul 22 07:06:39 2010
@@ -225,6 +225,10 @@ public class JeeTest extends TestCase {
         marshalAndUnmarshal(Connector.class, "connector-1.6-example.xml", 
null);
     }
 
+    public void testBeans10() throws Exception {
+        marshalAndUnmarshal(Beans.class, "beans-1.0-example.xml", null);
+    }
+
     public static <T> T marshalAndUnmarshal(Class<T> type, String 
sourceXmlFile, String expectedXmlFile) throws Exception {
         InputStream in = 
JeeTest.class.getClassLoader().getResourceAsStream(sourceXmlFile);
         T object = (T)JaxbJavaee.unmarshalJavaee(type, in);

Added: 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/resources/beans-1.0-example.xml
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-jcdi/container/openejb-jee/src/test/resources/beans-1.0-example.xml?rev=966519&view=auto
==============================================================================
--- 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/resources/beans-1.0-example.xml
 (added)
+++ 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/resources/beans-1.0-example.xml
 Thu Jul 22 07:06:39 2010
@@ -0,0 +1,20 @@
+<beans>
+  <interceptors>
+    <class>org.foo.One</class>
+    <class>org.foo.Two</class>
+    <class>org.foo.Three</class>
+  </interceptors>
+  <decorators>
+    <class>org.foo.Four</class>
+    <class>org.foo.Five</class>
+    <class>org.foo.Six</class>
+  </decorators>
+  <alternatives>
+    <class>org.foo.Seven</class>
+    <class>org.foo.Eight</class>
+    <class>org.foo.Nine</class>
+    <stereotype>org.foo.Ten</stereotype>
+    <stereotype>org.foo.Eleven</stereotype>
+    <stereotype>org.foo.Twelve</stereotype>
+  </alternatives>
+</beans>
\ No newline at end of file

Propchange: 
openejb/branches/openejb-jcdi/container/openejb-jee/src/test/resources/beans-1.0-example.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to