You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2017/05/30 19:31:17 UTC

svn commit: r1796916 - in /openwebbeans/trunk: webbeans-impl/src/main/java/org/apache/webbeans/component/ webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ webbeans-impl/src/main/java/org/apache/webbeans/config/ webbeans-impl/src/main...

Author: struberg
Date: Tue May 30 19:31:17 2017
New Revision: 1796916

URL: http://svn.apache.org/viewvc?rev=1796916&view=rev
Log:
OWB-1186 implement ignoreFinalMethods() to allow classes to get proxied 

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-tck/standalone-suite.xml

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java Tue May 30 19:31:17 2017
@@ -422,4 +422,5 @@ public abstract class AbstractOwbBean<T>
     {
         return super.hashCode();
     }
+
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java Tue May 30 19:31:17 2017
@@ -42,11 +42,12 @@ public class ManagedBeanBuilder<T, M ext
     protected final WebBeansContext webBeansContext;
     protected final AnnotatedType<T> annotatedType;
     protected final BeanAttributes<T> beanAttributes;
+    protected final boolean ignoreFinalMethods;
 
     /**
      * Creates a new creator.
      */
-    public ManagedBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributes<T> beanAttributes)
+    public ManagedBeanBuilder(WebBeansContext webBeansContext, AnnotatedType<T> annotatedType, BeanAttributes<T> beanAttributes, boolean ignoreFinalMethods)
     {
         Asserts.assertNotNull(webBeansContext, Asserts.PARAM_NAME_WEBBEANSCONTEXT);
         Asserts.assertNotNull(annotatedType, "annotated type");
@@ -54,6 +55,7 @@ public class ManagedBeanBuilder<T, M ext
         this.webBeansContext = webBeansContext;
         this.annotatedType = annotatedType;
         this.beanAttributes = beanAttributes;
+        this.ignoreFinalMethods = ignoreFinalMethods;
     }
 
     /**
@@ -67,7 +69,7 @@ public class ManagedBeanBuilder<T, M ext
         WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());
         webBeansContext.getWebBeansUtil().validateBeanInjection(bean);
 
-        final UnproxyableResolutionException lazyException = webBeansContext.getDeploymentValidationService().validateProxyable(bean);
+        final UnproxyableResolutionException lazyException = webBeansContext.getDeploymentValidationService().validateProxyable(bean, ignoreFinalMethods);
         if (lazyException == null)
         {
             return bean;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java Tue May 30 19:31:17 2017
@@ -26,7 +26,6 @@ import java.util.Set;
 import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.spi.AnnotatedField;
 import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.BeanAttributes;
 import javax.inject.Named;
 
 import org.apache.webbeans.component.InjectionTargetBean;
@@ -34,6 +33,7 @@ import org.apache.webbeans.component.Pro
 import org.apache.webbeans.component.ResourceBean;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.portable.events.ProcessBeanAttributesImpl;
 import org.apache.webbeans.spi.api.ResourceReference;
 import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.webbeans.util.Asserts;
@@ -91,11 +91,11 @@ public class ProducerFieldBeansBuilder<T
                         throw new WebBeansConfigurationException("Resource producer annotated field : " + annotatedField + " can not define EL name");
                     }
 
-                    final BeanAttributes<T> beanAttributes = fireProcessBeanAttributes(annotatedField);
-                    if (beanAttributes != null)
+                    final ProcessBeanAttributesImpl<T> processBeanAttributes = fireProcessBeanAttributes(annotatedField);
+                    if (processBeanAttributes != null)
                     {
                         ResourceBeanBuilder<T, Annotation> resourceBeanCreator
-                                = new ResourceBeanBuilder<T, Annotation>(bean, resourceRef, annotatedField, beanAttributes);
+                                = new ResourceBeanBuilder<T, Annotation>(bean, resourceRef, annotatedField, processBeanAttributes.getAttributes());
                         ResourceBean<T, Annotation> resourceBean = resourceBeanCreator.getBean();
                         resourceBean.setProducerField(field);
                         producerBeans.add(resourceBean);
@@ -104,14 +104,13 @@ public class ProducerFieldBeansBuilder<T
                 }
                 else
                 {
-                    BeanAttributes<T> beanAttributes = fireProcessBeanAttributes(annotatedField);
+                    ProcessBeanAttributesImpl<T> processBeanAttributes = fireProcessBeanAttributes(annotatedField);
 
                     ProducerFieldBeanBuilder<T, ProducerFieldBean<T>> producerFieldBeanCreator
-                        = new ProducerFieldBeanBuilder<T, ProducerFieldBean<T>>(bean, annotatedField, beanAttributes);
+                        = new ProducerFieldBeanBuilder<T, ProducerFieldBean<T>>(bean, annotatedField, processBeanAttributes.getAttributes());
                     ProducerFieldBean<T> producerFieldBean = producerFieldBeanCreator.getBean();
 
-                    //X TODO validateProxyable returns the exception, throw the returned exception??
-                    webBeansContext.getDeploymentValidationService().validateProxyable(producerFieldBean);
+                    webBeansContext.getDeploymentValidationService().validateProxyable(producerFieldBean, processBeanAttributes.isIgnoreFinalMethods());
                     producerFieldBeanCreator.validate();
 
                     producerFieldBean.setProducerField(field);
@@ -128,7 +127,7 @@ public class ProducerFieldBeansBuilder<T
     }
 
 
-    private BeanAttributes<T> fireProcessBeanAttributes(AnnotatedField<? super T> annotatedField)
+    private ProcessBeanAttributesImpl<T> fireProcessBeanAttributes(AnnotatedField<? super T> annotatedField)
     {
         return webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(
                 annotatedField, annotatedField.getJavaMember().getType(),

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java Tue May 30 19:31:17 2017
@@ -23,6 +23,7 @@ import org.apache.webbeans.component.Pro
 import org.apache.webbeans.component.ProducerMethodBean;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.portable.events.ProcessBeanAttributesImpl;
 import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.webbeans.util.Asserts;
 import org.apache.webbeans.util.WebBeansUtil;
@@ -33,7 +34,6 @@ import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.Specializes;
 import javax.enterprise.inject.spi.AnnotatedMethod;
 import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.BeanAttributes;
 import javax.inject.Inject;
 import java.util.Collection;
 import java.util.HashSet;
@@ -88,17 +88,17 @@ public class ProducerMethodBeansBuilder<
                 }
 
                 final AnnotatedMethod<T> method = (AnnotatedMethod<T>) annotatedMethod;
-                final BeanAttributes<T> beanAttributes = webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(
+                final ProcessBeanAttributesImpl<T> processBeanAttributes = webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(
                         annotatedMethod, annotatedMethod.getJavaMember().getReturnType(),
                         BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(method).build());
-                if (beanAttributes != null)
+                if (processBeanAttributes != null)
                 {
-                    ProducerMethodBeanBuilder<T> producerMethodBeanCreator = new ProducerMethodBeanBuilder<T>(bean, annotatedMethod, beanAttributes);
+                    ProducerMethodBeanBuilder<T> producerMethodBeanCreator = new ProducerMethodBeanBuilder<T>(bean, annotatedMethod, processBeanAttributes.getAttributes());
 
                     ProducerMethodBean<T> producerMethodBean = producerMethodBeanCreator.getBean();
 
                     //X TODO validateProxyable returns the exception, throw the returned exception??
-                    webBeansContext.getDeploymentValidationService().validateProxyable(producerMethodBean);
+                    webBeansContext.getDeploymentValidationService().validateProxyable(producerMethodBean, processBeanAttributes.isIgnoreFinalMethods());
                     producerMethodBeanCreator.validate();
 
                     if(specialize)

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Tue May 30 19:31:17 2017
@@ -64,6 +64,7 @@ import org.apache.webbeans.logger.WebBea
 import org.apache.webbeans.portable.AbstractProducer;
 import org.apache.webbeans.portable.AnnotatedElementFactory;
 import org.apache.webbeans.portable.BaseProducerProducer;
+import org.apache.webbeans.portable.events.ProcessBeanAttributesImpl;
 import org.apache.webbeans.portable.events.ProcessBeanImpl;
 import org.apache.webbeans.portable.events.ProcessSyntheticAnnotatedTypeImpl;
 import org.apache.webbeans.portable.events.discovery.AfterBeanDiscoveryImpl;
@@ -390,10 +391,11 @@ public class BeansDeployer
                         final BeanAttributesImpl tBeanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(at, onlyScopedBeans).build();
                         if (tBeanAttributes != null)
                         {
-                            final BeanAttributes<?> beanAttributes = webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(at, at.getJavaClass(), tBeanAttributes);
-                            if (beanAttributes != null)
+                            final ProcessBeanAttributesImpl<?> processBeanAttributes
+                                = webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(at, at.getJavaClass(), tBeanAttributes);
+                            if (processBeanAttributes != null)
                             {
-                                bdaBeanAttributes.put(at, new ExtendedBeanAttributes(beanAttributes, isEjb));
+                                bdaBeanAttributes.put(at, new ExtendedBeanAttributes(processBeanAttributes.getAttributes(), isEjb, processBeanAttributes.isIgnoreFinalMethods()));
                             }
                         }
                     }
@@ -1304,7 +1306,7 @@ public class BeansDeployer
                 if((ClassUtil.isConcrete(beanClass) || WebBeansUtil.isDecorator(annotatedType))
                         && isValidManagedBean(annotatedType))
                 {
-                    defineManagedBean(annotatedType, annotatedTypeData.beanAttributes, annotatedTypes);
+                    defineManagedBean(annotatedType, annotatedTypeData, annotatedTypes);
                 }
             }
             catch (NoClassDefFoundError ncdfe)
@@ -1633,10 +1635,13 @@ public class BeansDeployer
 
     /**
      * Defines and configures managed bean.
-     * @param <T> type info
      */
