openwebbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From strub...@apache.org
Subject svn commit: r1806528 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/inject/instance/InstanceImpl.java test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java
Date Tue, 29 Aug 2017 07:52:59 GMT
Author: struberg
Date: Tue Aug 29 07:52:59 2017
New Revision: 1806528

URL: http://svn.apache.org/viewvc?rev=1806528&view=rev
Log:
OWB-1207 fix CDI.current() behaviour

Txs to John Ament (johndament) for the catch!


Added:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java
  (with props)
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java?rev=1806528&r1=1806527&r2=1806528&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
Tue Aug 29 07:52:59 2017
@@ -214,13 +214,15 @@ public class InstanceImpl<T> implements
         {
             sub = injectionClazz;
         }
-        Set<Annotation> mergedQualifiers = new HashSet<>(qualifierAnnotations);
-        for (Annotation qualifier : qualifiers)
+        if (qualifiers== null || qualifiers.length == 0)
         {
-            mergedQualifiers.add(qualifier);
+
         }
-        return new InstanceImpl<>(sub, injectionPoint, webBeansContext, parentCreationalContext,
-            mergedQualifiers.toArray(new Annotation[mergedQualifiers.size()]));
+        Annotation[] effectiveQualifiers = qualifiers != null && qualifiers.length
> 0
+            ? qualifiers
+            : qualifierAnnotations.toArray(new Annotation[qualifierAnnotations.size()]);
+
+        return new InstanceImpl<>(sub, injectionPoint, webBeansContext, parentCreationalContext,
effectiveQualifiers);
     }
 
     /**

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java?rev=1806528&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java
(added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java
Tue Aug 29 07:52:59 2017
@@ -0,0 +1,103 @@
+/*
+ * 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.test.instance;
+
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.CDI;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.inject.Qualifier;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.apache.webbeans.test.AbstractUnitTest;
+import org.junit.Assert;
+import org.junit.Test;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * As reported by John Ament in OWB-1207
+ *
+ * Instance x = CDI.current().select(SomeClass, someQualifiers);
+ * Instance y = CDI.current().select(SomeClass).select(someQualifiers)
+ * did behave different.
+ */
+public class CdiCurrentTest extends AbstractUnitTest
+{
+
+    @Test
+    public void testCdiCurrentSelect()
+    {
+        startContainer(SomeBean.class, OtherOwner.class);
+
+        {
+            SomeBean sb = CDI.current().select(SomeBean.class).select(new AnnotationLiteral<Qualifier1>()
+            {
+            }).get();
+            Assert.assertNotNull(sb);
+            Assert.assertEquals("other", sb.getX());
+        }
+
+        {
+            SomeBean sb = CDI.current().select(SomeBean.class, new AnnotationLiteral<Qualifier1>()
+            {
+            }).get();
+            Assert.assertNotNull(sb);
+            Assert.assertEquals("other", sb.getX());
+        }
+
+    }
+
+    public static class SomeBean
+    {
+        private String x = "default";
+
+        public String getX()
+        {
+            return this.x;
+        }
+
+        public void setX(String x)
+        {
+            this.x = x;
+        }
+    }
+
+    public static class OtherOwner
+    {
+        @Produces
+        @Qualifier1
+        public SomeBean createOther()
+        {
+            SomeBean sb = new SomeBean();
+            sb.setX("other");
+            return sb;
+        }
+    }
+
+    @Target(METHOD)
+    @Retention(RUNTIME)
+    @Qualifier
+    public @interface Qualifier1
+    {
+    }
+
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/instance/CdiCurrentTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message