I'm writing an extension to an existing application. The idea is that the user will select a CPE descriptor and do some configuration, then the application will run the CPE through UIMA and load the results into the application.
I've got a lot of the parts of the code working individually, but I'm having a few issues: 1) The CPE may include annotators that aren't on the classpath. I can find the bin directory that contains the class files (based on the location of each annotators descriptor file), and create a URLClassLoader that references that directory (and hence finds the annotators) - but I can't figure out how to get UIMA to use that classloader. Any ideas how I'd do this, or is there a better way of loading in annotators that aren't on the classpath? (And no, it isn't feasible to add the directories to the classpath before hand) 2) In order to do the configuration (primarily mapping the UIMA outputs from UIMA to my application), I need to know the type system the CPE will produce so the user can do the mapping. I can't find a way of getting the type system before running the pipeline though. Is this achievable through UIMA, or am I going to have to parse the XML files myself to build the type system? 3) A much simpler question (I hope). Once I've run the process() method on the CPE, how do I get the output? Do I have to have a Consumer in the pipeline that will somehow pass the CAS objects to my application, or can I get at them directly? Thanks, James
