Hi Simon, Just wanted to update you that, this issue is related to introspecting the implementation artifact (in our case the spring beans) to derive the component type information, which would give us the services, properties and references of the implementation type.
As of today, the Spring Specs does not provide a normative definition of how to calculate the ComponentType of a Spring Beans / Application context. A Spec JIRA is already raised for the same: http://www.osoa.org/jira/browse/JAVA-58 I believe, the best solution would be to define a componentType side file, but again this would create issues for the users who would like to use the existing Spring Application as is. Simon, you had suggested that we 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. Does this comply with the specs, do we follow such model for other implementation types? On Wed, Feb 25, 2009 at 4:49 PM, Simon Laws <[email protected]>wrote: > > > 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 > -- Thanks & Regards, Ramkumar Ramalingam
