private String convert(String source, String sourceSyntaxId, String targetSyntaxId) throws Exception
{
String result;
ExecutionContext executionContext = new ExecutionContext();
ExecutionContextManager executionContextManager = componentManager.getInstance(ExecutionContextManager.class);
executionContextManager.initialize(executionContext);
RenderingContext renderingContext = componentManager.getInstance(RenderingContext.class);
((MutableRenderingContext) renderingContext).push(renderingContext.getTransformation(),
renderingContext.getXDOM(), renderingContext.getDefaultSyntax(), renderingContext.getTransformationId(),
renderingContext.isRestricted(), Syntax.valueOf(targetSyntaxId));
try {
if (isStreamingTest(sourceSyntaxId, targetSyntaxId)) {
StreamParser parser = getComponentManager().getInstance(StreamParser.class, sourceSyntaxId);
PrintRendererFactory rendererFactory =
getComponentManager().getInstance(PrintRendererFactory.class, targetSyntaxId);
result = convert(source, parser, rendererFactory);
} else {
Parser parser = getComponentManager().getInstance(Parser.class, sourceSyntaxId);
BlockRenderer blockRenderer = getComponentManager().getInstance(BlockRenderer.class, targetSyntaxId);
result = convert(source, parser, blockRenderer);
}
} finally {
((MutableRenderingContext) renderingContext).pop();
Execution execution = componentManager.getInstance(Execution.class);
execution.removeContext();
}
return result;
}