Converting xml to pdf with fop 1.1

Guys, I am using fop 2.2. I used following code (very much the same as what Brynjolfur shared above, but I get NullPointerException from the last line "transformer.transform( xml, res ). The xml and res objects are not null. What could be causing this error?


import com.wm.app.b2b.server.ServiceException;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.render.intermediate.IFContext;
import org.apache.fop.render.intermediate.IFDocumentHandler;
import org.apache.fop.render.pdf.PDFDocumentHandlerMaker;
import org.apache.fop.render.pdf.PDFRendererConfig;
import org.apache.fop.render.pdf.PDFRendererConfigurator;

		IDataCursor idc = pipeline.getCursor();  
		short linenum = 0;
		String xmlString = IDataUtil.getString( idc, "xmlData" );  
		String xsltString = IDataUtil.getString ( idc, "xsltData" );  
		String errMsg = "";
		
		ByteArrayOutputStream out = new ByteArrayOutputStream(); 
		
		FopFactory fopFactory = null;
		TransformerFactory tFactory = null;  
		Source xml = null;  
		Source xslt = null;  
		
		try{  
			fopFactory = FopFactory.newInstance(new File("./fop-2.2/conf/fop.xconf"));  
			linenum++; // 1
			tFactory = TransformerFactory.newInstance();  
			linenum++; // 2
			xml = new StreamSource( new StringReader( xmlString ) );  
			linenum++; // 3
			xslt = new StreamSource( new StringReader( xsltString ) ); 
			linenum++; // 4
			
		    FOUserAgent foUserAgent = fopFactory.newFOUserAgent();  
		    linenum++; // 5
		    PDFRendererConfigurator pdfConfig = new PDFRendererConfigurator( foUserAgent, new PDFRendererConfig.PDFRendererConfigParser() );  
		    linenum++; // 6
		    PDFDocumentHandlerMaker pdfMaker = new PDFDocumentHandlerMaker();  
		    linenum++; // 7 
		    IFDocumentHandler pdfHandler = pdfMaker.makeIFDocumentHandler( new IFContext(foUserAgent) );  		    
		    linenum++; // 8
		    pdfConfig.configure( pdfHandler );
		    linenum++; // 9
		    foUserAgent.setDocumentHandlerOverride( pdfHandler );
		    		    
		    linenum++; // 10
			foUserAgent.getRendererOptions();  
			linenum++; // 11
			Fop fop = fopFactory.newFop( MimeConstants.MIME_PDF, foUserAgent, out );  
			linenum++; // 12
			Transformer transformer = tFactory.newTransformer( xslt );  
			linenum++; // 13
			Result res = new SAXResult( fop.getDefaultHandler() ); 						
			linenum++; // 14
			transformer.transform( xml, res );
		}  
		catch( Exception e ){
			StringWriter sw = new StringWriter();
			e.printStackTrace(new PrintWriter(sw));
			errMsg = errMsg + "Error at linenum " + linenum + ": " + sw.toString();
		    IDataUtil.put( idc, "errorMessage", errMsg );  
		    throw new ServiceException (errMsg);
		}  
		finally{  
			
			if(out!=null) try {out.close();}catch(Exception e) {};
			idc.destroy();  
		}  

Well, I ended up using the sample from https://netjs.blogspot.com.tr/2015/07/how-to-create-pdf-from-xml-using-apache-fop.html. It worked.