You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2016/03/22 14:35:55 UTC
svn commit: r1736188 - in /aries/trunk/blueprint/blueprint-maven-plugin/src:
main/java/org/apache/aries/blueprint/plugin/model/
test/java/org/apache/aries/blueprint/plugin/
test/java/org/apache/aries/blueprint/plugin/model/
test/java/org/apache/aries/b...
Author: cschneider
Date: Tue Mar 22 13:35:54 2016
New Revision: 1736188
URL: http://svn.apache.org/viewvc?rev=1736188&view=rev
Log:
[ARIES-1508] Let beans created with annotation @Produces could be named with @Named
Added:
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java
Modified:
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java?rev=1736188&r1=1736187&r2=1736188&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java Tue Mar 22 13:35:54 2016
@@ -6,9 +6,9 @@
* 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
- *
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
* 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
@@ -18,6 +18,15 @@
*/
package org.apache.aries.blueprint.plugin.model;
+import org.ops4j.pax.cdi.api.OsgiService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.osgi.service.blueprint.container.Converter;
+
+import javax.enterprise.inject.Produces;
+import javax.inject.Named;
+import javax.inject.Singleton;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
@@ -25,14 +34,6 @@ import java.util.Collection;
import java.util.SortedSet;
import java.util.TreeSet;
-import javax.enterprise.inject.Produces;
-
-import org.ops4j.pax.cdi.api.OsgiService;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.blueprint.container.BlueprintContainer;
-import org.osgi.service.blueprint.container.Converter;
-
public class Context implements Matcher {
SortedSet<BeanRef> reg;
@@ -70,9 +71,19 @@ public class Context implements Matcher
private void addProducedBeans(Class<?> clazz, BeanRef factoryBean) {
for (Method method : clazz.getMethods()) {
Produces produces = method.getAnnotation(Produces.class);
+ Named named = method.getAnnotation(Named.class);
+ Singleton singleton = method.getAnnotation(Singleton.class);
if (produces != null) {
Class<?> producedClass = method.getReturnType();
- ProducedBean producedBean = new ProducedBean(producedClass, factoryBean, method.getName());
+ ProducedBean producedBean;
+ if (named != null) {
+ producedBean = new ProducedBean(producedClass, named.value(), factoryBean, method.getName());
+ } else {
+ producedBean = new ProducedBean(producedClass, factoryBean, method.getName());
+ }
+ if (singleton != null) {
+ producedBean.setSingleton();
+ }
reg.add(producedBean);
}
}
@@ -108,7 +119,7 @@ public class Context implements Matcher
TreeSet<Bean> beans = new TreeSet<Bean>();
for (BeanRef ref : reg) {
if (ref instanceof Bean) {
- beans.add((Bean)ref);
+ beans.add((Bean) ref);
}
}
return beans;
@@ -118,7 +129,7 @@ public class Context implements Matcher
TreeSet<OsgiServiceRef> serviceRefs = new TreeSet<OsgiServiceRef>();
for (BeanRef ref : reg) {
if (ref instanceof OsgiServiceRef) {
- serviceRefs.add((OsgiServiceRef)ref);
+ serviceRefs.add((OsgiServiceRef) ref);
}
}
return serviceRefs;
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java?rev=1736188&r1=1736187&r2=1736188&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java Tue Mar 22 13:35:54 2016
@@ -4,11 +4,21 @@ package org.apache.aries.blueprint.plugi
public class ProducedBean extends Bean {
public String factoryMethod;
public BeanRef factoryBean;
-
+
public ProducedBean(Class<?> clazz, BeanRef factoryBean, String factoryMethod) {
super(clazz);
this.factoryBean = factoryBean;
this.factoryMethod = factoryMethod;
}
+ public ProducedBean(Class<?> clazz, String id, BeanRef factoryBean, String factoryMethod) {
+ super(clazz);
+ this.id = id;
+ this.factoryBean = factoryBean;
+ this.factoryMethod = factoryMethod;
+ }
+
+ public void setSingleton(){
+ this.isPrototype = false;
+ }
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java?rev=1736188&r1=1736187&r2=1736188&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java Tue Mar 22 13:35:54 2016
@@ -185,6 +185,24 @@ public class GeneratorTest {
assertEquals("(mode=123)", xpath.evaluate("@filter", ser2));
}
+ @Test
+ public void testProducesNamedBeans() throws Exception {
+ Node bean1 = getBeanById("produced1");
+ assertEquals("org.apache.aries.blueprint.plugin.test.MyProduced", xpath.evaluate("@class", bean1));
+ assertEquals("myFactoryNamedBean", xpath.evaluate("@factory-ref", bean1));
+ assertEquals("createBean1", xpath.evaluate("@factory-method", bean1));
+ assertEquals("prototype", xpath.evaluate("@scope", bean1));
+
+ Node bean2 = getBeanById("produced2");
+ assertEquals("org.apache.aries.blueprint.plugin.test.MyProduced", xpath.evaluate("@class", bean1));
+ assertEquals("myFactoryNamedBean", xpath.evaluate("@factory-ref", bean2));
+ assertEquals("createBean2", xpath.evaluate("@factory-method", bean2));
+ assertEquals("", xpath.evaluate("@scope", bean2));
+
+ Node myBean5 = getBeanById("myBean5");
+ assertEquals("produced2", xpath.evaluate("argument[8]/@ref", myBean5));
+ }
+
private static Document readToDocument(ByteArrayOutputStream os) throws ParserConfigurationException,
SAXException, IOException {
InputStream is = new ByteArrayInputStream(os.toByteArray());
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java?rev=1736188&r1=1736187&r2=1736188&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java Tue Mar 22 13:35:54 2016
@@ -166,7 +166,7 @@ public class BeanTest {
assertNull("There should be no destroyMethod", bean.destroyMethod);
assertTrue("There should be no persistenceUnit", bean.persistenceFields.isEmpty());
assertEquals(0, bean.properties.size());
- assertEquals(7, bean.constructorArguments.size());
+ assertEquals(8, bean.constructorArguments.size());
assertEquals("my2", bean.constructorArguments.get(0).getRef());
assertEquals("serviceA", bean.constructorArguments.get(1).getRef());
assertEquals("serviceB", bean.constructorArguments.get(2).getRef());
@@ -174,6 +174,7 @@ public class BeanTest {
assertEquals("ser1", bean.constructorArguments.get(4).getRef());
assertEquals("ser2", bean.constructorArguments.get(5).getRef());
assertEquals("serviceA", bean.constructorArguments.get(6).getRef());
+ assertEquals("produced2", bean.constructorArguments.get(7).getRef());
}
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java?rev=1736188&r1=1736187&r2=1736188&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean5.java Tue Mar 22 13:35:54 2016
@@ -49,7 +49,8 @@ public class MyBean5 {
@Value("100") int bla,
@OsgiService(filter = "myRef") @Named("ser1") ServiceC myReference,
@OsgiService(filter = "(mode=123)") @Named("ser2") ServiceC myReference2,
- @AnnotatedService ServiceA serviceAAnnotated) {
+ @AnnotatedService ServiceA serviceAAnnotated,
+ @Named("produced2") MyProduced myProduced) {
this.serviceA1 = serviceA1;
this.serviceA2 = serviceA2;
this.serviceB = serviceB;
Added: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java?rev=1736188&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java (added)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryNamedBean.java Tue Mar 22 13:35:54 2016
@@ -0,0 +1,22 @@
+package org.apache.aries.blueprint.plugin.test;
+
+import javax.enterprise.inject.Produces;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Singleton
+public class MyFactoryNamedBean {
+
+ @Produces
+ @Named("produced1")
+ public MyProduced createBean1() {
+ return new MyProduced("My message");
+ }
+
+ @Produces
+ @Named("produced2")
+ @Singleton
+ public MyProduced createBean2() {
+ return new MyProduced("My message");
+ }
+}