You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Christian Schneider (JIRA)" <ji...@apache.org> on 2015/11/20 08:59:10 UTC

[jira] [Assigned] (ARIES-1455) JpaComponentProcessor is not scanning the nested beans inside service definition

     [ https://issues.apache.org/jira/browse/ARIES-1455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Schneider reassigned ARIES-1455:
------------------------------------------

    Assignee: Christian Schneider

> JpaComponentProcessor is not scanning the nested beans inside service definition
> --------------------------------------------------------------------------------
>
>                 Key: ARIES-1455
>                 URL: https://issues.apache.org/jira/browse/ARIES-1455
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint, JPA
>    Affects Versions: jpa-2.2.0
>            Reporter: Mohammad Shamsi
>            Assignee: Christian Schneider
>
> Given following blueprint definition:
> {code:xml}
> <service interface="com.foo.MyDao">
>         <bean class="com.foo.impl.MyDaoImpl">
>             <tx:transaction method="*" value="Required"/>
>         </bean>
> </service>
> {code}
> MyDaoImpl has a property of type EntityManager annotated with PersistenceUnit  but "JpaComponentProcessor" is not able to properly scan the nested bean inside above service definition to find the annotated property.  
> looking at JpaComponentProcessor source, following code snippet, one can see it 
>  is checking if component definition is an instance of "MutableBeanMetadata" which is not the case when the bean definition is nested in service definition (it is an instance of "MutableServiceMetadata")
> {code:java}
> Set<String> components = new HashSet<String(cdr.getComponentDefinitionNames());
> for (String component : components) {
>      ComponentMetadata compDef = cdr.getComponentDefinition(component);
>      if (compDef instanceof MutableBeanMetadata && !((MutableBeanMetadata)compDef).isProcessor()) {
>                 handleComponent((MutableBeanMetadata)compDef, bundle, cdr, container);
>      }
> }
> {code}
> As a workaround I can change the blueprint definition to following:
> {code:xml}
> <bean id="myBean" class="com.foo.impl.MyDaoImpl">
>      <tx:transaction method="*" value="Required"/>
> </bean>
> <service interface="com.foo.MyDao">
>     <ref component-id="myBean" />
> </service>
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)