Working as designed :) See the TODO comment "...only works with a single service".
Its actually not trivial to fix this properly, and as there's an existing work item to be done in the future to fix using side files properly i think the fix can wait till then. ...ant On 2/15/07, Raymond Feng <[EMAIL PROTECTED]> wrote:
Hi, Ant. I think there's a problem in your algorithm. The order of elements in the Map cannot be guaranteed. If you have more than one services for the component, then you might see different sequences of services from the introspection against the ones from the componentType file. For example, [s1, s2] vs. [s2, s1], then it ends up to set the interfaceClass from wrong services. I assume we should match services by name. Thanks, Raymond ----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[email protected]> Sent: Thursday, February 15, 2007 3:38 AM Subject: svn commit: r507898 - /incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentTypeLoader.java > Author: antelder > Date: Thu Feb 15 03:38:36 2007 > New Revision: 507898 > > URL: http://svn.apache.org/viewvc?view=rev&rev=507898 > Log: > Fix the fix so side file defined service info is actually used > > Modified: > > incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentTypeLoader.java > > Modified: > incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentTypeLoader.java > URL: > http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentTypeLoader.java?view=diff&rev=507898&r1=507897&r2=507898 > ============================================================================== > --- > incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentTypeLoader.java > (original) > +++ > incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentTypeLoader.java > Thu Feb 15 03:38:36 2007 > @@ -19,6 +19,7 @@ > package org.apache.tuscany.core.implementation.java; > > import java.net.URL; > +import java.util.Iterator; > > import org.apache.tuscany.core.util.JavaIntrospectionHelper; > import org.apache.tuscany.spi.annotation.Autowire; > @@ -34,6 +35,7 @@ > import org.apache.tuscany.spi.implementation.java.ProcessingException; > import org.apache.tuscany.spi.loader.LoaderException; > import org.apache.tuscany.spi.loader.LoaderRegistry; > +import org.apache.tuscany.spi.model.ServiceContract; > import org.apache.tuscany.spi.model.ServiceDefinition; > import org.osoa.sca.annotations.Constructor; > > @@ -63,14 +65,18 @@ > URL resource = > implClass.getResource(JavaIntrospectionHelper.getBaseName(implClass) + > ".componentType"); > if (resource != null) { > // TODO: TUSCANY-1111, How to merge the component type loaded > from the file into the PojoComponentType > - PojoComponentType type = loadFromSidefile(parent, resource, > deploymentContext); > - > - for (Object o : type.getServices().values()) { > - ServiceDefinition sd = (ServiceDefinition) o; > - ServiceDefinition javaService = (ServiceDefinition) > componentType.getServices().get(sd.getName()); > - if(javaService!=null) { > - > javaService.setServiceContract(sd.getServiceContract()); > - } > + PojoComponentType sideFileCT = loadFromSidefile(parent, > resource, deploymentContext); > + > + // TODO: TUSCANY-1111, hack to get the sidefile defined > WSDLServiceContract used > + // only works with a single service > + Iterator it = > componentType.getServices().values().iterator(); > + for (Object o : sideFileCT.getServices().values()) { > + ServiceDefinition sideFileSD = (ServiceDefinition) o; > + ServiceDefinition actualSD = > (ServiceDefinition)it.next(); > + ServiceContract<?> newServiceContract = > sideFileSD.getServiceContract(); > + // TODO: TUSCANY-1111, runtime requires interfaceClass > but currently there's no way of gen'ing that from WSDL > + > newServiceContract.setInterfaceClass(actualSD.getServiceContract ().getInterfaceClass()); > + actualSD.setServiceContract(newServiceContract); > } > } > implementation.setComponentType(componentType); > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
