On Thu, Dec 9, 2010 at 5:12 AM, Ben Morgan <[email protected]> wrote: > Eddie wrote: >> As I understand it, your aggregate has two delegates: the first is >> sofa aware, reads the input data from the _InitialView and creates a >> new view called plainText; the second delegate is sofa unaware and >> expects to get the plainText view passed to it. > > The aggregate is not quite like that: > _InitialView > -> urlString (input sofa of pdfextractor) > plainText > <- "extractedText" output sofa/view from pdfextractor > -> goes to "_InitialView" input of email annotator
With sofamapping, the toplevel <aggregateSofaName> is the actual name of View in the CAS. Here one should find the views named _InitialView and extractedText >> This all works fine when run from CVD. When run from SimpleServer, >> processing crashes trying to access plainText. Presumably this is >> happening when the second delegate is being called. This could happen >> if for some reason sofamapping is broken when running under >> SimpleServer. >> >> It would be useful to: >> 1. know that the 1st delegate is running ok, and the problem is on the 2nd > > When I tested the 1st delegate alone with SimpleServer, it did not output > what I expected. In the SimpleServer UI, you can choose what kind of output > you want, and I chose "Inline XML". I got as a Result then: > > <Result> http://input-text/url-to-the.pdf </Result> > > But this result came back faster than the component could have processed the > input (it should have taken 3 seconds at least, instead of a few > milliseconds). I'm assuming that SimpleServer is only looking in _InitialView to extract results. > So the 1st delegate independantly did not work, while the 2nd delegate did. > >> 2. dumping the Cas contents after calling the first delegate to see >> exactly what is in there. This can be done by putting XmiSerialization >> code at the end of the 1st delegate. > > I assume that I would do this in my own code. (As in, I wouldn't touch the > code of the SimpleServer). Alright, I'll try to do that and see what comes > out. Dumping the CAS to stdout is basically a one liner: try { XmiCasSerializer.serialize(aCAS, System.out); } catch (SAXException e1) { e1.printStackTrace(); }
