You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2012/10/13 20:26:35 UTC

svn commit: r1397919 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/newtests/events/observer/

Author: arne
Date: Sat Oct 13 18:26:35 2012
New Revision: 1397919

URL: http://svn.apache.org/viewvc?rev=1397919&view=rev
Log:
OWB-713 fixed overriding behavior for static methods

Added:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/StaticTestEvent.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanA.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanB.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/EventTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/Superclass.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java?rev=1397919&r1=1397918&r2=1397919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java Sat Oct 13 18:26:35 2012
@@ -419,7 +419,7 @@ public final class AnnotationUtil
      */
     public static boolean isMethodOverridden(Method method, Collection<Method> overridingCandidates)
     {
-        if (overridingCandidates.isEmpty() || Modifier.isPrivate(method.getModifiers()))
+        if (overridingCandidates.isEmpty() || Modifier.isPrivate(method.getModifiers()) || Modifier.isStatic(method.getModifiers()))
         {
             return false;
         }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanA.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanA.java?rev=1397919&r1=1397918&r2=1397919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanA.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanA.java Sat Oct 13 18:26:35 2012
@@ -19,15 +19,16 @@
 package org.apache.webbeans.newtests.events.observer;
 
 
-import java.io.Serializable;
-
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.event.Observes;
 
 @ApplicationScoped
-public class BeanA extends Superclass implements Serializable
+public class BeanA extends Superclass
 {
-    private static final long serialVersionUID = 821164664338581947L;
+
+    public static void observeTestEvent(@Observes StaticTestEvent testEvent) {
+        testEvent.addInvocation(BeanA.class.getSimpleName());
+    }
 
     private void observeTestEvent(@Observes PrivateTestEvent testEvent) {
         testEvent.addInvocation(getBeanName());

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanB.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanB.java?rev=1397919&r1=1397918&r2=1397919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanB.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/BeanB.java Sat Oct 13 18:26:35 2012
@@ -28,6 +28,10 @@ public class BeanB extends Superclass im
 {
     private static final long serialVersionUID = 821164664338581947L;
 
+    public static void observeTestEvent(StaticTestEvent testEvent) {
+        testEvent.addInvocation(BeanB.class.getSimpleName());
+    }
+
     private void observeTestEvent(PrivateTestEvent testEvent) {
         testEvent.addInvocation(getBeanName());
     }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/EventTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/EventTest.java?rev=1397919&r1=1397918&r2=1397919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/EventTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/EventTest.java Sat Oct 13 18:26:35 2012
@@ -94,4 +94,39 @@ public class EventTest extends AbstractU
         shutDownContainer();
 
     }
+    
+    @Test
+    public void testObserverOnStaticMethod() {
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(Superclass.class);
+        beanClasses.add(BeanA.class);
+        startContainer(beanClasses, null);
+
+        StaticTestEvent testEvent = new StaticTestEvent();
+        getBeanManager().fireEvent(testEvent);
+
+        Assert.assertEquals(2, testEvent.getCalledObservers().size());
+        Assert.assertTrue(testEvent.getCalledObservers().contains("BeanA"));
+        Assert.assertTrue(testEvent.getCalledObservers().contains("Superclass"));
+
+        shutDownContainer();
+
+    }
+    
+    @Test
+    public void testStaticMethodCannotBeOverridden() {
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(Superclass.class);
+        beanClasses.add(BeanB.class);
+        startContainer(beanClasses, null);
+
+        StaticTestEvent testEvent = new StaticTestEvent();
+        getBeanManager().fireEvent(testEvent);
+
+        Assert.assertEquals(1, testEvent.getCalledObservers().size());
+        Assert.assertEquals("Superclass", testEvent.getCalledObservers().iterator().next());
+
+        shutDownContainer();
+
+    }
 }

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/StaticTestEvent.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/StaticTestEvent.java?rev=1397919&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/StaticTestEvent.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/StaticTestEvent.java Sat Oct 13 18:26:35 2012
@@ -0,0 +1,37 @@
+/*
+ * 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.events.observer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StaticTestEvent
+{
+    private List<String> calledObserverNames = new ArrayList<String>();
+
+    public void addInvocation(String observerName)
+    {
+        this.calledObserverNames.add(observerName);
+    }
+
+    public List<String> getCalledObservers()
+    {
+        return calledObserverNames;
+    }
+}

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/Superclass.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/Superclass.java?rev=1397919&r1=1397918&r2=1397919&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/Superclass.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/events/observer/Superclass.java Sat Oct 13 18:26:35 2012
@@ -23,6 +23,10 @@ import javax.enterprise.event.Observes;
 public abstract class Superclass
 {
 
+    public static void observeTestEvent(@Observes StaticTestEvent testEvent) {
+        testEvent.addInvocation(Superclass.class.getSimpleName());
+    }
+
     private void observeTestEvent(@Observes PrivateTestEvent testEvent) {
         testEvent.addInvocation(getBeanName() + "[" + Superclass.class.getSimpleName() + "]");
     }