public Pattern render(Parameters parameters) throws SAXException, JiBXException, IOException, RenderingException { RenderingContext renderingContext = renderingCF.createRenderingContext(); RenderingListenerAdapter listener = new RenderingListenerAdapter(renderingContext); ValidationProgram processor; if (knittingCF == null || knittingVF == null) { processor = new ValidationProgram(listener, true); } else { List<PatternEventListener> listeners = new ArrayList<PatternEventListener>(); listeners.add(listener); processor = new ValidationProgram(knittingCF, knittingVF, listeners); } Writer writer = parameters.getWriter(); if (writer != null) { renderingContext.getRenderer().setWriter(writer); // the writer is on the listener adapter, not on the processing // program parameters.setWriter(null); } return processor.validate(parameters); }