And here's the relevant passage in the docs:
http://incubator.apache.org/uima/downloads/releaseDocs/2.2.2-incubating/docs/html/tutorials_and_users_guides/tutorials_and_users_guides.html#ugr.tug.application.setting_configuration_parameters
--Thilo
Roberto Franchini wrote:
On Wed, Oct 29, 2008 at 9:10 AM, Isabel Drost <[EMAIL PROTECTED]> wrote:
Hello,
I am about to do my first steps using UIMA. I started out with the tutorial
and am about to write my first CollectionReader (extending
CollectionReader_ImplBase). As the tutorial says, I implemented initialize()
to init the reader from its config parameters:
...
File webKbDir = new File((String) getConfigParameterValue(PARAM_INPUTDIR));
...
In order to test the class I created a unit test. I thought it might be a good
idea to set the parameters of the reader in the setUp method of my test like
this:
...
public void setUp() throws Exception {
this.reader = new WebKbReader();
URL path = this.getClass().getResource("dataset");
String pathString = path.getPath();
this.reader.setConfigParameterValue(WebKbReader.PARAM_INPUTDIR, path);
this.reader.initialize();
}
...
Unfortunately this gives me a null pointer exception in the line setting the
config parameter that comes from inside UIMA:
java.lang.NullPointerException
at
org.apache.uima.resource.ConfigurableResource_ImplBase.getConfigParameterValue(ConfigurableResource_ImplBase.java:37)
at
org.apache.mahout.clustering.webkb.kmeans.WebKbReader.initialize(WebKbReader.java:58)
I had a look at the UIMA code, the line throwing the exception is the
following:
public void setConfigParameterValue(String aParamName, Object aValue) {
getUimaContextAdmin().getConfigurationManager().setConfigParameterValue(
getUimaContextAdmin().getQualifiedContextName() + aParamName, aValue);
}
I guess I am just making some stupid beginners mistake - forgot to initialize
some internal UIMA object before calling my reader? Unfortunately I have no
clue what could have gone wrong. Any help would be appreciated.
If you search in the list archives you will find a thread on that subject.
Here a snippet
//rfcr is a reader
CasManager casManager = rfcr.getCasManager();
casManager.addMetaData((ProcessingResourceMetaData)
rfcr.getMetaData());
casManager.defineCasPool("pool", 2, null);
int fileCounter = 0;
while (rfcr.hasNext()) {
CAS cas = casManager.getCas("pool");
rfcr.getNext(cas);
fileCounter++;
Progress[] progress = rfcr.getProgress();
assertEquals(fileCounter,
progress[0].getCompleted());
cas.release();
}
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
To get rfcr (reader for you) parse the descriptor programmatically:
XMLInputSource xml = new
XMLInputSource("/my/path/desc.xml");
ResourceSpecifier aSpecifier =
UIMAFramework.getXMLParser().parseCollectionReaderDescription(xml );
reader
=UIMAFramework.produceCollectionReader(aSpecifier );
I hope this help you.
Roberto