openwebbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bergm...@apache.org
Subject svn commit: r946307 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/decorator/ main/java/org/apache/webbeans/proxy/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/newtests/decorators/multiple/ test/java/org/...
Date Wed, 19 May 2010 17:49:58 GMT
Author: bergmark
Date: Wed May 19 17:49:58 2010
New Revision: 946307

URL: http://svn.apache.org/viewvc?rev=946307&view=rev
Log:
[OWB-231] Initial pass at Abstract Decorator support, along with unit test

Added:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/AbstractDecoratorMethodHandler.java
  (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator3.java
  (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator4.java
  (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.java
  (with props)
    openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.xml
  (with props)
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/AbstractDecoratorMethodHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/AbstractDecoratorMethodHandler.java?rev=946307&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/AbstractDecoratorMethodHandler.java
(added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/AbstractDecoratorMethodHandler.java
Wed May 19 17:49:58 2010
@@ -0,0 +1,36 @@
+/*
+ * 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.webbeans.decorator;
+
+import java.lang.reflect.Method;
+
+import javassist.util.proxy.MethodHandler;
+
+public class AbstractDecoratorMethodHandler implements MethodHandler
+{
+  
+    @Override
+    public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws
Throwable
+    {
+        //Don't attempt to call it if the method doesn't exist
+        if(proceed != null)       
+        {
+            return proceed.invoke(self,args);
+        }
+        
+        //Throw the exception so the DelegateHandler will continue the loop
+        throw new NoSuchMethodException();
+    }
+
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/AbstractDecoratorMethodHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java?rev=946307&r1=946306&r2=946307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/DelegateHandler.java
Wed May 19 17:49:58 2010
@@ -96,6 +96,12 @@ public class DelegateHandler implements 
             }
             catch (InvocationTargetException e)
             {
+                //If the wrapped exception tells us the method didn't exist, continue
+                if(e.getCause() instanceof NoSuchMethodException)
+                {
+                    continue;
+                }
+                
                 logger.error(OWBLogConst.ERROR_0012, e.getTargetException(), method.getName(),
decorator.getClass().getName());
 
                 throw new WebBeansException(e);

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java?rev=946307&r1=946306&r2=946307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
Wed May 19 17:49:58 2010
@@ -32,9 +32,10 @@ import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.Decorator;
 
 import org.apache.webbeans.annotation.WebBeansAnnotation;
-import org.apache.webbeans.component.OwbBean;
 import org.apache.webbeans.component.InjectionTargetBean;
+import org.apache.webbeans.component.OwbBean;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
+import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
 import org.apache.webbeans.decorator.WebBeansDecorator;
 import org.apache.webbeans.intercept.ApplicationScopedBeanIntereptorHandler;
 import org.apache.webbeans.intercept.DependentScopedBeanInterceptorHandler;
@@ -94,6 +95,24 @@ public final class JavassistProxyFactory
         return clazz;
     }
     
+    public static Class<?> createAbstractDecoratorProxyClass(OwbBean<?> bean){
+        //Will only get called once while defining the bean, so no need to cache
+        Class<?> clazz = null;
+        try
+        {
+            ProxyFactory fact = createProxyFactory(bean);
+            AbstractDecoratorMethodHandler handler = new AbstractDecoratorMethodHandler();
+            fact.setHandler(handler);
+            clazz = SecurityUtil.doPrivilegedCreateClass(fact);
+        }
+        catch(Exception e)
+        {
+            WebBeansUtil.throwRuntimeExceptions(e);
+        }
+        return clazz;
+        
+    }
+    
     public static Object createNormalScopedBeanProxy(OwbBean<?> bean, CreationalContext<?>
creationalContext)
     {
         Object result = null;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java?rev=946307&r1=946306&r2=946307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
Wed May 19 17:49:58 2010
@@ -49,6 +49,7 @@ import javax.enterprise.inject.spi.Annot
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.ProcessInjectionTarget;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.interceptor.Interceptor;
@@ -64,6 +65,7 @@ import org.apache.webbeans.component.Pro
 import org.apache.webbeans.component.ResourceBean;
 import org.apache.webbeans.component.WebBeansType;
 import org.apache.webbeans.component.creation.AnnotatedTypeBeanCreatorImpl;
+import org.apache.webbeans.component.creation.ManagedBeanCreatorImpl;
 import org.apache.webbeans.config.DefinitionUtil;
 import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.config.OpenWebBeansConfiguration;
@@ -77,6 +79,7 @@ import org.apache.webbeans.intercept.Int
 import org.apache.webbeans.intercept.InterceptorsManager;
 import org.apache.webbeans.intercept.WebBeansInterceptorConfig;
 import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.proxy.JavassistProxyFactory;
 import org.apache.webbeans.spi.api.ResourceReference;
 
 public final class WebBeansAnnotatedTypeUtil
@@ -750,6 +753,15 @@ public final class WebBeansAnnotatedType
         }
     }
     
+    public static <T> ManagedBean<T> defineAbstractDecorator(AnnotatedType<T>
type)
+    {
+        
+        ManagedBean<T> bean = defineManagedBean(type);
+        Class clazz = JavassistProxyFactory.createAbstractDecoratorProxyClass(bean);
+        bean.setConstructor(WebBeansUtil.defineConstructor(clazz));
+        return bean;
+    }
+    
     public static <T> ManagedBean<T>  defineManagedBean(AnnotatedType<T>
type)
     {
         Class<T> clazz = type.getJavaClass();
@@ -870,7 +882,14 @@ public final class WebBeansAnnotatedType
                 
             }
             
-            delegate = defineManagedBean(annotatedType);
+            if(Modifier.isAbstract(annotatedType.getJavaClass().getModifiers()))
+            {
+                delegate = defineAbstractDecorator(annotatedType);
+            } 
+            else 
+            {
+                delegate = defineManagedBean(annotatedType);
+            }
 
             if (delegate != null)
             {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=946307&r1=946306&r2=946307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Wed May 19 17:49:58 2010
@@ -30,13 +30,13 @@ import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.Comparator;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -100,11 +100,9 @@ import org.apache.webbeans.annotation.De
 import org.apache.webbeans.annotation.DependentScopeLiteral;
 import org.apache.webbeans.annotation.NewLiteral;
 import org.apache.webbeans.annotation.RequestedScopeLiteral;
-import org.apache.webbeans.component.AbstractOwbBean;
 import org.apache.webbeans.component.AbstractInjectionTargetBean;
+import org.apache.webbeans.component.AbstractOwbBean;
 import org.apache.webbeans.component.AbstractProducerBean;
-import org.apache.webbeans.component.InjectionTargetWrapper;
-import org.apache.webbeans.component.OwbBean;
 import org.apache.webbeans.component.BeanManagerBean;
 import org.apache.webbeans.component.ConversationBean;
 import org.apache.webbeans.component.EnterpriseBeanMarker;
@@ -112,9 +110,11 @@ import org.apache.webbeans.component.Eve
 import org.apache.webbeans.component.ExtensionBean;
 import org.apache.webbeans.component.InjectionPointBean;
 import org.apache.webbeans.component.InjectionTargetBean;
+import org.apache.webbeans.component.InjectionTargetWrapper;
 import org.apache.webbeans.component.InstanceBean;
 import org.apache.webbeans.component.ManagedBean;
 import org.apache.webbeans.component.NewBean;
+import org.apache.webbeans.component.OwbBean;
 import org.apache.webbeans.component.ProducerFieldBean;
 import org.apache.webbeans.component.ProducerMethodBean;
 import org.apache.webbeans.component.ResourceBean;
@@ -161,6 +161,7 @@ import org.apache.webbeans.portable.even
 import org.apache.webbeans.portable.events.generics.GProcessProducerField;
 import org.apache.webbeans.portable.events.generics.GProcessProducerMethod;
 import org.apache.webbeans.portable.events.generics.GProcessSessionBean;
+import org.apache.webbeans.proxy.JavassistProxyFactory;
 import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
 import org.apache.webbeans.spi.plugins.OpenWebBeansPlugin;
 
@@ -2205,7 +2206,15 @@ public final class WebBeansUtil
             ManagedBean<T> delegate = null;
 
             DecoratorUtil.checkDecoratorConditions(clazz);
-            delegate = defineManagedBean(creator, processInjectionTargetEvent);
+            
+            if(Modifier.isAbstract(clazz.getModifiers()))
+            {
+                delegate = defineAbstractDecorator(creator, processInjectionTargetEvent);
+            } 
+            else
+            {
+                delegate = defineManagedBean(creator, processInjectionTargetEvent);
+            }
 
             if (delegate != null)
             {
@@ -2787,6 +2796,15 @@ public final class WebBeansUtil
         return null;
     }
     
+    public static <T> ManagedBean<T> defineAbstractDecorator(ManagedBeanCreatorImpl<T>
managedBeanCreator,ProcessInjectionTarget<T> processInjectionTargetEvent)
+    {
+        
+        ManagedBean<T> bean = defineManagedBean(managedBeanCreator, processInjectionTargetEvent);
+        Class clazz = JavassistProxyFactory.createAbstractDecoratorProxyClass(bean);
+        bean.setConstructor(WebBeansUtil.defineConstructor(clazz));
+        return bean;
+    }
+    
  
     public static <T> ManagedBean<T> defineManagedBean(ManagedBeanCreatorImpl<T>
managedBeanCreator,ProcessInjectionTarget<T> processInjectionTargetEvent)
     {

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator3.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator3.java?rev=946307&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator3.java
(added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator3.java
Wed May 19 17:49:58 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.webbeans.newtests.decorators.multiple;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Default;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+
+@Decorator
+public abstract class Decorator3 implements IOutputProvider
+{
+    @Inject @Delegate @Default @Any @Named IOutputProvider op;
+    @Inject @Default RequestStringBuilder rsb;
+
+    public String getOutput()
+    {
+        rsb.addOutput("Decorator3\n");
+        return op.getOutput();
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator3.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator4.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator4.java?rev=946307&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator4.java
(added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator4.java
Wed May 19 17:49:58 2010
@@ -0,0 +1,30 @@
+/*
+ * 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.webbeans.newtests.decorators.multiple;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Default;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+
+@Decorator
+public abstract class Decorator4 implements IOutputProvider
+{
+    @Inject @Delegate @Default @Any @Named IOutputProvider op;
+    @Inject @Default RequestStringBuilder rsb;
+
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator4.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.java?rev=946307&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.java
(added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.java
Wed May 19 17:49:58 2010
@@ -0,0 +1,80 @@
+/*
+ * 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.webbeans.newtests.decorators.tests;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.util.AnnotationLiteral;
+
+import junit.framework.Assert;
+
+import org.apache.webbeans.newtests.AbstractUnitTest;
+import org.apache.webbeans.newtests.decorators.multiple.Decorator1;
+import org.apache.webbeans.newtests.decorators.multiple.Decorator2;
+import org.apache.webbeans.newtests.decorators.multiple.Decorator3;
+import org.apache.webbeans.newtests.decorators.multiple.Decorator4;
+import org.apache.webbeans.newtests.decorators.multiple.IOutputProvider;
+import org.apache.webbeans.newtests.decorators.multiple.OutputProvider;
+import org.apache.webbeans.newtests.decorators.multiple.RequestStringBuilder;
+import org.junit.Test;
+
+public class AbstractDecoratorTest extends AbstractUnitTest
+{
+    public static final String PACKAGE_NAME = MultipleDecoratorStackTests.class.getPackage().getName();
+
+    @Test
+    public void testDecoratorStackWithAbstractAtEnd()
+    {
+        Collection<Class<?>> classes = new ArrayList<Class<?>>();
+        classes.add(Decorator1.class);
+        classes.add(Decorator2.class);
+        
+        //Abstract Decorator with a single method, at the end of the execution order
+        classes.add(Decorator3.class);
+        
+        //Abstract Decorator with no methods, in the middle of the execution order
+        classes.add(Decorator4.class);
+        
+        classes.add(IOutputProvider.class);
+        classes.add(OutputProvider.class);
+        classes.add(RequestStringBuilder.class);
+
+        Collection<URL> xmls = new ArrayList<URL>();
+        xmls.add(getXMLUrl(PACKAGE_NAME, "AbstractDecoratorTest"));
+
+        startContainer(classes, xmls);
+
+        Bean<?> bean = getBeanManager().getBeans(OutputProvider.class, new AnnotationLiteral<Default>()
+        {
+        }).iterator().next();
+        Object instance = getBeanManager().getReference(bean, OutputProvider.class, getBeanManager().createCreationalContext(bean));
+
+        OutputProvider outputProvider = (OutputProvider) instance;
+
+        Assert.assertTrue(outputProvider != null);
+
+        String result = outputProvider.getOutput();
+        System.out.println(result);
+        // Verify that the Decorators were called in order, and in a stack, including the
Abstract Decorator 3
+        Assert.assertTrue(result.equalsIgnoreCase("Decorator1\nDecorator2\nDecorator3\nOutputProvider\n"));
+        
+        String hijackedStack = outputProvider.trace();
+        // Verify that the a method change in Decorator2 from trace->otherMethod results
in the right stack
+        Assert.assertEquals("Decorator1/trace,Decorator2/trace,delegate/otherMethod", hijackedStack);
  
+    }
+}
\ No newline at end of file

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.xml?rev=946307&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.xml
(added)
+++ openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.xml
Wed May 19 17:49:58 2010
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<beans>
+   <decorators>
+      <class>org.apache.webbeans.newtests.decorators.multiple.Decorator1</class>
+      <class>org.apache.webbeans.newtests.decorators.multiple.Decorator4</class>
+      <class>org.apache.webbeans.newtests.decorators.multiple.Decorator2</class>
+      <class>org.apache.webbeans.newtests.decorators.multiple.Decorator3</class>
+   </decorators>
+</beans>
\ No newline at end of file

Propchange: openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/newtests/decorators/tests/AbstractDecoratorTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message