[
https://issues.apache.org/jira/browse/CXF-1564?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593584#action_12593584
]
Harri Hohteri commented on CXF-1564:
------------------------------------
I think you are better off making it from scratch than trying to create a test
case from my code.
But something like this would do the trick:
public class MyType extends Type {
public boolean isWriteOuter() {
return true;
}
}
public class MockMessageWriter extends AbstractMessageWriter {
boolean isClosed = false;
public void close() {
super.close();
isClosed = true;
}
}
public class ArrayTypeTest extends TestCase {
public testCXF-1564() throws Exception {
ArrayType type = new ArrayType();
MockMessageWriter writer = new MockMessageWriter();
type.writeValue(new Object(), writer, null, type, "MyType",
"http://cxf.apache.org/test")
assertFalse("type should not close writer of the parent",
writer.isClosed());
}
}
> ArrayType does not work correctly if isWriteOuter == false
> ----------------------------------------------------------
>
> Key: CXF-1564
> URL: https://issues.apache.org/jira/browse/CXF-1564
> Project: CXF
> Issue Type: Bug
> Components: Aegis Databinding
> Affects Versions: 2.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.1, 2.0.6,
> 2.1.1, 2.0.7
> Reporter: Harri Hohteri
> Assignee: Benson Margulies
> Fix For: 2.1.1
>
>
> In org.apache.cxf.aegis.type.basic.ArrayType:
> protected void writeValue(Object value, MessageWriter writer, Context
> context, Type type, String name,
> ...
> if (type.isWriteOuter()) {
> cwriter = writer.getElementWriter(name, ns);
> } else {
> cwriter = writer;
> }
> if (value == null && type.isNillable()) {
> cwriter.writeXsiNil();
> } else {
> type.writeObject(value, cwriter, context);
> }
> cwriter.close();
> }
> Should be:
> protected void writeValue(Object value, MessageWriter writer, Context
> context, Type type, String name,
> ...
> if (type.isWriteOuter()) {
> cwriter = writer.getElementWriter(name, ns);
> } else {
> cwriter = writer;
> }
> if (value == null && type.isNillable()) {
> cwriter.writeXsiNil();
> } else {
> type.writeObject(value, cwriter, context);
> }
> if (type.isWriteOuter()) {
> cwriter.close();
> }
> }
> Similar bug was in XFire (http://jira.codehaus.org/browse/XFIRE-547).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.