Spring Implementation support of Services isn't compliant with the Specification
--------------------------------------------------------------------------------
Key: TUSCANY-2258
URL: https://issues.apache.org/jira/browse/TUSCANY-2258
Project: Tuscany
Issue Type: Bug
Components: Java SCA Spring Implementation Extension
Environment: Not Specific, but current environment is Windows
Reporter: Kapish Aggarwal
Based on the specification (verbatim from PDF below):
Each <service> element used with <implementation.spring> should include the
name of the Spring bean
that is to be exposed as an SCA service in its name attribute. So, for Spring,
the name attribute of a
service plays two roles: it identifies a Spring bean, and it names the service
for the component. The service
element above has a name of "X", so there should be a Spring bean with that
name.
This means in a component using implementation.spring, the "name" attribute of
the service should be based on the value of the "id" attribute of the
corresponding bean in the Spring context file. However, since Spring
Implementation code piggybacks on the Java Introspection, it should the Java
interface name instead. The SpringBeanIntrospector class's introspectBean
method simply uses the Java implementation introspection and just copies the
Services, References, and Properties directly over to the componentType object
for the Spring Implementation. There needs to be some processing to ensure that
the service is named based on the bean. I am unsure if the references and
properties need have some extra processing involved either.
Example below:
Spring Context:
<bean id="testBean" class="test.spring.HelloWorldBean">
</bean>
Component Element from Composite Should Be (This does not work):
<component name="SpringComponent">
<implementation.spring
location="META-INF/SpringHelloWorld-context.xml"/>
<service name="testBean">
<interface.java interface="test.spring.HelloWorld"/>
</service>
</component>
Component Element from Composite Actually Is (This works):
<component name="SpringComponent">
<implementation.spring
location="META-INF/SpringHelloWorld-context.xml"/>
<service name="HelloWorld">
<interface.java interface="test.spring.HelloWorld"/>
</service>
</component>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.