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 2016/12/20 12:41:01 UTC

svn commit: r1775285 - in /aries/trunk/blueprint/plugin/blueprint-maven-plugin/src: main/java/org/apache/aries/blueprint/plugin/pax/ test/java/org/apache/aries/blueprint/plugin/ test/java/org/apache/aries/blueprint/plugin/test/

Author: alien11689
Date: Tue Dec 20 12:41:01 2016
New Revision: 1775285

URL: http://svn.apache.org/viewvc?rev=1775285&view=rev
Log:
[ARIES-1641] Read service.ranking property as ranking attribute in service element, This closes #60

Modified:
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java?rev=1775285&r1=1775284&r2=1775285&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java Tue Dec 20 12:41:01 2016
@@ -31,11 +31,15 @@ import org.ops4j.pax.cdi.api.Property;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import java.lang.reflect.AnnotatedElement;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 public class OsgiServiceProviderHandler implements BeanAnnotationHandler<OsgiServiceProvider> {
+
+    private static final List<String> SPECIAL_PROPERTIES = Collections.singletonList("service.ranking");
+
     @Override
     public Class<OsgiServiceProvider> getAnnotation() {
         return OsgiServiceProvider.class;
@@ -83,6 +87,7 @@ public class OsgiServiceProviderHandler
         }
 
         if (!propertiesAsMap.isEmpty()) {
+            writeRanking(writer, propertiesAsMap);
             writeProperties(writer, propertiesAsMap);
         }
 
@@ -126,16 +131,29 @@ public class OsgiServiceProviderHandler
         writer.writeCharacters("\n");
     }
 
+    private void writeRanking(XMLStreamWriter writer, Map<String, String> propertiesAsMap) throws XMLStreamException {
+        if (propertiesAsMap.containsKey("service.ranking")) {
+            try {
+                Integer ranking = Integer.parseInt(propertiesAsMap.get("service.ranking"));
+                writer.writeAttribute("ranking", ranking.toString());
+            } catch (NumberFormatException e) {
+                throw new IllegalArgumentException("service.ranking property must be an integer!");
+            }
+        }
+    }
+
     private void writeProperties(XMLStreamWriter writer, Map<String, String> properties) throws XMLStreamException {
         writer.writeCharacters("    ");
         writer.writeStartElement("service-properties");
         writer.writeCharacters("\n");
         for (Map.Entry<String, String> property : properties.entrySet()) {
-            writer.writeCharacters("        ");
-            writer.writeEmptyElement("entry");
-            writer.writeAttribute("key", property.getKey());
-            writer.writeAttribute("value", property.getValue());
-            writer.writeCharacters("\n");
+            if (!SPECIAL_PROPERTIES.contains(property.getKey())) {
+                writer.writeCharacters("        ");
+                writer.writeEmptyElement("entry");
+                writer.writeAttribute("key", property.getKey());
+                writer.writeAttribute("value", property.getValue());
+                writer.writeCharacters("\n");
+            }
         }
         writer.writeCharacters("    ");
         writer.writeEndElement();

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java?rev=1775285&r1=1775284&r2=1775285&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java Tue Dec 20 12:41:01 2016
@@ -191,6 +191,18 @@ public class GeneratorTest {
     }
 
     @Test
+    public void testGenerateServiceWithRanking() throws Exception {
+        Node serviceWithRanking = getServiceByRef("serviceWithRanking");
+
+        assertXpathDoesNotExist(serviceWithRanking, "@interface");
+        assertXpathEquals(serviceWithRanking, "@auto-export", "interfaces");
+        assertXpathDoesNotExist(serviceWithRanking, "interfaces");
+        assertXpathEquals(serviceWithRanking, "@ranking", "100");
+        assertXpathEquals(serviceWithRanking, "count(service-properties/entry)", "0");
+        assertXpathDoesNotExist(serviceWithRanking, "service-properties/entry[@key='service.ranking']");
+    }
+
+    @Test
     public void testGenerateBeanWithConstructorInjection() throws Exception {
         // Bean with constructor injection
         Node myBean5 = getBeanById("myBean5");
@@ -289,9 +301,11 @@ public class GeneratorTest {
         assertXpathEquals(service, "@auto-export", "interfaces");
         assertXpathDoesNotExist(service, "@interface");
         assertXpathDoesNotExist(service, "interfaces");
+        assertXpathEquals(service, "@ranking", "100");
         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");
+        assertXpathDoesNotExist(service, "service-properties/entry[@key='service.ranking']");
     }
 
     @Test

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java?rev=1775285&r1=1775284&r2=1775285&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/MyFactoryBeanAsService.java Tue Dec 20 12:41:01 2016
@@ -54,7 +54,8 @@ public class MyFactoryBeanAsService {
     @OsgiServiceProvider
     @Properties({
         @Property(name = "n1", value = "v1"),
-        @Property(name = "n2", value = "v2")
+        @Property(name = "n2", value = "v2"),
+        @Property(name = "service.ranking", value = "100")
     })
     public MyProduced createBeanWithServiceExpose4() {
         return new MyProduced("My message");