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
--
Roberto Franchini
http://www.celi.it
http://www.blogmeter.it
http://www.memesphere.it
Tel +39-011-6600814
jabber:[EMAIL PROTECTED] skype:ro.franchini