-    protected <T> void defineManagedBean(AnnotatedType<T> annotatedType, BeanAttributes<T> attributes, Map<AnnotatedType<?>, ExtendedBeanAttributes<?>> annotatedTypes)
-    {   
+    protected <T> void defineManagedBean(AnnotatedType<T> annotatedType,
+                                         ExtendedBeanAttributes extendedBeanAttributes,
+                                         Map<AnnotatedType<?>, ExtendedBeanAttributes<?>> annotatedTypes)
+    {
+        BeanAttributes attributes = extendedBeanAttributes.beanAttributes;
+
         //Fires ProcessInjectionTarget event for Java EE components instances
         //That supports injections but not managed beans
         Class beanClass = annotatedType.getJavaClass();
@@ -1652,7 +1657,8 @@ public class BeansDeployer
         }
 
         {
-            ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, annotatedType, attributes);
+            ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator
+                = new ManagedBeanBuilder<>(webBeansContext, annotatedType, attributes, extendedBeanAttributes.ignoreFinalMethods);
 
             if(WebBeansUtil.isDecorator(annotatedType))
             {
@@ -1820,11 +1826,13 @@ public class BeansDeployer
     {
         private final BeanAttributes<T> beanAttributes;
         private final boolean isEjb;
+        private final boolean ignoreFinalMethods;
 
-        public ExtendedBeanAttributes(final BeanAttributes<T> beanAttributes, final boolean isEjb)
+        public ExtendedBeanAttributes(BeanAttributes<T> beanAttributes, boolean isEjb, boolean ignoreFinalMethods)
         {
             this.beanAttributes = beanAttributes;
             this.isEjb = isEjb;
+            this.ignoreFinalMethods = ignoreFinalMethods;
         }
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DeploymentValidationService.java Tue May 30 19:31:17 2017
@@ -70,7 +70,7 @@ public class DeploymentValidationService
      * @throws org.apache.webbeans.exception.WebBeansConfigurationException if bean is not proxied by the container
      * @return exception TCKs validate at runtime
      */
-    public UnproxyableResolutionException validateProxyable(OwbBean<?> bean)
+    public UnproxyableResolutionException validateProxyable(OwbBean<?> bean, boolean ignoreFinalMethods)
     {
         if (allowProxyingClasses == null)
         {
@@ -104,22 +104,24 @@ public class DeploymentValidationService
                         violationMessage.addLine(beanClass.getName(), " is a final class! CDI doesn't allow to proxy that.");
                     }
 
-                    String finalMethodName = hasNonPrivateFinalMethod(beanClass);
-                    if (finalMethodName != null)
+                    if (!ignoreFinalMethods)
                     {
-                        if (allowProxyingClasses.contains(beanClass.getName()))
+                        String finalMethodName = hasNonPrivateFinalMethod(beanClass);
+                        if (finalMethodName != null)
                         {
-                            logger.info(beanClass.getName() +  " has final method " + finalMethodName + ". CDI doesn't allow to proxy that." +
-                                " Continuing because the class is explicitly configured to be treated as proxyable." +
-                                " Final methods shall not get invoked on this proxy!");
-                        }
-                        else
-                        {
-                            violationMessage.addLine(beanClass.getName(), " has final method " + finalMethodName + " CDI doesn't allow to proxy that.");
+                            if (allowProxyingClasses.contains(beanClass.getName()))
+                            {
+                                logger.info(beanClass.getName() + " has final method " + finalMethodName + ". CDI doesn't allow to proxy that." +
+                                    " Continuing because the class is explicitly configured to be treated as proxyable." +
+                                    " Final methods shall not get invoked on this proxy!");
+                            }
+                            else
+                            {
+                                violationMessage.addLine(beanClass.getName(), " has final method " + finalMethodName + " CDI doesn't allow to proxy that.");
+                            }
                         }
                     }
 
-
                     Constructor<?> cons = webBeansContext.getWebBeansUtil().getNoArgConstructor(beanClass);
                     if (cons == null)
                     {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java Tue May 30 19:31:17 2017
@@ -29,6 +29,7 @@ public class ProcessBeanAttributesImpl<T
     private BeanAttributes<T> attributes;
     private boolean veto = false;
     private Throwable definitionError = null;
+    private boolean ignoreFinalMethods = false;
 
     public ProcessBeanAttributesImpl(final Annotated annotated, final BeanAttributes<T> attributes)
     {
@@ -71,11 +72,10 @@ public class ProcessBeanAttributesImpl<T
         definitionError = throwable;
     }
 
-    //X TODO OWB-1182 CDI 2.0
     @Override
     public void ignoreFinalMethods()
     {
-        throw new UnsupportedOperationException("CDI 2.0 not yet imlemented");
+        ignoreFinalMethods = true;
     }
 
     //X TODO OWB-1182 CDI 2.0
@@ -95,6 +95,11 @@ public class ProcessBeanAttributesImpl<T
         return veto;
     }
 
+    public boolean isIgnoreFinalMethods()
+    {
+        return ignoreFinalMethods;
+    }
+
     public Throwable getDefinitionError()
     {
         return definitionError;

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=1796916&r1=1796915&r2=1796916&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 Tue May 30 19:31:17 2017
@@ -424,7 +424,7 @@ public final class WebBeansUtil
         BeanAttributesImpl<T> defaultBeanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
         BeanAttributesImpl<T> newBeanAttributes = new BeanAttributesImpl<T>(defaultBeanAttributes.getTypes(), Collections.<Annotation>singleton(new NewLiteral(type)));
         // TODO replace this by InjectionPointBuilder
-        ManagedBeanBuilder<T, ManagedBean<T>> beanBuilder = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, annotatedType, newBeanAttributes);
+        ManagedBeanBuilder<T, ManagedBean<T>> beanBuilder = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, annotatedType, newBeanAttributes, false);
         NewManagedBean<T> newBean
             = new NewManagedBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, newBeanAttributes, type, beanBuilder.getBean().getInjectionPoints());
         return newBean;
@@ -1385,7 +1385,7 @@ public final class WebBeansUtil
     public <T> ManagedBean<T> defineManagedBeanWithoutFireEvents(AnnotatedType<T> type)
     {
         BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(type).build();
-        ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, type, beanAttributes);
+        ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<T, ManagedBean<T>>(webBeansContext, type, beanAttributes, false);
 
         //Check for Enabled via Alternative
         setInjectionTargetBeanEnableFlag(managedBeanCreator.getBean());
@@ -1817,7 +1817,7 @@ public final class WebBeansUtil
         return false;
     }
 
-    public <T> BeanAttributes<T> fireProcessBeanAttributes(final Annotated annotatedType, final Class<?> type, final BeanAttributes<T> ba)
+    public <T> ProcessBeanAttributesImpl<T> fireProcessBeanAttributes(final Annotated annotatedType, final Class<?> type, final BeanAttributes<T> ba)
     {
         // we don't use bm stack since it is actually quite useless
         final ProcessBeanAttributesImpl event = new GProcessBeanAttributes(type, annotatedType, ba);
@@ -1844,16 +1844,12 @@ public final class WebBeansUtil
                 throw new WebBeansConfigurationException(beanAttributes.getScope() + " is not a scope");
             }
         }
