[ARIES-1455] Also scan inlined beans for annotations

git-svn-id: https://svn.apache.org/repos/asf/aries/trunk/jpa@1718780 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml b/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
index 412a4b2..94060cb 100644
--- a/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
+++ b/itests/jpa-container-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
@@ -64,6 +64,13 @@
     <bean id="carServiceEmJtaAnn"

         class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceEmJtaAnn">

     </bean>

+    

+    <service interface="org.apache.aries.jpa.container.itest.entities.CarService">

+        <service-properties>

+            <entry key="type" value="emJtaAnnInlined" />

+        </service-properties>

+        <bean class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceEmJtaAnn"/>

+    </service>

 

     <service ref="carServiceEmSupplier"

         interface="org.apache.aries.jpa.container.itest.entities.CarService">

diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
index 04d7676..dacdcc0 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
@@ -102,6 +102,11 @@
     }
     
     @Test
+    public void testInlined() throws Exception {
+        carRealTransactionalLifecycle(getCarService("emJtaAnnInlined"));
+    }
+    
+    @Test
     public void testCoordinationLifecycle() throws InterruptedException, ExecutionException {
         CarService carService = getCarService("em");
         assertNoCars(carService);
diff --git a/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaComponentProcessor.java b/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaComponentProcessor.java
index bdd5e7e..3b75d89 100644
--- a/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaComponentProcessor.java
+++ b/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaComponentProcessor.java
@@ -38,10 +38,12 @@
 import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
 import org.apache.aries.blueprint.mutable.MutableRefMetadata;
 import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
+import org.apache.aries.blueprint.mutable.MutableServiceMetadata;
 import org.osgi.framework.Bundle;
 import org.osgi.service.blueprint.container.BlueprintContainer;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.ReferenceMetadata;
+import org.osgi.service.blueprint.reflect.Target;
 import org.osgi.service.coordinator.Coordinator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -69,8 +71,17 @@
         Set<String> components = new HashSet<String>(cdr.getComponentDefinitionNames());
         for (String component : components) {
             ComponentMetadata compDef = cdr.getComponentDefinition(component);
+            
             if (compDef instanceof MutableBeanMetadata && !((MutableBeanMetadata)compDef).isProcessor()) {
+                // Normal bean def
                 handleComponent((MutableBeanMetadata)compDef, bundle, cdr, container);
+            } else if(compDef instanceof MutableServiceMetadata) {
+                // Bean inlined into service def
+                MutableServiceMetadata sMeta = (MutableServiceMetadata)compDef;
+                Target target = sMeta.getServiceComponent();
+                if (target instanceof MutableBeanMetadata) {
+                    handleComponent((MutableBeanMetadata)target, bundle, cdr, container);
+                }
             }
         }
     }