[
https://issues.apache.org/jira/browse/ARIES-1455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Schneider resolved ARIES-1455.
----------------------------------------
Resolution: Fixed
Fix Version/s: jpa-2.3.0
https://github.com/apache/aries/commit/37265e0a7e9dda58001af8f845638ac0640fec52
> 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
> Fix For: jpa-2.3.0
>
>
> 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)