Author: alien11689
Date: Sat Jun  4 22:05:02 2016
New Revision: 1746854

URL: http://svn.apache.org/viewvc?rev=1746854&view=rev
Log:
[ARIES-1562] Refactor after change

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/BeanRef.java
    
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/OsgiServiceRef.java
    
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.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=1746854&r1=1746853&r2=1746854&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
 Sat Jun  4 22:05:02 2016
@@ -43,7 +43,7 @@ import java.util.SortedSet;
 import java.util.TreeSet;
 
 public class Bean extends BeanRef {
-    public String initMethod;
+    public final String initMethod;
     public String destroyMethod;
     public SortedSet<Property> properties = new TreeSet<>();
     public List<Argument> constructorArguments = new ArrayList<>();
@@ -57,45 +57,65 @@ public class Bean extends BeanRef {
         super(clazz, BeanRef.getBeanName(clazz));
         Introspector introspector = new Introspector(clazz);
 
-        // Init method
-        Method initMethod = introspector.methodWith(PostConstruct.class);
-        if (initMethod != null) {
-            this.initMethod = initMethod.getName();
-        }
+        initMethod = findMethodAnnotatedWith(introspector, 
PostConstruct.class);
+        destroyMethod = findMethodAnnotatedWith(introspector, 
PreDestroy.class);
 
-        // Destroy method
-        Method destroyMethod = introspector.methodWith(PreDestroy.class);
-        if (destroyMethod != null) {
-            this.destroyMethod = destroyMethod.getName();
-        }
+        interpretTransactionalMethods(clazz);
 
-        // Transactional methods
-        transactionDefs.addAll(new JavaxTransactionFactory().create(clazz));
-        transactionDefs.addAll(new SpringTransactionFactory().create(clazz));
         this.isPrototype = isPrototype(clazz);
-        this.persistenceFields = 
introspector.fieldsWith(PersistenceContext.class, PersistenceUnit.class);
+        this.persistenceFields = findPersistenceFields(introspector);
+
         setQualifiersFromAnnotations(clazz.getAnnotations());
 
+        interpretServiceProvider();
+    }
+
+    private void interpretServiceProvider() {
         ServiceProvider serviceProvider = ServiceProvider.fromBean(this);
-        if(serviceProvider != null){
+        if (serviceProvider != null) {
             serviceProviders.add(serviceProvider);
         }
     }
 
+    private List<Field> findPersistenceFields(Introspector introspector) {
+        return introspector.fieldsWith(PersistenceContext.class, 
PersistenceUnit.class);
+    }
+
+    private void interpretTransactionalMethods(Class<?> clazz) {
+        transactionDefs.addAll(new JavaxTransactionFactory().create(clazz));
+        transactionDefs.addAll(new SpringTransactionFactory().create(clazz));
+    }
+
+    private String findMethodAnnotatedWith(Introspector introspector, Class<? 
extends Annotation> annotation) {
+        Method initMethod = introspector.methodWith(annotation);
+        if (initMethod == null) {
+            return null;
+        }
+        return initMethod.getName();
+    }
+
     private boolean isPrototype(Class<?> clazz) {
         return clazz.getAnnotation(Singleton.class) == null && 
clazz.getAnnotation(Component.class) == null;
     }
 
     public void resolve(Matcher matcher) {
         resolveArguments(matcher);
-        for (Field field : new Introspector(clazz).fieldsWith(Value.class, 
Autowired.class, Inject.class)) {
-            Property prop = Property.create(matcher, field);
+        resolveFiields(matcher);
+        resolveMethods(matcher);
+    }
+
+    private void resolveMethods(Matcher matcher) {
+        for (Method method : new Introspector(clazz).methodsWith(Value.class, 
Autowired.class, Inject.class)) {
+            Property prop = Property.create(matcher, method);
             if (prop != null) {
                 properties.add(prop);
             }
         }
-        for (Method method : new Introspector(clazz).methodsWith(Value.class, 
Autowired.class, Inject.class)) {
-            Property prop = Property.create(matcher, method);
+    }
+
+    private void resolveFiields(Matcher matcher) {
+        for (Field field : new Introspector(clazz).fieldsWith(Value.class, 
Autowired.class, Inject.class)) {
+            Property prop = Property.create(matcher, field);
             if (prop != null) {
                 properties.add(prop);
             }

Modified: 
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java?rev=1746854&r1=1746853&r2=1746854&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java
 Sat Jun  4 22:05:02 2016
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Co
 import javax.inject.Named;
 import javax.inject.Qualifier;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.HashMap;
@@ -47,18 +48,17 @@ public class BeanRef implements Comparab
 
     public BeanRef(Field field) {
         this(field.getType());
-        Annotation[] annotations = field.getAnnotations();
-        setQualifiersFromAnnotations(annotations);
+        parseQualifiers(field);
     }
 
     public BeanRef(Method method) {
         this(method.getParameterTypes()[0]);
-        Annotation[] annotations = method.getAnnotations();
+        parseQualifiers(method);
+    }
+
+    private void parseQualifiers(AnnotatedElement annotatedElement) {
+        Annotation[] annotations = annotatedElement.getAnnotations();
         setQualifiersFromAnnotations(annotations);
-        Named named = method.getAnnotation(Named.class);
-        if (named != null) {
-            id = named.value();
-        }
     }
 
     protected void setQualifiersFromAnnotations(Annotation[] annotations) {
@@ -74,8 +74,12 @@ public class BeanRef implements Comparab
     }
 
     public static String getBeanName(Class<?> clazz) {
-        Component component = clazz.getAnnotation(Component.class);
-        Named named = clazz.getAnnotation(Named.class);
+        return getBeanName(clazz, clazz);
+    }
+
+    public static String getBeanName(Class<?> clazz, AnnotatedElement 
annotatedElement) {
+        Component component = annotatedElement.getAnnotation(Component.class);
+        Named named = annotatedElement.getAnnotation(Named.class);
         if (component != null && !"".equals(component.value())) {
             return component.value();
         } else if (named != null && !"".equals(named.value())) {

Modified: 
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/OsgiServiceRef.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/OsgiServiceRef.java?rev=1746854&r1=1746853&r2=1746854&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/OsgiServiceRef.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/OsgiServiceRef.java
 Sat Jun  4 22:05:02 2016
@@ -19,7 +19,10 @@
 package org.apache.aries.blueprint.plugin.model;
 
 import org.ops4j.pax.cdi.api.OsgiService;
+import org.springframework.stereotype.Component;
 
+import javax.inject.Named;
+import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
@@ -33,60 +36,62 @@ public class OsgiServiceRef extends Bean
 
     public OsgiServiceRef(Field field) {
         super(field);
-        OsgiService osgiService = field.getAnnotation(OsgiService.class);
-        String filterValue = osgiService.filter();
-        if (filterValue.contains("(")) {
-            filter = filterValue;
-            compName = null;
-        } else {
-            compName = filterValue;
-            filter = null;
-        }
-        id = getBeanName(clazz);
-        if (filter != null) {
-            id = id + "-" + getId(filter);
-        }
-        if (compName != null) {
-            id = id + "-" + compName;
+        ServiceFilter serviceFilter = extractServiceFilter(field);
+        filter = serviceFilter.filter;
+        compName = serviceFilter.compName;
+        id = generateReferenceId(field);
+    }
+
+    private String generateReferenceId(AnnotatedElement annotatedElement) {
+        String prefix = getBeanName(clazz, annotatedElement);
+        String suffix = createIdSuffix(annotatedElement);
+        return prefix + suffix;
+    }
+
+    private String createIdSuffix(AnnotatedElement annotatedElement) {
+        if (shouldAddSuffix(annotatedElement)) {
+            if (filter != null) {
+                return "-" + getId(filter);
+            }
+            if (compName != null) {
+                return "-" + compName;
+            }
         }
+        return "";
+    }
+
+    private boolean shouldAddSuffix(AnnotatedElement annotatedElement) {
+        Component component = annotatedElement.getAnnotation(Component.class);
+        Named named = annotatedElement.getAnnotation(Named.class);
+        return (component == null || "".equals(component.value())) &&
+            (named == null || "".equals(named.value()));
     }
 
     public OsgiServiceRef(Method method) {
         super(method);
-        OsgiService osgiService = method.getAnnotation(OsgiService.class);
+        ServiceFilter serviceFilter = extractServiceFilter(method);
+        filter = serviceFilter.filter;
+        compName = serviceFilter.compName;
+        id = generateReferenceId(method);
+    }
+
+    private ServiceFilter extractServiceFilter(AnnotatedElement 
annotatedElement) {
+        OsgiService osgiService = 
annotatedElement.getAnnotation(OsgiService.class);
+        return extractServiceFilter(osgiService);
+    }
+
+    private ServiceFilter extractServiceFilter(OsgiService osgiService) {
         String filterValue = osgiService.filter();
-        if (filterValue.contains("(")) {
-            filter = filterValue;
-            compName = null;
-        } else {
-            compName = filterValue;
-            filter = null;
-        }
-        if (id != null) {
-            return;
-        }
-        id = getBeanName(clazz);
-        if (filter != null) {
-            id = id + "-" + getId(filter);
-        }
-        if (compName != null) {
-            id = id + "-" + compName;
-        }
+        return new ServiceFilter(filterValue);
     }
 
     public OsgiServiceRef(Class<?> clazz, OsgiService osgiService, String 
name) {
         super(clazz, name);
-        String filterValue = osgiService.filter();
-        if (filterValue.contains("(")) {
-            filter = filterValue;
-            compName = null;
-        } else {
-            compName = filterValue;
-            filter = null;
-        }
+        ServiceFilter serviceFilter = extractServiceFilter(osgiService);
+        filter = serviceFilter.filter;
+        compName = serviceFilter.compName;
     }
 
-
     private String getId(String raw) {
         StringBuilder builder = new StringBuilder();
         for (int c = 0; c < raw.length(); c++) {
@@ -98,4 +103,21 @@ public class OsgiServiceRef extends Bean
         return builder.toString();
     }
 
+    private static class ServiceFilter {
+        final public String filter;
+        final public String compName;
+
+        public ServiceFilter(String filterValue) {
+            if (filterValue == null) {
+                filter = null;
+                compName = null;
+            } else if (filterValue.contains("(")) {
+                filter = filterValue;
+                compName = null;
+            } else {
+                filter = null;
+                compName = filterValue;
+            }
+        }
+    }
 }

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=1746854&r1=1746853&r2=1746854&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
 Sat Jun  4 22:05:02 2016
@@ -77,11 +77,11 @@ public class GeneratorTest {
     public void testGenerateBeanWithInitDestroyAndfieldInjection() throws 
Exception {
         Node bean1 = getBeanById("myBean1");
 
-        assertEquals(MyBean1.class.getName(), xpath.evaluate("@class", bean1));
-        assertEquals("init", xpath.evaluate("@init-method", bean1));
-        assertEquals("destroy", xpath.evaluate("@destroy-method", bean1));
-        assertEquals("true", xpath.evaluate("@field-injection", bean1));
-        assertEquals("", xpath.evaluate("@scope", bean1));
+        assertXpathEquals(bean1, "@class", MyBean1.class.getName());
+        assertXpathEquals(bean1, "@init-method", "init");
+        assertXpathEquals(bean1, "@destroy-method", "destroy");
+        assertXpathEquals(bean1, "@field-injection", "true");
+        assertXpathDoesNotExist(bean1, "@scope");
     }
 
     @Test
@@ -108,46 +108,47 @@ public class GeneratorTest {
     public void testGeneratePersistenceContext() throws Exception {
         Node bean1 = getBeanById("myBean1");
 
-        assertEquals("person", xpath.evaluate("context/@unitname", bean1));
-        assertEquals("em", xpath.evaluate("context/@property", bean1));
+        assertXpathEquals(bean1, "context/@unitname", "person");
+        assertXpathEquals(bean1, "context/@property", "em");
     }
 
     @Test
     public void testGeneratePersistenceUnit() throws Exception {
         Node bean1 = getBeanById("myBean1");
 
-        assertEquals("person", xpath.evaluate("unit/@unitname", bean1));
-        assertEquals("emf", xpath.evaluate("unit/@property", bean1));
+        assertXpathEquals(bean1, "unit/@unitname", "person");
+        assertXpathEquals(bean1, "unit/@property", "emf");
     }
 
     @Test
     public void testGenerateAutowiredBean() throws Exception {
         Node bean1 = getBeanById("myBean1");
 
-        assertEquals("my1", xpath.evaluate("property[@name='bean2']/@ref", 
bean1));
+        assertXpathEquals(bean1, "property[@name='bean2']/@ref", "my1");
     }
 
     @Test
     public void testGenerateServiceWithOneInterface() throws Exception {
         Node serviceAImpl2 = getServiceByRef("my2");
-        assertEquals(ServiceA.class.getName(), xpath.evaluate("@interface", 
serviceAImpl2));
-        assertEquals("", xpath.evaluate("@auto-export", serviceAImpl2));
-        assertEquals("", xpath.evaluate("interfaces", serviceAImpl2));
+        assertXpathEquals(serviceAImpl2, "@interface", 
ServiceA.class.getName());
+        assertXpathDoesNotExist(serviceAImpl2, "@auto-export");
+        assertXpathDoesNotExist(serviceAImpl2, "interfaces");
     }
 
     @Test
     public void testGenerateServiceWithAutoExport() throws Exception {
         Node serviceAImpl3 = getServiceByRef("serviceAImpl3");
-        assertEquals("", xpath.evaluate("@interface", serviceAImpl3));
-        assertEquals("interfaces", xpath.evaluate("@auto-export", 
serviceAImpl3));
-        assertEquals("", xpath.evaluate("interfaces", serviceAImpl3));
+        assertXpathDoesNotExist(serviceAImpl3, "@interface");
+        assertXpathEquals(serviceAImpl3, "@auto-export", "interfaces");
+        assertXpathDoesNotExist(serviceAImpl3, "interfaces");
     }
 
     @Test
     public void testGenerateServiceWith2Interfaces() throws Exception {
         Node serviceABImpl = getServiceByRef("serviceABImpl");
-        assertEquals("", xpath.evaluate("@interface", serviceABImpl));
-        assertEquals("", xpath.evaluate("@auto-export", serviceABImpl));
+
+        assertXpathDoesNotExist(serviceABImpl, "@interface");
+        assertXpathDoesNotExist(serviceABImpl, "@auto-export");
 
         NodeList interfaceValues = (NodeList) 
xpath.evaluate("interfaces/value", serviceABImpl, XPathConstants.NODESET);
         Set<String> interfaceNames = new HashSet<String>();
@@ -163,135 +164,143 @@ public class GeneratorTest {
     public void testGenerateBeanWithConstructorInjection() throws Exception {
         // Bean with constructor injection
         Node myBean5 = getBeanById("myBean5");
-        assertEquals("my2", xpath.evaluate("argument[1]/@ref", myBean5));
-        assertEquals("my1", xpath.evaluate("argument[2]/@ref", myBean5));
-        assertEquals("serviceABImpl", xpath.evaluate("argument[3]/@ref", 
myBean5));
-        assertEquals("100", xpath.evaluate("argument[4]/@value", myBean5));
-        assertEquals("ser1", xpath.evaluate("argument[5]/@ref", myBean5));
-        assertEquals("ser2", xpath.evaluate("argument[6]/@ref", myBean5));
-        assertEquals("serviceAImplQualified", 
xpath.evaluate("argument[7]/@ref", myBean5));
+        assertXpathEquals(myBean5, "argument[1]/@ref", "my2");
+        assertXpathEquals(myBean5, "argument[2]/@ref", "my1");
+        assertXpathEquals(myBean5, "argument[3]/@ref", "serviceABImpl");
+        assertXpathEquals(myBean5, "argument[4]/@value", "100");
+        assertXpathEquals(myBean5, "argument[5]/@ref", "ser1");
+        assertXpathEquals(myBean5, "argument[6]/@ref", "ser2");
+        assertXpathEquals(myBean5, "argument[7]/@ref", 
"serviceAImplQualified");
     }
 
     @Test
     public void 
testGenerateBeanWithConstructorInjectionWithoutInjectAnnotation() throws 
Exception {
         // Bean with constructor injection
         Node myBean6 = getBeanById("myBean6");
-        assertEquals("my2", xpath.evaluate("argument[1]/@ref", myBean6));
+        assertXpathEquals(myBean6, "argument[1]/@ref", "my2");
     }
 
     @Test
     public void testGenerateReferenceWithComponentName() throws Exception {
         Node ser1 = getReferenceById("ser1");
-        assertEquals("myRef", xpath.evaluate("@component-name", ser1));
-        assertEquals("", xpath.evaluate("@filter", ser1));
+        assertXpathEquals(ser1, "@component-name", "myRef");
+        assertXpathDoesNotExist(ser1, "@filter");
     }
 
     @Test
     public void testGenerateReferenceWithFilter() throws Exception {
         Node ser2 = getReferenceById("ser2");
-        assertEquals("", xpath.evaluate("@component-name", ser2));
-        assertEquals("(mode=123)", xpath.evaluate("@filter", ser2));
+        assertXpathDoesNotExist(ser2, "@component-name");
+        assertXpathEquals(ser2, "@filter", "(mode=123)");
     }
 
     @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));
+        assertXpathEquals(bean1, "@class", 
"org.apache.aries.blueprint.plugin.test.MyProduced");
+        assertXpathEquals(bean1, "@factory-ref", "myFactoryNamedBean");
+        assertXpathEquals(bean1, "@factory-method", "createBean1");
+        assertXpathEquals(bean1, "@scope", "prototype");
 
         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));
+        assertXpathEquals(bean1, "@class", 
"org.apache.aries.blueprint.plugin.test.MyProduced");
+        assertXpathEquals(bean2, "@factory-ref", "myFactoryNamedBean");
+        assertXpathEquals(bean2, "@factory-method", "createBean2");
+        assertXpathDoesNotExist(bean2, "@scope");
 
         Node myBean5 = getBeanById("myBean5");
-        assertEquals("produced2", xpath.evaluate("argument[8]/@ref", myBean5));
+        assertXpathEquals(myBean5, "argument[8]/@ref", "produced2");
     }
 
     @Test
     public void testProducesBeanUsingParametersNotConstructor() throws 
Exception {
         Node bean1 = getBeanById("myProducedWithConstructor");
-        
assertEquals("org.apache.aries.blueprint.plugin.test.MyProducedWithConstructor",
 xpath.evaluate("@class", bean1));
-        assertEquals("myFactoryBean", xpath.evaluate("@factory-ref", bean1));
-        assertEquals("createBeanWithParameters", 
xpath.evaluate("@factory-method", bean1));
-        assertEquals("myBean1", xpath.evaluate("argument[1]/@ref", bean1));
-        assertEquals("100", xpath.evaluate("argument[2]/@value", bean1));
-        assertEquals("ser1", xpath.evaluate("argument[3]/@ref", bean1));
+        assertXpathEquals(bean1, "@class", 
"org.apache.aries.blueprint.plugin.test.MyProducedWithConstructor");
+        assertXpathEquals(bean1, "@factory-ref", "myFactoryBean");
+        assertXpathEquals(bean1, "@factory-method", 
"createBeanWithParameters");
+        assertXpathEquals(bean1, "argument[1]/@ref", "myBean1");
+        assertXpathEquals(bean1, "argument[2]/@value", "100");
+        assertXpathEquals(bean1, "argument[3]/@ref", "ser1");
     }
 
     @Test
     public void testExposeProducedBeanAsServiceWithAutoExport() throws 
Exception {
         Node service = getServiceByRef("producedForService");
-        assertEquals("interfaces", xpath.evaluate("@auto-export", service));
-        assertEquals("", xpath.evaluate("@interface", service));
-        assertEquals("0", xpath.evaluate("count(interfaces)", service));
-        assertEquals("0", xpath.evaluate("count(service-properties)", 
service));
+        assertXpathEquals(service, "@auto-export", "interfaces");
+        assertXpathDoesNotExist(service, "@interface");
+        assertXpathDoesNotExist(service, "interfaces");
+        assertXpathDoesNotExist(service, "service-properties");
     }
 
     @Test
     public void testExposeProducedBeanAsServiceWithOneInterface() throws 
Exception {
         Node service = getServiceByRef("producedForServiceWithOneInterface");
-        assertEquals("", xpath.evaluate("@auto-export", service));
-        assertEquals(MyProduced.class.getName(), xpath.evaluate("@interface", 
service));
-        assertEquals("0", xpath.evaluate("count(interfaces)", service));
-        assertEquals("0", xpath.evaluate("count(service-properties)", 
service));
+        assertXpathDoesNotExist(service, "@auto-export");
+        assertXpathEquals(service, "@interface", MyProduced.class.getName());
+        assertXpathDoesNotExist(service, "interfaces");
+        assertXpathDoesNotExist(service, "service-properties");
     }
 
     @Test
     public void testExposeProducedBeanAsServiceWithTwoInterfaces() throws 
Exception {
         Node service = getServiceByRef("producedForServiceWithTwoInterfaces");
-        assertEquals("", xpath.evaluate("@auto-export", service));
-        assertEquals("", xpath.evaluate("@interface", service));
-        assertEquals("2", xpath.evaluate("count(interfaces/value)", service));
-        assertEquals(MyProduced.class.getName(), 
xpath.evaluate("interfaces/value[1]", service));
-        assertEquals(ServiceA.class.getName(), 
xpath.evaluate("interfaces/value[2]", service));
-        assertEquals("0", xpath.evaluate("count(service-properties)", 
service));
+        assertXpathDoesNotExist(service, "@auto-export");
+        assertXpathDoesNotExist(service, "@interface");
+        assertXpathEquals(service, "count(interfaces/value)", "2");
+        assertXpathEquals(service, "interfaces/value[1]", 
MyProduced.class.getName());
+        assertXpathEquals(service, "interfaces/value[2]", 
ServiceA.class.getName());
+        assertXpathDoesNotExist(service, "service-properties");
     }
 
     @Test
     public void testExposeProducedBeanAsServiceWithServiceProperties() throws 
Exception {
         Node service = getServiceByRef("producedForServiceWithProperties");
-        assertEquals("interfaces", xpath.evaluate("@auto-export", service));
-        assertEquals("", xpath.evaluate("@interface", service));
-        assertEquals("0", xpath.evaluate("count(interfaces)", service));
-        assertEquals("2", xpath.evaluate("count(service-properties/entry)", 
service));
-        assertEquals("v1", 
xpath.evaluate("service-properties/entry[@key='n1']/@value", service));
-        assertEquals("v2", 
xpath.evaluate("service-properties/entry[@key='n2']/@value", service));
+        assertXpathEquals(service, "@auto-export", "interfaces");
+        assertXpathDoesNotExist(service, "@interface");
+        assertXpathDoesNotExist(service, "interfaces");
+        assertXpathEquals(service, "count(service-properties/entry)", "2");
+        assertXpathEquals(service, 
"service-properties/entry[@key='n1']/@value", "v1");
+        assertXpathEquals(service, 
"service-properties/entry[@key='n2']/@value", "v2");
     }
 
     @Test
     public void testSetterInjection() throws Exception {
         Node bean1 = getBeanById("beanWithSetters");
 
-        assertEquals("0", xpath.evaluate("count(property[@name='useless'])", 
bean1));
-        assertEquals("0", 
xpath.evaluate("count(property[@name='iOnlyHaveSetPrefix'])", bean1));
-        assertEquals("0", 
xpath.evaluate("count(property[@name='ihaveMoreThenOneParameter'])", bean1));
-        assertEquals("0", 
xpath.evaluate("count(property[@name='iOnlyHaveSetPrefixValue'])", bean1));
-        assertEquals("0", 
xpath.evaluate("count(property[@name='ihaveMoreThenOneParameterValue'])", 
bean1));
-
-        assertEquals("test", 
xpath.evaluate("property[@name='myValue']/@value", bean1));
-        assertEquals("my1", xpath.evaluate("property[@name='serviceA1']/@ref", 
bean1));
-        assertEquals("my1", xpath.evaluate("property[@name='serviceA2']/@ref", 
bean1));
-        assertEquals("serviceABImpl", 
xpath.evaluate("property[@name='serviceB']/@ref", bean1));
-        assertEquals("serviceB2Id", 
xpath.evaluate("property[@name='serviceB2']/@ref", bean1));
-        assertEquals("serviceB-typeB1Ref", 
xpath.evaluate("property[@name='serviceBRef']/@ref", bean1));
-        assertEquals("serviceB2IdRef", 
xpath.evaluate("property[@name='serviceB2Ref']/@ref", bean1));
-        assertEquals("serviceB-B3Ref", 
xpath.evaluate("property[@name='serviceB3Ref']/@ref", bean1));
+        assertXpathDoesNotExist(bean1, "property[@name='useless']");
+        assertXpathDoesNotExist(bean1, "property[@name='iOnlyHaveSetPrefix']");
+        assertXpathDoesNotExist(bean1, 
"property[@name='ihaveMoreThenOneParameter']");
+        assertXpathDoesNotExist(bean1, 
"property[@name='iOnlyHaveSetPrefixValue']");
+        assertXpathDoesNotExist(bean1, 
"property[@name='ihaveMoreThenOneParameterValue']");
+
+        assertXpathEquals(bean1, "property[@name='myValue']/@value", "test");
+        assertXpathEquals(bean1, "property[@name='serviceA1']/@ref", "my1");
+        assertXpathEquals(bean1, "property[@name='serviceA2']/@ref", "my1");
+        assertXpathEquals(bean1, "property[@name='serviceB']/@ref", 
"serviceABImpl");
+        assertXpathEquals(bean1, "property[@name='serviceB2']/@ref", 
"serviceB2Id");
+        assertXpathEquals(bean1, "property[@name='serviceBRef']/@ref", 
"serviceB-typeB1Ref");
+        assertXpathEquals(bean1, "property[@name='serviceB2Ref']/@ref", 
"serviceB2IdRef");
+        assertXpathEquals(bean1, "property[@name='serviceB3Ref']/@ref", 
"serviceB-B3Ref");
 
         Node reference1 = getReferenceById("serviceB-typeB1Ref");
-        assertEquals(ServiceB.class.getName(), xpath.evaluate("@interface", 
reference1));
-        assertEquals("(type=B1Ref)", xpath.evaluate("@filter", reference1));
+        assertXpathEquals(reference1, "@interface", ServiceB.class.getName());
+        assertXpathEquals(reference1, "@filter", "(type=B1Ref)");
 
         Node reference2 = getReferenceById("serviceB2IdRef");
-        assertEquals(ServiceB.class.getName(), xpath.evaluate("@interface", 
reference2));
-        assertEquals("(type=B2Ref)", xpath.evaluate("@filter", reference2));
+        assertXpathEquals(reference2, "@interface", ServiceB.class.getName());
+        assertXpathEquals(reference2, "@filter", "(type=B2Ref)");
 
         Node reference3 = getReferenceById("serviceB-B3Ref");
-        assertEquals(ServiceB.class.getName(), xpath.evaluate("@interface", 
reference3));
-        assertEquals("B3Ref", xpath.evaluate("@component-name", reference3));
+        assertXpathEquals(reference3, "@interface", ServiceB.class.getName());
+        assertXpathEquals(reference3, "@component-name", "B3Ref");
+    }
+
+    private void assertXpathDoesNotExist(Node node, String xpathExpression) 
throws XPathExpressionException {
+        assertXpathEquals(node, "count(" + xpathExpression + ")", "0");
+    }
+
+    private void assertXpathEquals(Node node, String xpathExpression, String 
expected) throws XPathExpressionException {
+        assertEquals(expected, xpath.evaluate(xpathExpression, node));
     }
 
     private static Document readToDocument(ByteArrayOutputStream os) throws 
ParserConfigurationException,


Reply via email to