You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by "Andreas Veithen (JIRA)" <ji...@apache.org> on 2007/12/30 20:21:43 UTC
[jira] Commented: (SYNAPSE-218) TextFileDataSource violates
OMDataSource contract
[ https://issues.apache.org/jira/browse/SYNAPSE-218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12555019 ]
Andreas Veithen commented on SYNAPSE-218:
-----------------------------------------
The effect of point 1 (and the fact that VFSTransportSender relies on the behavior described there) can be seen on the following sequence:
<sequence name="in">
<xslt key="encoding_test.xslt"/>
<log level="full"/>
<send>
<endpoint>
<address uri="vfs:file:///Users/veithen/workspace/synapse-vfs-test/data/out"/>
</endpoint>
</send>
</sequence>
The log mediator will cause the OMSourcedElementImpl to be expanded. In this case, OMSourcedElementImpl#serializeAndConsume will no longer delegate to OMDataSource#serialize but to OMElementImpl#serializeAndConsume, which includes the wrapper element in its output, leading to an unexpected result.
The effect of point 3 can be seen on the following sequence:
<sequence name="in">
<xslt key="encoding_test.xslt"/>
<send>
<endpoint>
<address uri="vfs:file:///Users/veithen/workspace/synapse-vfs-test/data/out"/>
</endpoint>
</send>
<send>
<endpoint>
<address uri="vfs:file:///Users/veithen/workspace/synapse-vfs-test/data/out2"/>
</endpoint>
</send>
</sequence>
Sending to the first endpoint will consume the input stream, causing an empty file to be sent to the second endpoint.
> TextFileDataSource violates OMDataSource contract
> -------------------------------------------------
>
> Key: SYNAPSE-218
> URL: https://issues.apache.org/jira/browse/SYNAPSE-218
> Project: Synapse
> Issue Type: Bug
> Components: Core
> Affects Versions: NIGHTLY
> Reporter: Andreas Veithen
> Priority: Minor
>
> TextFileDataSource is an implementation of OMDataSource representing text wrapped inside a <text> element. However, it doesn't respect the contract of OMDataSource:
> 1) serialize(OutputStream, OMOutputFormat) doesn't output the <text> wrapper element (actually the code is commented out) and doesn't take into account the character encoding specified by the OMOutputFormat.
> 2) serialize(Writer, OMOutputFormat) only outputs an empty <text> element.
> 3) TextFileDataSource will give unexpected results with multiple invocations (of the same or different methods) on the same instance, because the invocation of any of the methods consumes the InputStream.
> It should be noted that
> * VFSTransportSender relies on the behavior described in point 1;
> * the intention of the behavior described in point 2 is probably to avoid dumping the entire text data when the message is logged.
> However, the described behavior might lead to unexpected results in other situations.
--
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: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org