Author: cschneider
Date: Fri Mar 20 09:00:17 2015
New Revision: 1667955
URL: http://svn.apache.org/r1667955
Log:
[ARIES-1308] Support special blueprint beans like blueprintBundleContext
Added:
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
Modified:
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.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/model/ContextTest.java
Modified:
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
URL:
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java?rev=1667955&r1=1667954&r2=1667955&view=diff
==============================================================================
---
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
(original)
+++
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
Fri Mar 20 09:00:17 2015
@@ -74,7 +74,7 @@ public class Bean extends BeanRef {
public void resolve(Matcher matcher) {
Class<?> curClass = this.clazz;
- while (curClass != Object.class) {
+ while (curClass != null && curClass != Object.class) {
resolveProperties(matcher, curClass);
curClass = curClass.getSuperclass();
}
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=1667955&r1=1667954&r2=1667955&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
Fri Mar 20 09:00:17 2015
@@ -26,10 +26,12 @@ import java.util.SortedSet;
import java.util.TreeSet;
import javax.enterprise.inject.Produces;
-import javax.inject.Named;
import org.ops4j.pax.cdi.api.OsgiService;
-import org.springframework.beans.factory.annotation.Qualifier;
+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 {
@@ -92,6 +94,19 @@ public class Context implements Matcher
return bean;
}
}
+ if (template.clazz == BundleContext.class) {
+ return new BeanRef(BundleContext.class, "blueprintBundleContext");
+ }
+ if (template.clazz == Bundle.class) {
+ return new BeanRef(Bundle.class, "blueprintBundle");
+ }
+ if (template.clazz == BlueprintContainer.class) {
+ return new BeanRef(BlueprintContainer.class, "blueprintContainer");
+ }
+ if (template.clazz == Converter.class) {
+ return new BeanRef(Converter.class, "blueprintConverter");
+ }
+
return null;
}
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=1667955&r1=1667954&r2=1667955&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
Fri Mar 20 09:00:17 2015
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.apache.aries.blueprint.plugin.test.MyBean1;
import org.apache.aries.blueprint.plugin.test.MyBean3;
+import org.apache.aries.blueprint.plugin.test.MyBean4;
import org.apache.aries.blueprint.plugin.test.ServiceAImpl1;
import org.junit.Assert;
import org.junit.Test;
@@ -78,5 +79,14 @@ public class BeanTest {
assertNull("There should be no transaction definition",
bean.transactionDef);
assertEquals("There should be no properties", 0,
bean.properties.size());
}
+
+ @Test
+ public void testBlueprintBundleContext() {
+ Bean bean = new Bean(MyBean4.class);
+ bean.resolve(new Context());
+ Property bcProp = bean.properties.iterator().next();
+ assertEquals("bundleContext", bcProp.name);
+ assertEquals("blueprintBundleContext", bcProp.ref);
+ }
}
Modified:
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java?rev=1667955&r1=1667954&r2=1667955&view=diff
==============================================================================
---
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
(original)
+++
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
Fri Mar 20 09:00:17 2015
@@ -18,6 +18,8 @@
*/
package org.apache.aries.blueprint.plugin.model;
+import static org.junit.Assert.assertEquals;
+
import org.apache.aries.blueprint.plugin.test.MyBean3;
import org.apache.aries.blueprint.plugin.test.MyFactoryBean;
import org.apache.aries.blueprint.plugin.test.MyProduced;
@@ -25,6 +27,10 @@ import org.apache.aries.blueprint.plugin
import org.apache.aries.blueprint.plugin.test.ServiceReferences;
import org.junit.Assert;
import org.junit.Test;
+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 ContextTest {
@@ -51,6 +57,20 @@ public class ContextTest {
Assert.assertEquals("serviceB", matching.id);
}
+ private void assertSpecialRef(String expectedId, Class<?> clazz) {
+ Context context = new Context();
+ BeanRef ref = context.getMatching(new BeanRef(clazz));
+ assertEquals(expectedId, ref.id);
+ }
+
+ @Test
+ public void testSpecialRefs() {
+ assertSpecialRef("blueprintBundleContext", BundleContext.class);
+ assertSpecialRef("blueprintBundle", Bundle.class);
+ assertSpecialRef("blueprintContainer", BlueprintContainer.class);
+ assertSpecialRef("blueprintConverter", Converter.class);
+ }
+
@Test
public void testProduced() throws NoSuchFieldException, SecurityException
{
Context context = new Context(MyFactoryBean.class);
Added:
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
URL:
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java?rev=1667955&view=auto
==============================================================================
---
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
(added)
+++
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyBean4.java
Fri Mar 20 09:00:17 2015
@@ -0,0 +1,13 @@
+package org.apache.aries.blueprint.plugin.test;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.osgi.framework.BundleContext;
+
+@Singleton
+public class MyBean4 {
+
+ @Inject
+ BundleContext bundleContext;
+}