You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by al...@apache.org on 2017/02/04 13:30:43 UTC

svn commit: r1781668 - in /aries/trunk/blueprint/plugin/blueprint-maven-plugin/src: main/java/org/apache/aries/blueprint/plugin/handlers/bean/ main/java/org/apache/aries/blueprint/plugin/model/ test/java/org/apache/aries/blueprint/plugin/model/

Author: alien11689
Date: Sat Feb  4 13:30:43 2017
New Revision: 1781668

URL: http://svn.apache.org/viewvc?rev=1781668&view=rev
Log:
[MAINTENANCE] Simplify bean model in BMP

Modified:
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/BeanHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BlueprintTest.java

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/BeanHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/BeanHandler.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/BeanHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/BeanHandler.java Sat Feb  4 13:30:43 2017
@@ -19,7 +19,7 @@ public class BeanHandler implements
         BeanAnnotationHandler<Bean> {
     @Override
     public boolean isSingleton() {
-        return true;
+        return false;
     }
 
     @Override
@@ -52,9 +52,7 @@ public class BeanHandler implements
         if (annotation.activation() != Activation.DEFAULT) {
             beanEnricher.addAttribute("activation", annotation.activation().name().toLowerCase());
         }
-        if (annotation.scope() != Scope.SINGLETON) {
-            beanEnricher.addAttribute("scope", "prototype");
-        }
+        beanEnricher.addAttribute("scope", annotation.scope() == Scope.SINGLETON ? "singleton" : "prototype");
         if (annotation.dependsOn().length > 0) {
             StringBuilder dependsOn = new StringBuilder();
             for (int i = 0; i < annotation.dependsOn().length; i++) {
@@ -65,10 +63,10 @@ public class BeanHandler implements
             }
             beanEnricher.addAttribute("depends-on", dependsOn.toString());
         }
-        if(!annotation.initMethod().isEmpty()){
+        if (!annotation.initMethod().isEmpty()) {
             beanEnricher.addAttribute("init-method", annotation.initMethod());
         }
-        if(!annotation.destroyMethod().isEmpty()){
+        if (!annotation.destroyMethod().isEmpty()) {
             beanEnricher.addAttribute("destroy-method", annotation.destroyMethod());
         }
     }

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java Sat Feb  4 13:30:43 2017
@@ -45,11 +45,13 @@ import java.util.TreeSet;
 import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findName;
 import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findValue;
 
-class Bean extends BeanRef implements BeanEnricher {
-    public SortedSet<Property> properties = new TreeSet<>();
+class Bean extends BeanRef implements BeanEnricher, XmlWriter {
+
+    static final String NS_EXT = "http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0";
+
+    SortedSet<Property> properties = new TreeSet<>();
     List<Argument> constructorArguments = new ArrayList<>();
-    public boolean isPrototype;
-    public final Map<String, String> attributes = new HashMap<>();
+    final Map<String, String> attributes = new HashMap<>();
     final Map<String, XmlWriter> beanContentWriters = new HashMap<>();
     protected final ContextEnricher contextEnricher;
 
@@ -58,7 +60,7 @@ class Bean extends BeanRef implements Be
         this.contextEnricher = contextEnricher;
         Introspector introspector = new Introspector(clazz);
 
-        this.isPrototype = isPrototype(clazz);
+        setScope(clazz);
 
         setQualifiersFromAnnotations(clazz.getAnnotations());
 
@@ -69,6 +71,10 @@ class Bean extends BeanRef implements Be
         handleMethodsAnnotation(introspector);
     }
 
+    private void setScope(Class<?> clazz) {
+        attributes.put("scope", findSingleton(clazz) ? "singleton" : "prototype");
+    }
+
     void resolve(BlueprintRegistry blueprintRegistry) {
         resolveArguments(blueprintRegistry);
         resolveFields(blueprintRegistry);
@@ -102,10 +108,6 @@ class Bean extends BeanRef implements Be
         }
     }
 
-    private boolean isPrototype(Class<?> clazz) {
-        return !findSingleton(clazz);
-    }
-
     private boolean findSingleton(Class clazz) {
         for (Class<?> singletonAnnotation : Handlers.SINGLETONS) {
             if (clazz.getAnnotation(singletonAnnotation) != null) {
@@ -153,7 +155,7 @@ class Bean extends BeanRef implements Be
         return false;
     }
 
-    protected void resolveArguments(BlueprintRegistry blueprintRegistry, Class[] parameterTypes, Annotation[][] parameterAnnotations) {
+    void resolveArguments(BlueprintRegistry blueprintRegistry, Class[] parameterTypes, Annotation[][] parameterAnnotations) {
         for (int i = 0; i < parameterTypes.length; ++i) {
             Annotation[] annotations = parameterAnnotations[i];
             String value = findValue(annotations);
@@ -195,19 +197,19 @@ class Bean extends BeanRef implements Be
         return clazz.getName();
     }
 
-    void writeProperties(XMLStreamWriter writer) throws XMLStreamException {
+    private void writeProperties(XMLStreamWriter writer) throws XMLStreamException {
         for (Property property : properties) {
             property.write(writer);
         }
     }
 
-    void writeArguments(XMLStreamWriter writer) throws XMLStreamException {
+    private void writeArguments(XMLStreamWriter writer) throws XMLStreamException {
         for (Argument argument : constructorArguments) {
             argument.write(writer);
         }
     }
 
-    boolean needFieldInjection() {
+    private boolean needFieldInjection() {
         for (Property property : properties) {
             if (property.isField) {
                 return true;
@@ -226,9 +228,37 @@ class Bean extends BeanRef implements Be
         beanContentWriters.put(id, blueprintWriter);
     }
 
-    void writeCustomContent(XMLStreamWriter writer) throws XMLStreamException {
+    private void writeCustomContent(XMLStreamWriter writer) throws XMLStreamException {
         for (XmlWriter xmlWriter : beanContentWriters.values()) {
             xmlWriter.write(writer);
         }
     }
+
+    private void writeAttributes(XMLStreamWriter writer) throws XMLStreamException {
+        for (Map.Entry<String, String> entry : attributes.entrySet()) {
+            if ("scope".equals(entry.getKey()) && "singleton".equals(entry.getValue())) {
+                continue;
+            }
+            writer.writeAttribute(entry.getKey(), entry.getValue());
+        }
+    }
+
+    @Override
+    public void write(XMLStreamWriter writer) throws XMLStreamException {
+        writeBeanStart(writer);
+        writeCustomContent(writer);
+        writeArguments(writer);
+        writeProperties(writer);
+        writer.writeEndElement();
+    }
+
+    private void writeBeanStart(XMLStreamWriter writer) throws XMLStreamException {
+        writer.writeStartElement("bean");
+        writer.writeAttribute("id", id);
+        writer.writeAttribute("class", clazz.getName());
+        if (needFieldInjection()) {
+            writer.writeAttribute("ext", NS_EXT, "field-injection", "true");
+        }
+        writeAttributes(writer);
+    }
 }

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java Sat Feb  4 13:30:43 2017
@@ -26,9 +26,7 @@ import org.apache.aries.blueprint.plugin
 import java.lang.reflect.Method;
 
 class BeanFromFactory extends Bean {
-    String factoryMethod;
-     BeanRef factoryBean;
-    private Method producingMethod;
+    private final Method producingMethod;
 
     BeanFromFactory(Class<?> clazz, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) {
         this(clazz, null, factoryBean, factoryMethod, contextEnricher);
@@ -39,10 +37,10 @@ class BeanFromFactory extends Bean {
         if (id != null) {
             this.id = id;
         }
-        this.factoryBean = factoryBean;
-        this.factoryMethod = factoryMethod.getName();
         this.producingMethod = factoryMethod;
         handleCustomBeanAnnotations();
+        attributes.put("factory-ref", factoryBean.id);
+        attributes.put("factory-method", producingMethod.getName());
     }
 
     private void handleCustomBeanAnnotations() {
@@ -55,7 +53,7 @@ class BeanFromFactory extends Bean {
     }
 
     void setSingleton() {
-        this.isPrototype = false;
+        attributes.put("scope", "singleton");
     }
 
     @Override

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java Sat Feb  4 13:30:43 2017
@@ -31,7 +31,7 @@ import java.util.Map;
 class BeanRef implements Comparable<BeanRef> {
     public String id;
     public Class<?> clazz;
-    Map<Class<? extends Annotation>, Annotation> qualifiers = new HashMap<>();
+    private Map<Class<? extends Annotation>, Annotation> qualifiers = new HashMap<>();
 
     /**
      * @param clazz interface or implementation class
@@ -60,7 +60,7 @@ class BeanRef implements Comparable<Bean
         setQualifiersFromAnnotations(annotations);
     }
 
-    protected void setQualifiersFromAnnotations(Annotation[] annotations) {
+    void setQualifiersFromAnnotations(Annotation[] annotations) {
         for (Annotation ann : annotations) {
             if (isQualifier(ann) != null) {
                 this.qualifiers.put(ann.annotationType(), ann);

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java Sat Feb  4 13:30:43 2017
@@ -35,9 +35,10 @@ import java.util.Map;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
+import static org.apache.aries.blueprint.plugin.model.Bean.NS_EXT;
+
 public class Blueprint implements BlueprintRegistry, ContextEnricher, XmlWriter {
     private static final String NS_BLUEPRINT = "http://www.osgi.org/xmlns/blueprint/v1.0.0";
-    private static final String NS_EXT = "http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0";
 
     private Registry registry = new Registry();
     private final Map<String, XmlWriter> blueprintWriters = new HashMap<>();
@@ -153,11 +154,7 @@ public class Blueprint implements Bluepr
         writeBlueprint(writer);
 
         for (Bean bean : getBeans()) {
-            writeBeanStart(writer, bean);
-            bean.writeCustomContent(writer);
-            bean.writeArguments(writer);
-            bean.writeProperties(writer);
-            writer.writeEndElement();
+            bean.write(writer);
         }
 
         for (XmlWriter bw : getBlueprintWriters().values()) {
@@ -176,31 +173,6 @@ public class Blueprint implements Bluepr
         }
     }
 
-    private void writeBeanStart(XMLStreamWriter writer, Bean bean) throws XMLStreamException {
-        writer.writeStartElement("bean");
-        writer.writeAttribute("id", bean.id);
-        writer.writeAttribute("class", bean.clazz.getName());
-        if (bean.needFieldInjection()) {
-            writer.writeAttribute("ext", NS_EXT, "field-injection", "true");
-        }
-        if (bean.isPrototype && !bean.attributes.containsKey("scope")) {
-            writer.writeAttribute("scope", "prototype");
-        }
-
-        Map<String, String> attributes = bean.attributes;
-        for (Map.Entry<String, String> entry : attributes.entrySet()) {
-            writer.writeAttribute(entry.getKey(), entry.getValue());
-        }
-        if (bean instanceof BeanFromFactory) {
-            writeFactory(writer, (BeanFromFactory) bean);
-        }
-    }
-
-    private void writeFactory(XMLStreamWriter writer, BeanFromFactory bean) throws XMLStreamException {
-        writer.writeAttribute("factory-ref", bean.factoryBean.id);
-        writer.writeAttribute("factory-method", bean.factoryMethod);
-    }
-
     public boolean shouldBeGenerated() {
         return !getBeans().isEmpty();
     }

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java Sat Feb  4 13:30:43 2017
@@ -18,16 +18,7 @@
  */
 package org.apache.aries.blueprint.plugin.model;
 
-import static junit.framework.Assert.assertFalse;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.inject.Named;
-
+import com.google.common.collect.Sets;
 import org.apache.aries.blueprint.plugin.BlueprintConfigurationImpl;
 import org.apache.aries.blueprint.plugin.bad.BadBean1;
 import org.apache.aries.blueprint.plugin.bad.BadBean2;
@@ -44,12 +35,19 @@ import org.apache.aries.blueprint.plugin
 import org.apache.aries.blueprint.plugin.test.ServiceAImpl1;
 import org.junit.Test;
 
-import com.google.common.collect.Sets;
+import javax.inject.Named;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import static junit.framework.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class BeanTest {
     private static final String NS_JPA1 = "http://aries.apache.org/xmlns/jpa/v1.1.0";
     private static final String NS_TX1 = "http://aries.apache.org/xmlns/transactions/v1.1.0";
-    
+
     private final Set<String> namespaces = new HashSet<String>(Arrays.asList(NS_JPA1, NS_TX1));
     private final BlueprintConfigurationImpl blueprintConfiguration = new BlueprintConfigurationImpl(namespaces, null, null);
     private final Blueprint blueprint = new Blueprint(blueprintConfiguration);
@@ -63,18 +61,18 @@ public class BeanTest {
         assertEquals(2, getPersistenceFields(bean).size());
         assertEquals(Sets.newHashSet("em", "emf"), getPersistenceFields(bean));
         assertEquals(1, bean.properties.size());
-        assertFalse(bean.isPrototype);
+        assertEquals("singleton", bean.attributes.get("scope"));
         Property prop = bean.properties.iterator().next();
         assertEquals("bean2", prop.name);
         assertEquals("serviceA", prop.ref);
 
         Set<TransactionalDef> expectedTxs = Sets.newHashSet(new TransactionalDef("*", "RequiresNew"),
-            new TransactionalDef("txNotSupported", "NotSupported"),
-            new TransactionalDef("txMandatory", "Mandatory"),
-            new TransactionalDef("txNever", "Never"),
-            new TransactionalDef("txRequired", "Required"),
-            new TransactionalDef("txOverridenWithRequiresNew", "RequiresNew"),
-            new TransactionalDef("txSupports", "Supports"));
+                new TransactionalDef("txNotSupported", "NotSupported"),
+                new TransactionalDef("txMandatory", "Mandatory"),
+                new TransactionalDef("txNever", "Never"),
+                new TransactionalDef("txRequired", "Required"),
+                new TransactionalDef("txOverridenWithRequiresNew", "RequiresNew"),
+                new TransactionalDef("txSupports", "Supports"));
         assertEquals(expectedTxs, getTransactionalDefs(bean));
     }
 
@@ -86,15 +84,15 @@ public class BeanTest {
         assertEquals("myBean3", bean.id); // Name derived from class name
         assertEquals("There should be no persistence fields", 0, getPersistenceFields(bean).size());
         assertEquals(5, bean.properties.size());
-        assertTrue(bean.isPrototype);
+        assertEquals("prototype", bean.attributes.get("scope"));
 
         Set<TransactionalDef> expectedTxs = Sets.newHashSet(new TransactionalDef("*", "RequiresNew"),
-            new TransactionalDef("txNotSupported", "NotSupported"),
-            new TransactionalDef("txMandatory", "Mandatory"),
-            new TransactionalDef("txNever", "Never"),
-            new TransactionalDef("txRequired", "Required"),
-            new TransactionalDef("txRequiresNew", "RequiresNew"),
-            new TransactionalDef("txSupports", "Supports"));
+                new TransactionalDef("txNotSupported", "NotSupported"),
+                new TransactionalDef("txMandatory", "Mandatory"),
+                new TransactionalDef("txNever", "Never"),
+                new TransactionalDef("txRequired", "Required"),
+                new TransactionalDef("txRequiresNew", "RequiresNew"),
+                new TransactionalDef("txSupports", "Supports"));
         assertEquals(expectedTxs, getTransactionalDefs(bean));
     }
 
@@ -105,10 +103,10 @@ public class BeanTest {
         String definedName = ServiceAImpl1.class.getAnnotation(Named.class).value();
         assertEquals("my1", definedName);
         assertEquals("Name should be defined using @Named", definedName, bean.id);
-        assertEquals("There should be no persistence fields", 0,getPersistenceFields(bean).size());
+        assertEquals("There should be no persistence fields", 0, getPersistenceFields(bean).size());
         assertTrue("There should be no transaction definition", getTransactionalDefs(bean).isEmpty());
         assertEquals("There should be no properties", 0, bean.properties.size());
-        assertTrue(bean.isPrototype);
+        assertEquals("prototype", bean.attributes.get("scope"));
     }
 
     @Test
@@ -118,7 +116,7 @@ public class BeanTest {
         Property bcProp = bean.properties.iterator().next();
         assertEquals("bundleContext", bcProp.name);
         assertEquals("blueprintBundleContext", bcProp.ref);
-        assertFalse(bean.isPrototype);
+        assertEquals("singleton", bean.attributes.get("scope"));
 
         Set<TransactionalDef> expectedTxs = Sets.newHashSet(new TransactionalDef("txWithoutClassAnnotation", "Supports"));
         assertEquals(expectedTxs, getTransactionalDefs(bean));
@@ -200,7 +198,7 @@ public class BeanTest {
         assertEquals("serviceA", bean.constructorArguments.get(6).getRef());
         assertEquals("produced2", bean.constructorArguments.get(7).getRef());
     }
-    
+
     @Test
     public void testParseBeanWithConfig() {
         Bean bean = new Bean(BeanWithConfig.class, blueprint);

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BlueprintTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BlueprintTest.java?rev=1781668&r1=1781667&r2=1781668&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BlueprintTest.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BlueprintTest.java Sat Feb  4 13:30:43 2017
@@ -87,8 +87,8 @@ public class BlueprintTest {
         Blueprint blueprint = new Blueprint(blueprintConfiguration, MyFactoryBean.class);
         BeanFromFactory matching = (BeanFromFactory) blueprint.getMatching(new BeanRef(MyProduced.class));
         Assert.assertEquals(MyProduced.class, matching.clazz);
-        Assert.assertEquals("myFactoryBean", matching.factoryBean.id);
-        Assert.assertEquals("create", matching.factoryMethod);
+        Assert.assertEquals("myFactoryBean", matching.attributes.get("factory-ref"));
+        Assert.assertEquals("create", matching.attributes.get("factory-method"));
     }
 
 }