}
public void marshal(Object object,
HierarchicalStreamWriter writer,
MarshallingContext context) {
ExecutionResults result = (ExecutionResults) object;
writer.startNode( "results" );
if ( !result.getIdentifiers().isEmpty() ) {
Collection<String> identifiers = result.getIdentifiers();
// this gets sorted, otherwise unit tests will not pass
if ( SORT_MAPS ) {
String[] array = identifiers.toArray( new String[identifiers.size()]);
Arrays.sort(array);
identifiers = Arrays.asList(array);
}
for ( String identifier : identifiers ) {
writer.startNode( "result" );
writer.startNode( "identifier" );
writer.setValue( identifier );
writer.endNode();
writer.startNode( "value" );
Object value = result.getValue( identifier );
if ( value instanceof org.kie.api.runtime.rule.QueryResults ) {
String name = mapper().serializedClass(FlatQueryResults.class);
ExtendedHierarchicalStreamWriterHelper.startNode(writer, name, FlatQueryResults.class);
context.convertAnother(value);
writer.endNode();
} else {
writeItem( value,
context,
writer );
}
writer.endNode();
writer.endNode();
}
}
Collection<String> handles = ((ExecutionResultImpl) result).getFactHandles().keySet();
// this gets sorted, otherwise unit tests will not pass
if (SORT_MAPS) {
String[] array = handles.toArray( new String[handles.size()]);
Arrays.sort(array);
handles = Arrays.asList(array);
}
for ( String identifier : handles ) {
Object handle = result.getFactHandle( identifier );
if ( handle instanceof FactHandle ) {
writer.startNode( "fact-handle" );
writer.startNode( "identifier" );
writer.setValue( identifier );