Asankha and Jeff,

I am doing a deep copy to get the transport headers because transport
headers is a map, but I couldn't think of how these are getting lost in the
cloned copy if that is the case.

I will do some more debugging and let you know. Asankha, have you done any
debugging for this? and Jeff, what is the version of Synapse that you are
trying. I found an issue in copying transport headers and that is why I
introduced the deep copying of the header map...

Thanks,
Ruwan

On Fri, Aug 15, 2008 at 9:31 AM, Asankha C. Perera <[EMAIL PROTECTED]> wrote:

> Jeff
>
> It seems like the Clone mediator does not copy transport level headers of
> the original message to the clones. I am not sure if this was the intended
> behavior or a bug, but Ruwan should be able to comment on it.
>
> A quick work around would be to copy the $trp:FILE_NAME value to a local
> message context before the clone. AFAIK local message context properties are
> copied to clones
>
> asankha
>
>
> Jeff Davis wrote:
>
>> Sorry to belabor this thing, but I have one follow-up question. When I try
>> to reference the expression $trp:FILE_NAME from within my clone block, it
>> fails, as it evaluates to null. Yet, within the xslt that follows below
>> the
>> clone node, it evaluates just fine. As with my previous example for this
>> thread, I am using vfs transport for the proxy service upon which the
>> validate shown below exists.
>>
>> <validate source="//*[local-name()='csv']">
>>    <schema key="schemas/CSVOrder.xsd"/>
>>    <on-fail>
>>        <clone continueParent="true">
>>            <target >
>>                <endpoint>
>>                    <address format="soap12" uri="
>> http://localhost:8280/soap/EsperService"/>
>>                </endpoint>
>>                <sequence>
>>                    <xslt key="xslt-key-esper-csv-err"
>> source="//*[local-name()='csv']">
>> <!-- failure occurs where, as $trp:FILE_NAME is null -->
>>                        <property name="filename"
>> expression="$trp:FILE_NAME"/>
>>                        <property name="errorType" value="XML Validation
>> Error"/>
>>                    </xslt>
>>                </sequence>
>>            </target>
>>        </clone>
>>        <property name="Subject" value="Errors occurs when processing
>> order"
>> scope="transport"/>
>>        <xslt key="xslt-key-email" source="//*[local-name()='csv']">
>> <!-- works fine here -->
>>            <property name="filename" expression="$trp:FILE_NAME"/>
>>        </xslt>
>>        <send>
>>            <endpoint>
>>                <address uri="mailto:[EMAIL PROTECTED]"
>> format="pox"/>
>>            </endpoint>
>>        </send>
>>        <drop/>
>>    </on-fail>
>> </validate>
>>
>> Thanks!
>>
>> On Wed, Aug 13, 2008 at 10:02 PM, Asankha C. Perera <[EMAIL PROTECTED]
>> >wrote:
>>
>>
>>
>>> Hi Jeff
>>>
>>>
>>>
>>>> It looks as though the properties you provided as examples:
>>>>
>>>> <property name="file path" expression="$trp:FILE_PATH"/>
>>>> <property name="file name" expression="$trp:FILE_NAME"/>
>>>>
>>>> That the constant values provided in the expression were derived from
>>>> those
>>>> in
>>>> org.apache.synapse.transport.vfs.VFSConstants?
>>>>
>>>> If that's the case, it maybe worth pointing that out in the
>>>> Configuration
>>>> Language guide (or if I can be granted permission, I can add that note,
>>>> or
>>>> I
>>>> can just create Jira).
>>>>
>>>>
>>>>
>>>>
>>> Yes, we need to update the configuration language document.. you can get
>>> its source from the SVN, and make the changes locally and create then
>>> patch
>>> as "svn diff > yourchanges.patch" - you should use a plain text editor
>>> when
>>> editing that HTML (and not a rich WYSIWYG editor) to keep your changes
>>> clearly visible on the diff, and to prevent formatting and unwanted
>>> changes
>>> by advanced editors, that sometimes breaks stuff :D
>>>
>>> Then, please attach the patch to a JIRA and we will be very happy to
>>> include your contribution
>>>
>>> asankha
>>>
>>>  On Tue, Aug 12, 2008 at 2:59 AM, Asankha C. Perera <[EMAIL PROTECTED]>
>>>
>>>
>>>> wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> Hi Jeff
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> I'm trying to setup an inSequence node that, when validation fails, an
>>>>>> email
>>>>>> is sent out. The inbound message is arriving via transport.vfs. I'd
>>>>>> like
>>>>>> the
>>>>>> content of my email to include the name of the inbound file. My
>>>>>> on-fail
>>>>>> looks like:
>>>>>>
>>>>>> <on-fail>
>>>>>>  <property name="Subject" value="Errors occurs when processing order"
>>>>>> scope="transport"/>
>>>>>>  <xslt key="xslt-key-email" source="//*[local-name()='csv']">
>>>>>>      <property name="filename"
>>>>>> expression="get-property('transport.vfs.FileName')"
>>>>>> scope="transport"/>
>>>>>>  </xslt>
>>>>>>  <send>
>>>>>>      <endpoint>
>>>>>>          <address uri="mailto:[EMAIL PROTECTED]" format="pox"/>
>>>>>>      </endpoint>
>>>>>>  </send>
>>>>>>  <drop/>
>>>>>> </on-fail>
>>>>>>
>>>>>> The filename parameter being passed to the xstl fails because the
>>>>>> property
>>>>>> isn't found. I've even tried instead to get one of the previously
>>>>>> defined
>>>>>> properties, such as "transport.vfs.FileURI", but that doesn't work
>>>>>> either.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> The transport.vfs.FileURI is the URI of the file being polled.. this
>>>>> could
>>>>> be a directory as well, or a file etc.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> To be honest, this is a fairly constant frustration for me -- I never
>>>>>> seem
>>>>>> to be able to printout property values successfully where log level is
>>>>>> custom either.  It seems as though when you specify log level="full",
>>>>>> it
>>>>>> would print out ALL the property valus, but that often doesn't appear
>>>>>> to
>>>>>> be
>>>>>> the case (it just seems to print out only message context, not the
>>>>>> transport-specific ones).
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> Sorry for the delay as I was traveling last week..
>>>>>
>>>>> But try this config:
>>>>>
>>>>> <definitions xmlns="http://ws.apache.org/ns/synapse";>
>>>>>  <proxy name="StockQuoteProxy" transports="vfs">
>>>>>     <parameter name="transport.vfs.FileURI">file:///tmp/in</parameter>
>>>>> <!--CHANGE-->
>>>>>     <parameter name="transport.vfs.ContentType">text/plain</parameter>
>>>>>     <parameter name="transport.vfs.FileNamePattern">.*\.txt</parameter>
>>>>>     <parameter name="transport.PollInterval">15</parameter>
>>>>>     <parameter
>>>>> name="transport.vfs.MoveAfterProcess">file:///tmp/original</parameter>
>>>>> <!--CHANGE-->
>>>>>     <parameter
>>>>> name="transport.vfs.MoveAfterFailure">file:///tmp/original</parameter>
>>>>> <!--CHANGE-->
>>>>>     <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
>>>>>     <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
>>>>>
>>>>>     <target>
>>>>>         <inSequence>
>>>>>             <log level="full">
>>>>>                 <property name="file path"
>>>>> expression="$trp:FILE_PATH"/>
>>>>>                 <property name="file name"
>>>>> expression="$trp:FILE_NAME"/>
>>>>>                 <property name="file size"
>>>>> expression="$trp:FILE_LENGTH"/>
>>>>>                 <property name="last modified"
>>>>> expression="$trp:LAST_MODIFIED"/>
>>>>>             </log>
>>>>>         </inSequence>
>>>>>     </target>
>>>>>  </proxy>
>>>>> </definitions>
>>>>>
>>>>> Note: you could also use the get-property('FILE_PATH') function as
>>>>> usual
>>>>> at
>>>>> transport scope instead of the cooler $trp:FILE_PATH etc
>>>>>
>>>>> and you will see the following log message:
>>>>> 2008-08-12 14:25:47,383 [-] [vfs-Worker-1]  INFO LogMediator To: ,
>>>>> MessageID: urn:uuid:C9CD4AB9611C879A8B1218531347310, Direction:
>>>>> request,
>>>>> file path = /tmp/in/hello.txt, file name = hello.txt, file size = 29,
>>>>> last
>>>>> modified = 1218531282000, Envelope: <?xml version='1.0'
>>>>> encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="
>>>>> http://schemas.xmlsoap.org/soap/envelope/
>>>>> "><soapenv:Body><axis2ns1:text
>>>>> xmlns:axis2ns1="http://ws.apache.org/commons/ns/payload";>some text
>>>>> here
>>>>> som more text</axis2ns1:text></soapenv:Body></soapenv:Envelope>
>>>>>
>>>>> So basically the problem was not a bug, but the name of the property
>>>>> you
>>>>> were looking at.. If you can help us improve our documentation that
>>>>> would
>>>>> be
>>>>> most welcome :)
>>>>>
>>>>> asankha
>>>>>
>>>>> --
>>>>> Asankha C. Perera
>>>>>
>>>>> WSO2 - http://wso2.org
>>>>> http://esbmagic.blogspot.com
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>> --
>>> Asankha C. Perera
>>>
>>> WSO2 - http://wso2.org
>>> http://esbmagic.blogspot.com
>>>
>>>
>>>
>>>
>>
>>
>>
>
> --
> Asankha C. Perera
>
> WSO2 - http://wso2.org
> http://esbmagic.blogspot.com
>
>


-- 
Ruwan Linton
http://wso2.org - "Oxygenating the Web Services Platform"
http://ruwansblog.blogspot.com/

Reply via email to