package lux.compiler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import lux.Compiler; import net.sf.saxon.Configuration; import net.sf.saxon.s9api.Processor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class EXPathSupport { public static void initializeEXPath(Processor p) { Logger log = LoggerFactory.getLogger(Compiler.class); // initialize the EXPath package manager Class<?> pkgInitializerClass; try { pkgInitializerClass = Class.forName("org.expath.pkg.saxon.PkgInitializer"); Object pkgInitializer = null; try { pkgInitializer = pkgInitializerClass.newInstance(); } catch (InstantiationException e) { log.error (e.getMessage()); return; } catch (IllegalAccessException e) { log.error (e.getMessage()); return; } Method initialize = pkgInitializerClass.getMethod("initialize", Configuration.class); initialize.invoke(pkgInitializer, p.getUnderlyingConfiguration()); } catch (ClassNotFoundException e) { log.error("EXPath repository declared, but EXPath Saxon package support classes are not available", e); } catch (SecurityException e) { log.error (e.getMessage()); } catch (NoSuchMethodException e) { log.error (e.getMessage()); } catch (IllegalArgumentException e) { log.error (e.getMessage()); } catch (IllegalAccessException e) { log.error (e.getMessage()); } catch (InvocationTargetException e) { log.error (e.getMessage()); } } }