On Wed, Feb 25, 2009 at 10:23 AM, Ramkumar R <[email protected]> wrote:

> Hi Simon,
>
> I realize the issue here, you are right...
>
> "Now the introspection that goes on inside SpringXMLComponentTypeLoader
> struggles as it doesn't have access to the information from the SCDL. It
> introspects the bean to try and decide which fields should be references and
> which should be properties and it can't tell the difference."
>
> Currently I am working on "TUSCANY-2503", I believe this fix will bring in
> a change in understanding the bean definitions in a better way by creating a
> XMLBeanFactory instance with the given applicaion-context.xml and the
> created beanFactory will be used to for reading the bean definitions.
>
> Will keep you informed about the developments here.
>
>
>
> On Mon, Feb 23, 2009 at 8:44 PM, Simon Laws <[email protected]>wrote:
>
>>
>>
>> On Mon, Feb 23, 2009 at 9:06 AM, Ramkumar R <[email protected]>wrote:
>>
>>> Hi Simon,
>>>
>>> Just wanted to confirm if you get error message out of this scenario...
>>>
>>> I believe most probably, this should be the error message... please
>>> confirm...
>>>
>>> org.osoa.sca.ServiceRuntimeException: More than one service is declared
>>> on component ClientComponent. Service name is required to get the service.
>>>     at
>>> org.apache.tuscany.sca.core.context.ComponentContextHelper.getSingleService(ComponentContextHelper.java:313)
>>>     at
>>> org.apache.tuscany.sca.core.context.ComponentContextImpl.createSelfReference(ComponentContextImpl.java:166)
>>>     at
>>> org.apache.tuscany.sca.node.impl.NodeImpl.getServiceReference(NodeImpl.java:787)
>>>     at
>>> org.apache.tuscany.sca.node.impl.NodeImpl.getService(NodeImpl.java:719)
>>>     at
>>> org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.getService(DefaultSCADomain.java:211)
>>>
>>>
>>>
>>> On Sat, Feb 21, 2009 at 7:10 PM, Simon Laws 
>>> <[email protected]>wrote:
>>>
>>>> I'm looking at a Spring based payment component in the travel sample in
>>>> the sandbox [1] and am having problems in the case where the Spring context
>>>> and the implementations it references are unannotated.
>>>>
>>>> I have a bean...
>>>>
>>>> public class PaymentImpl implements Payment {
>>>>
>>>>     private CreditCardPayment creditCardPayment;
>>>>     private EmailGateway emailGateway;
>>>>
>>>>     public void setCreditCardPayment(CreditCardPayment
>>>> creditCardPayment) {
>>>>         this.creditCardPayment = creditCardPayment;
>>>>     }
>>>>
>>>>     public void setEmailGateway(EmailGateway emailGateway) {
>>>>         this.emailGateway = emailGateway;
>>>>     }
>>>>
>>>> a context...
>>>>
>>>> <beans xmlns="http://www.springframework.org/schema/beans";
>>>>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>        xmlns:sca="http://www.springframework.org/schema/sca";
>>>>        xsi:schemaLocation="http://www.springframework.org/schema/beans
>>>>
>>>> http://www.springframework.org/schema/beans/spring-beans.xsd";>
>>>>
>>>>     <bean id="Payment" class="payment.PaymentImpl">
>>>>         <property name="creditCardPayment"
>>>> ref="creditCardPaymentReference"/>
>>>>         <property name="emailGateway" ref="EmailGateway"/>
>>>>     </bean>
>>>>
>>>>     <bean id="EmailGateway"
>>>> class="scatours.emailgateway.EmailGatewayImpl">
>>>>     </bean>
>>>>
>>>> </beans>
>>>>
>>>> and a composite component...
>>>>
>>>>     <component name="PaymentComponent">
>>>>         <implementation.spring location="Payment-context.xml"/>
>>>>         <service name="Payment">
>>>>             <interface.wsdl interface="
>>>> http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)<http://www.tuscanyscatours.com/Payment/#wsdl.interface%28Payment%29>"
>>>> />
>>>>             <binding.ws uri="http://localhost:8080/Payment";
>>>> wsdlElement="
>>>> http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)<http://www.tuscanyscatours.com/Payment/#wsdl.service%28PaymentService%29>
>>>> "/>
>>>>         </service>
>>>>         <reference name="creditCardPaymentReference">
>>>>             <binding.ws uri="http://localhost:8081/CreditCardPayment"/>
>>>>         </reference>
>>>>     </component>
>>>>
>>>> Now the introspection that goes on inside SpringXMLComponentTypeLoader
>>>> [2] struggles as it doesn't have access to the information from the SCDL. 
>>>> It
>>>> introspects the bean to try and decide which fields shoulf be references 
>>>> and
>>>> which should be properties and it can't tell the difference. What I think
>>>> should be happing is that it should be looking back at the component in the
>>>> SCDL to see what has actually been defined as a reference and what has been
>>>> defined as a service and using this information to build the component 
>>>> type.
>>>> However there is a lot of code here so I'm loooking for someone familiar
>>>> with the implementation.spring code to tell me what I've missed.
>>>>
>>>> Regards
>>>>
>>>> Simon
>>>>
>>>> [1]
>>>> http://svn.apache.org/repos/asf/tuscany/sandbox/travelsample/chapter-06/payment-spring-contribution/
>>>> [2]
>>>> http://svn.apache.org/repos/asf/tuscany/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
>>>>
>>>
>>>
>>>
>>> --
>>> Thanks & Regards,
>>> Ramkumar Ramalingam
>>>
>>
>> Hi Ram
>>
>> I don't remember seeing that error. Why do you think that it will be
>> produced?
>>
>> Simon
>>
>
>
>
> --
> Thanks & Regards,
> Ramkumar Ramalingam
>

Thanks Ram

I've created a separate JIRA (
https://issues.apache.org/jira/browse/TUSCANY-2875) to track this problem
explicitly.

Regards

Simon

Reply via email to