[ https://issues.apache.org/jira/browse/TUSCANY-1854?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Simon Laws resolved TUSCANY-1854. --------------------------------- Resolution: Fixed Fix Version/s: (was: Java-SCA-Next) Java-SCA-1.1 I believe this is resolved now. There is an itest (conversations-ws) that tests conversations over web services. > ConversationID is not set correctly when using Conversational with WS > --------------------------------------------------------------------- > > Key: TUSCANY-1854 > URL: https://issues.apache.org/jira/browse/TUSCANY-1854 > Project: Tuscany > Issue Type: Bug > Affects Versions: Java-SCA-1.0 > Environment: Windows XP > Reporter: bjoern > Assignee: Simon Laws > Fix For: Java-SCA-1.1 > > > When unsing the @Conversational with webservices on serverside the > @conversationID is not filled with the vlaue of the SOAP-Header but is filled > with a newly generated. > The information from the User-List I collected with Simon: > Hi, > I logged the SOAP messages that go form the WS-Client to the WS-Server and I > found out something strange: > On client-side a ConverstionID is generated > (5756de5a-904e-4834-aaf4-6249d74b702e) and passed using the SOAP-header To > the server-side. I expected that the anootated variable > > @ConversationID > > public String lConversationID; > Is filled with this value (5756de5a-904e-4834-aaf4-6249d74b702e) but it seams > to get a differend id (194e6a05-8b80-42e4-a380-5e43fffcdb14). > As long as the conversation is up the ID send by the client stays the same > (5756de5a-904e-4834-aaf4-6249d74b702e) but on server side I get a differend > ID for every call. > SOAP LOGFILE: > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Header> > <To xmlns="http://www.w3.org/2005/08/addressing"> > <wsa:Address > > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > http://localhost:8082/SOULSessionService > </wsa:Address> > <wsa:ReferenceParameters > > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > <axis2ns1:ConversationID > > xmlns:axis2ns1="http://tuscany.apache.org/xmlns/sca/1.0"> > > 5756de5a-904e-4834-aaf4-6249d74b702e > </axis2ns1:ConversationID> > </wsa:ReferenceParameters> > </To> > </soapenv:Header> > <soapenv:Body> > <_ns_:getSessionID > xmlns:_ns_="http://SOULSessionService"> > <_ns_:getName></_ns_:getName> > </_ns_:getSessionID> > </soapenv:Body> > </soapenv:Envelope> > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Body> > <_ns_:getSessionIDResponse > xmlns:_ns_="http://SOULSessionService"> > <_ns_:getNameReturn> > 194e6a05-8b80-42e4-a380-5e43fffcdb14 > </_ns_:getNameReturn> > </_ns_:getSessionIDResponse> > </soapenv:Body> > </soapenv:Envelope> > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Header> > <To xmlns="http://www.w3.org/2005/08/addressing"> > <wsa:Address > > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > http://localhost:8082/SOULSessionService > </wsa:Address> > <wsa:ReferenceParameters > > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > <axis2ns2:ConversationID > > xmlns:axis2ns2="http://tuscany.apache.org/xmlns/sca/1.0"> > > 5756de5a-904e-4834-aaf4-6249d74b702e > </axis2ns2:ConversationID> > </wsa:ReferenceParameters> > </To> > </soapenv:Header> > <soapenv:Body> > <_ns_:getSessionID > xmlns:_ns_="http://SOULSessionService"> > <_ns_:getName></_ns_:getName> > </_ns_:getSessionID> > </soapenv:Body> > </soapenv:Envelope> > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Body> > <_ns_:getSessionIDResponse > xmlns:_ns_="http://SOULSessionService"> > <_ns_:getNameReturn> > 4002d850-bc7c-47b0-b866-99d1f3bfdfad > </_ns_:getNameReturn> > </_ns_:getSessionIDResponse> > </soapenv:Body> > </soapenv:Envelope> > > Greetings > Björn > > -----Ursprüngliche Nachricht----- > Von: Simon Laws [mailto:[EMAIL PROTECTED] > Gesendet: Dienstag, 16. Oktober 2007 18:38 > An: [EMAIL PROTECTED] > Betreff: Re: Problems with Conversational and Webservices > On 10/16/07, Dietrich, Björn <[EMAIL PROTECTED]> wrote: > > > > Hi, > > > > I have a problem with coversational and webservice binding. > > I have a Service which is conversational and uses the @ConversationID > > to get a ConversationID. I have a function getSessionID to read this > > conversationID. > > I use this function to get the ID on client-side and print it out. > > > > With POJO-binding the ConversationID stays the same no mather how > > often I call the getSessionID. > > > > SOULSessionServiceClient.composite > > > > <composite xmlns=http://www.osoa.org/xmlns/sca/1.0 targetNamespace= > > http://SOULSessionServicexmlns:hw="http://SOULSessionService" > > name="SOULSessionServiceClient"> > > > > <component name="SOULSessionServiceClient"> > > > > <implementation.java class=" > > de.cenit.SOUL.ServiceRuntime.SOULSessionService" /> > > > > </component> > > > > </composite> > > > > > > OUTPUT: > > SOULSESSIONSERVICECALLED:fc7e8541-b164-4cb7-af41-11a69a082a07 > > > > GETSTATE > > > > Called getSessionID > > > > SessionID:fc7e8541-b164-4cb7-af41-11a69a082a07 > > > > SOULSESSIONSERVICECALLED:fc7e8541-b164-4cb7-af41-11a69a082a07 > > > > Called getSessionID > > > > SessionID:fc7e8541-b164-4cb7-af41-11a69a082a07 > > > > > > > > If I use the same client with WebService-binding I get a different > > ConversationID for each call. > > > > > > > > <composite xmlns=http://www.osoa.org/xmlns/sca/1.0 < > > http://www.osoa.org/xmlns/sca/1.0> targetNamespace= > > http://SOULSessionService <http://SOULSessionService> xmlns:hw=" > > http://SOULSessionService" name="SOULSessionServiceClient"> > > > > <component name="SOULSessionServiceClient"> > > > > <implementation.java class=" > > de.cenit.SOUL.ServiceRuntime.SOULSessionServiceComponent" /> > > > > </component> > > > > <reference name="SOULSessionService" > > promote="SOULSessionServiceClient/helloWorldService"> > > > > <interface.java interface=" > > de.cenit.SOUL.ServiceRuntime.SOULSessionServiceComponent" /> > > > > <binding.ws wsdlElement=" > > http://SOULSessionService#wsdl.port(HelloWorldService/HelloWorldSoapPort)" > > /> > > > > </reference> > > > > </composite> > > > > OUTPUT: > > > > GETSTATE > > > > Called getSessionID > > > > SessionID:ff70883f-4441-447e-9b40-7d47052a69d9 > > > > Called getSessionID > > > > SessionID:eacfebd2-6e27-4747-aefe-c2be119efa33 > > > > > > > > Service Interface: > > @Remotable > > > > @Service > > > > @Conversational > > > > //@Scope("CONVERSATION") > > > > public interface ISOULSessionService extends ISOULService { > > > > //public String exec(String name); > > > > public String getName(String name); > > > > //public String exec(SOULParameters name); > > > > //public String exec(DataObject name); > > > > > > > > public String getSessionID(String name); > > > > > > > > public DataObject exec(DataObject name) throws SOULException; > > > > > > > > public DataObject storeState(DataObject pObject); > > > > > > > > public DataObject getState(DataObject pObject) ; > > > > } > > > > > > > > > > > > Service Implementation: > > > > @Scope("CONVERSATION") > > @Service(ISOULSessionService.class) > > public class SOULSessionService implements ISOULSessionService { > > > > > > @ConversationID > > public String lConversationID; > > > > > > > > public SOULSessionService() > > { > > > > } > > public String getName(String name) > > { > > System.out.println("ConverstationID:"+lConversationID); > > return "de.cenit.SOUL.ServiceRuntime.SOULSessionService > > ";//this.getClass().toString(); > > } > > > > public DataObject exec(DataObject name) { > > System.out.println("SOULSESSIONSERVICECALLED:"+lConversationID); > > return name; > > } > > > > > > public String getSessionID(String name) { > > System.out.println("Called getSessionID"); > > return lConversationID; > > } > > > > > > > > } > > > > > > > > > > WSDL-file: > > > > > > > > <?xml version="1.0" encoding="UTF-8"?> > > > > <!-- > > > > * Licensed to the Apache Software Foundation (ASF) under one > > > > * or more contributor license agreements. See the NOTICE file > > > > * distributed with this work for additional information > > > > * regarding copyright ownership. The ASF licenses this file > > > > * to you under the Apache License, Version 2.0 (the > > > > * "License"); you may not use this file except in compliance > > > > * with the License. You may obtain a copy of the License at > > > > * > > > > * http://www.apache.org/licenses/LICENSE-2.0 > > > > * > > > > * Unless required by applicable law or agreed to in writing, > > > > * software distributed under the License is distributed on an > > > > * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > > > > * KIND, either express or implied. See the License for the > > > > * specific language governing permissions and limitations > > > > * under the License. > > > > --> > > > > <wsdl:definitions targetNamespace="http://SOULSessionService" xmlns:tns=" > > http://SOULSessionService" > > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap=" > > http://schemas.xmlsoap.org/wsdl/soap/" > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > > > xmlns:ns0="http://de_cenit_SOUL_ServiceRuntime" > > > > xmlns:ns1="http://de_cenit_SOUL_ServiceRuntime/xsd" > > > > xmlns:sca="http://www.osoa.org/xmlns/sca/1.0" > > > > name="SOULSessionService"> > > > > <wsdl:types> > > > > <schema elementFormDefault="qualified" targetNamespace=" > > http://SOULSessionService" > > > > xmlns="http://www.w3.org/2001/XMLSchema"> > > > > > > > > <complexType name="Exception"> > > > > <sequence> > > > > <element minOccurs="0" name="Exception" nillable="true" > > type="xsd:anyType"/> > > > > </sequence> > > > > </complexType> > > > > <element name="SOULException"> > > > > <complexType> > > > > <sequence> > > > > <element minOccurs="0" name="SOULException" nillable="true" > > type="ns1:SOULException"/> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="exec"> > > > > <complexType> > > > > <sequence> > > > > <element name="name" type="xsd:anyType" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="execResponse"> > > > > <complexType> > > > > <sequence> > > > > <element name="execReturn" type="xsd:anyType" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > > > > > <element name="getName"> > > > > <complexType> > > > > <sequence> > > > > <element name="getName" type="xsd:string" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="getNameResponse"> > > > > <complexType> > > > > <sequence> > > > > <element name="getNameReturn" type="xsd:string" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="getSessionID"> > > > > <complexType> > > > > <sequence> > > > > <element name="getName" type="xsd:string" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="getSessionIDResponse"> > > > > <complexType> > > > > <sequence> > > > > <element name="getNameReturn" type="xsd:string" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="getState"> > > > > <complexType> > > > > <sequence> > > > > <element name="getState" type="xsd:anyType" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="getStateResponse"> > > > > <complexType> > > > > <sequence> > > > > <element name="execReturn" type="xsd:anyType" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="storeState"> > > > > <complexType> > > > > <sequence> > > > > <element name="name" type="xsd:anyType" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <element name="storeStateResponse"> > > > > <complexType> > > > > <sequence> > > > > <element name="execReturn" type="xsd:anyType" /> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > <!-- NOT NEEDED --> > > > > <complexType name="Name"> > > > > <sequence> > > > > <element name="first" type="xsd:anyType" /> > > > > <element name="last" type="xsd:string" /> > > > > </sequence> > > > > </complexType> > > > > <xsd:complexType name="LogonDataType"> > > > > <xsd:sequence> > > > > <xsd:element name="Field" > > > > type="tns:LogonDataFieldType" maxOccurs="unbounded" /> > > > > </xsd:sequence> > > > > <xsd:attribute name="SystemID" type="xsd:string" /> > > > > </xsd:complexType> > > > > <xsd:complexType name="LogonDataFieldType"> > > > > <xsd:attribute name="key" type="xsd:string" /> > > > > <xsd:attribute name="value" type="xsd:string" /> > > > > </xsd:complexType> > > > > </schema> > > > > <schema elementFormDefault="qualified" targetNamespace=" > > http://de_cenit_SOUL_ServiceRuntime" > > > > xmlns="http://www.w3.org/2001/XMLSchema"> > > > > > > > > <complexType name="Exception"> > > > > <sequence> > > > > <element minOccurs="0" name="Exception" nillable="true" > > type="xsd:anyType"/> > > > > </sequence> > > > > </complexType> > > > > <element name="SOULException"> > > > > <complexType> > > > > <sequence> > > > > <element minOccurs="0" name="SOULException" nillable="true" > > type="ns1:SOULException"/> > > > > </sequence> > > > > </complexType> > > > > </element> > > > > </schema> > > > > <schema xmlns:ax21="http://de_cenit_SOUL_ServiceRuntime/xsd" > > attributeFormDefault="qualified" elementFormDefault="qualified" > > targetNamespace="http://de_cenit_SOUL_ServiceRuntime/xsd" xmlns=" > > http://www.w3.org/2001/XMLSchema"> > > > > <complexType name="SOULException"> > > > > <complexContent> > > > > <extension base="ns0:Exception"> > > > > <sequence/> > > > > </extension> > > > > </complexContent> > > > > </complexType> > > > > </schema> > > > > </wsdl:types> > > > > <wsdl:message name="execRequest"> > > > > <wsdl:part element="tns:exec" name="parameters" /> > > > > </wsdl:message> > > > > <wsdl:message name="execResponse"> > > > > <wsdl:part element="tns:execResponse" name="parameters" /> > > > > </wsdl:message> > > > > > > > > <wsdl:message name="getNameRequest"> > > > > <wsdl:part element="tns:getName" name="parameters" /> > > > > </wsdl:message> > > > > <wsdl:message name="getNameResponse"> > > > > <wsdl:part element="tns:getNameResponse" name="parameters" /> > > > > </wsdl:message> > > > > <wsdl:message name="getSessionIDRequest"> > > > > <wsdl:part element="tns:getSessionID" name="parameters" /> > > > > </wsdl:message> > > > > <wsdl:message name="getSessionIDResponse"> > > > > <wsdl:part element="tns:getSessionIDResponse" name="parameters" /> > > > > </wsdl:message> > > > > <wsdl:message name="SOULException"> > > > > <wsdl:part name="parameters" element="ns0:SOULException"/> > > > > </wsdl:message> > > > > <wsdl:message name="getStateRequest"> > > > > <wsdl:part name="parameters" element="tns:getState" /> > > > > </wsdl:message> > > > > <wsdl:message name="getStateResponse"> > > > > <wsdl:part name="paparametersrt1" element="tns:getStateResponse" /> > > > > </wsdl:message> > > > > > > > > <wsdl:message name="storeState"> > > > > <wsdl:part name="parameters" element="tns:storeState" /> > > > > </wsdl:message> > > > > <wsdl:message name="storeStateResponse"> > > > > <wsdl:part name="parameters" element="tns:storeStateResponse" /> > > > > </wsdl:message> > > > > <wsdl:portType name="HelloWorld" sca:requires="conversational"> > > > > <wsdl:operation name="exec"> > > > > <wsdl:input message="tns:execRequest" name="execRequest" /> > > > > <wsdl:output message="tns:execResponse" name="execResponse" /> > > > > <wsdl:fault message="tns:SOULException" name="SOULException"/> > > > > </wsdl:operation> > > > > <wsdl:operation name="getName"> > > > > <wsdl:input message="tns:getNameRequest" name="getNameRequest" /> > > > > <wsdl:output message="tns:getNameResponse" name="getNameResponse" /> > > > > </wsdl:operation> > > > > <wsdl:operation name="getSessionID"> > > > > <wsdl:input message="tns:getSessionIDRequest" name="getSessionIDRequest" > > /> > > > > <wsdl:output message="tns:getSessionIDResponse" > > name="getSessionIDResponse" /> > > > > </wsdl:operation> > > > > <wsdl:operation name="getState"> > > > > <wsdl:input message="tns:getStateRequest" name="getStateRequest"/> > > > > <wsdl:output message="tns:getStateResponse" name="getStateResponse" /> > > > > </wsdl:operation> > > > > <wsdl:operation name="storeState"> > > > > <wsdl:input message="tns:storeStateRequest" name="storeStateRequest"/> > > > > <wsdl:output message="tns:storeStateResponse" > > name="storeStateResponse" /> > > > > </wsdl:operation> > > > > </wsdl:portType> > > > > <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld"> > > > > <wsdlsoap:binding style="document" transport=" > > http://schemas.xmlsoap.org/soap/http" /> > > > > <wsdl:operation name="exec"> > > > > <wsdlsoap:operation soapAction="" /> > > > > <wsdl:input name="execRequest"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:input> > > > > <wsdl:output name="execResponse"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:output> > > > > <wsdl:fault name="SOULException"> > > > > <wsdlsoap:fault use="literal" name="SOULException"/> > > > > </wsdl:fault> > > > > </wsdl:operation> > > > > <wsdl:operation name="getName"> > > > > <wsdlsoap:operation soapAction="" /> > > > > <wsdl:input name="getNameRequest"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:input> > > > > <wsdl:output name="getNameResponse"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:output> > > > > </wsdl:operation> > > > > <wsdl:operation name="getSessionID"> > > > > <wsdlsoap:operation soapAction="" /> > > > > <wsdl:input name="getSessionIDRequest"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:input> > > > > <wsdl:output name="getSessionIDResponse"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:output> > > > > </wsdl:operation> > > > > <wsdl:operation name="getState"> > > > > <wsdlsoap:operation soapAction="" /> > > > > <wsdl:input name="getStateRequest"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:input> > > > > <wsdl:output name="getStateResponse"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:output> > > > > </wsdl:operation> > > > > <wsdl:operation name="storeState"> > > > > <wsdlsoap:operation soapAction="" /> > > > > <wsdl:input name="storeStateRequest"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:input> > > > > <wsdl:output name="storeStateResponse"> > > > > <wsdlsoap:body use="literal" /> > > > > </wsdl:output> > > > > </wsdl:operation> > > > > </wsdl:binding> > > > > <wsdl:service name="HelloWorldService"> > > > > <wsdl:port binding="tns:HelloWorldSoapBinding" > > name="HelloWorldSoapPort"> > > > > <wsdlsoap:address location="http://localhost:8080/SOULSessionService" > > /> > > > > </wsdl:port> > > > > </wsdl:service> > > > > </wsdl:definitions> > > > > TestClient: > > > > > > > > package de.cenit.tests; > > > > import static org.junit.Assert.*; > > > > import org.junit.Test; > > > > > > > > import commonj.sdo.DataObject; > > import commonj.sdo.helper.XMLHelper; > > > > import de.cenit.SOUL.ServiceRuntime.ISOULService; > > import de.cenit.SOUL.ServiceRuntime.SDOTools; > > import de.cenit.SOUL.ServiceRuntime.SOULServiceProvider; > > import de.cenit.SOUL.ServiceRuntime.ISOULSessionService; > > import de_cenit_SOUL_ServiceRuntime.SOULException; > > > > public class SOULSessionServiceTest { > > > > @Test > > public void testExec() { > > > > SOULServiceProvider lServiceProvider=new SOULServiceProvider(); > > > > > > SOULServiceProvider lSOULServiceProvider=new SOULServiceProvider(); > > > > ISOULSessionService SessionService > > =lSOULServiceProvider.getService > > ("SOULSessionServiceClient",ISOULSessionService.class); > > > > > > > > DataObject name = > > SDOTools.loadSDOFromFile("LogonData","LogonData"); > > > > > > DataObject value =null; > > try { > > SessionService.exec((DataObject)name); > > > > System.out.println("GETSTATE"); > > System.out.println("SessionID:"+SessionService.getSessionID("")); > > SessionService.exec((DataObject)name); > > System.out.println("SessionID:"+SessionService.getSessionID("")); > > ISOULSessionService SessionService2 > > =lSOULServiceProvider.getService > > ("SOULSessionServiceClient",ISOULSessionService.class); > > > > SessionService2.exec((DataObject)name); > > System.out.println("SessionID:"+SessionService2.getSessionID("")); > > > > } catch (SOULException e) { > > String lmsgString=e.getMessage(); > > System.out.println("MSG:"+lmsgString); > > > > String ldoString=e.getDOString(); > > System.out.println("SDO:"+ldoString); > > > > } > > > > } > > > > } > > > > > > > > > > > > > > CENIT AG Systemhaus, Industriestrasse 52-54, 70565 Stuttgart, Tel.: > > +49 > > 711 7825-30, Fax: +49 711 7825-4000, Internet: www.cenit.de > > Geschaeftsstellen: Berlin, Duesseldorf, Frankfurt, Hamburg, Hannover, > > Muenchen, Saarbruecken > > Vorstandsmitglieder: Kurt Bengel, Christian Pusch > > Aufsichtsratsmitglieder: Falk Engelmann (Vorsitzender des > > Aufsichtsrats), Hubert Leypoldt, Dr. Dirk Lippold > > Bankverbindungen: Deutsche Bank (BLZ 600 700 70) Kto. 1661 040, > > Commerzbank (BLZ 600 400 71) Kto. 532 015 500, BW-Bank (BLZ 600 501 01) Kto. > > 2 403 313 > > Registergericht: Amtsgericht Stuttgart > > Handelsregister: HRB Nr. 19117 > > Umsatzsteuer: ID-Nr. DE 147 862 777 > Hi Bjorn > Let me ask a question or two to make sure that I understand you scenario. > 1/ Without Web Services > ----------------------- > (A)SOULSessionServiceTest ---Java---> (B)SOULSessionServiceClient > impl = > SOULSessionService > 2/ With Web Services > -------------------- > (A)SOULSessionServiceTest ---Java---> (B)SOULSessionServiceClient > ---WebService---> (C)HelloWorldService > impl = > SOULSessionServiceComponent > You observe that in case 1 the conversationId recorded at B is the same every > time you call SOULSessionServiceClient through the same proxy. > You observe that in case 2 the conversationId recorded at B is different > every time you call SOULSessionServiceClient through the same proxy > Is it possible to share with the implementation of > SOULSessionServiceComponent, or at least it @Scope configuration? > Where does the WSDL you included get used? > Regards > Simon -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]