Hmmm, it seems to me that something is wrong if a UIMA pipeline ended up sending a CAS to a sofa-unaware component without a default view having been set up. I would guess that in this situation, it would be better to throw an exception rather than hide this by automatically creating the view. If a missing view is created, its subject-of-analysis would be left unset? I'm guessing that most sofa-unaware annotators would not expect that, and would fail in mysterious ways.

What would be the use cases where it would be more valuable to create the view, rather than signal something's amiss?

-Marshall



On 6/9/2012 10:38 AM, Richard Eckart de Castilho (JIRA) wrote:
Richard Eckart de Castilho created UIMA-2419:
------------------------------------------------

              Summary: Initial view for sofa unaware components not 
automatically created
                  Key: UIMA-2419
                  URL: https://issues.apache.org/jira/browse/UIMA-2419
              Project: UIMA
           Issue Type: Bug
           Components: Core Java Framework
             Reporter: Richard Eckart de Castilho


When running a sofa-unaware component in an aggregate analysis engine, the initial view 
for the component to operate on is not automatically created if it does not exist. This 
causes a CASRuntimeException, here "No sofaFS with name A found.".

{noformat}
org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator 
processing failed.
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:394)
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
        at 
org.apache.uima.analysis_engine.asb.impl.ASB_impl$AggregateCasIterator.processUntilNextOutputCas(ASB_impl.java:568)
        at 
org.apache.uima.analysis_engine.asb.impl.ASB_impl$AggregateCasIterator.<init>(ASB_impl.java:410)
        at 
org.apache.uima.analysis_engine.asb.impl.ASB_impl.process(ASB_impl.java:343)
        at 
org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.processAndOutputNewCASes(AggregateAnalysisEngine_impl.java:265)
        at 
org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.processAndOutputNewCASes(AnalysisEngineImplBase.java:340)
          ...
Caused by: org.apache.uima.cas.CASRuntimeException: No sofaFS with name A found.
        at org.apache.uima.cas.impl.CASImpl.getSofa(CASImpl.java:661)
        at org.apache.uima.cas.impl.CASImpl.getView(CASImpl.java:2658)
        at org.apache.uima.impl.Util.getStartingView(Util.java:46)
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:349)
        ... 31 more
{noformat}

I'd consider this a bug, because a sofa-unaware component cannot be expected to 
create a view itself. If the sofa-unaware component is the first one in an 
aggregate, e.g. acting as a reader, then there is also no other component to 
create the view before.

If the initial view of a component it is mapped to does not exist, it should be 
the task of the UIMA framework to create this view.

See also CPE ArtifactProducer:481 (UIMA 2.4.0).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



Reply via email to