code: private IHtmlToPdfTransformer getTransformer(final Map properties) {
  		try {
  			mutex.acquire();
  			IHtmlToPdfTransformer transformer	    = null;
  			String				  rendererClassName = IHtmlToPdfTransformer.DEFAULT_PDF_RENDERER;
  	
  			if ((properties != null) &&
  					properties.containsKey(
  						IHtmlToPdfTransformer.PDF_RENDERER_CLASS)) {
  				rendererClassName = (String) properties.get(IHtmlToPdfTransformer.PDF_RENDERER_CLASS);
  			} // end if
  	
  			if (transformers.containsKey(rendererClassName)) {
  				transformer = (IHtmlToPdfTransformer) transformers.get(rendererClassName);
  			} // end if
  			else {
  				ClassLoader bootStrap = this.useClassLoader ? CClassLoader.getLoader("/main") : this.getClass().getClassLoader();
  	
  				try {
  					ClassLoader cx = Thread.currentThread().getContextClassLoader();
  					try {
  						Thread.currentThread().setContextClassLoader(this.useClassLoader ? CClassLoader.getRootLoader() : this.getClass().getClassLoader());
  						transformer = (IHtmlToPdfTransformer) bootStrap.loadClass(rendererClassName)
  																		   .newInstance();
  						transformers.put(rendererClassName, transformer);
  					}
  					finally {
  						Thread.currentThread().setContextClassLoader(cx);
  					}
  				} // end try
  				catch (final Exception e) {
  					e.printStackTrace();
  					System.err.println(
  						"SEVERE: Error while getting transformer '" +
  						rendererClassName + "' ! : "+e.getMessage());
  	
  					return null;
  				} // end catch
  			} // end else
  	
  			return transformer;
  		}
  		finally {
  			try {
  				mutex.release();
  			} // end try
  			catch (final Exception e) {}
  		} // end finally
  		
  	}
docs: Get a transformer.
  
  @param properties The properties map.
  
  @return a transformer corresponding to the criterias found in
  the properties map.