-        else
-        {
-            beanAttributes = ba;
-        }
         event.setStarted();
         if (event.isVeto())
         {
             return null;
         }
-        return beanAttributes;
+        return event;
     }
 
     public void validateBeanInjection(final Bean<?> bean)

Modified: openwebbeans/trunk/webbeans-tck/standalone-suite.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/standalone-suite.xml?rev=1796916&r1=1796915&r2=1796916&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/standalone-suite.xml (original)
+++ openwebbeans/trunk/webbeans-tck/standalone-suite.xml Tue May 30 19:31:17 2017
@@ -113,11 +113,15 @@
 
             <!-- https://issues.jboss.org/browse/CDITCK-582 -->
             <class name="org.jboss.cdi.tck.tests.deployment.discovery.BeanDiscoveryTest">
-                <methods>
-                    <exclude name=".*"/>
-                </methods>
+                <methods><exclude name=".*"/></methods>
             </class>
 
+            <!-- https://issues.jboss.org/browse/CDITCK-584 -->
+            <class name="org.jboss.cdi.tck.tests.implementation.simple.lifecycle.unproxyable.UnproxyableManagedBeanTest">
+                <methods><exclude name=".*"/></methods>
+            </class>
+
+
 
             <!--
              Tests broken in the CDI-1.2 TCK: