You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by "Richard Eckart de Castilho (JIRA)" <de...@uima.apache.org> on 2014/04/24 18:59:14 UTC

[jira] [Commented] (UIMA-3776) Delegate AEs no longer serialized to XML after resolving imports on aggregate

    [ https://issues.apache.org/jira/browse/UIMA-3776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13979956#comment-13979956 ] 

Richard Eckart de Castilho commented on UIMA-3776:
--------------------------------------------------

MetaDataObject_impl.getAttributes() does not automatically detect the attribute "delegateAnalysisEngineSpecifiers" because it has no setter. AnalysisEngineDescription_impl.getAdditionalAttributes() does not return "delegateAnalysisEngineSpecifiers", only "delegateAnalysisEngineSpecifiersWithImports".
However, AnalysisEngineDescription_impl.writePropertyAsElement(PropertyXmlInfo, String, ContentHandler) has the following logic:

{noformat}
String propName = PROP_DELEGATE_ANALYSIS_ENGINE_SPECIFIERS;
      if (mDelegateAnalysisEngineSpecifiers.isEmpty()) {
        propName = PROP_DELEGATE_ANALYSIS_ENGINE_SPECIFIERS_WITH_IMPORTS;
      }
      writeMapPropertyToXml(propName, ELEM_DELEGATE_ANALYSIS_ENGINE_SPECIFIERS, "key",
              "delegateAnalysisEngine", aPropInfo.omitIfNull, aNamespace, aContentHandler);
{noformat}

Note that writeMapPropertyToXml uses MetaDataObject_impl.getAttributes() internally. Thus, after resolving imports and thus causing mDelegateAnalysisEngineSpecifiers not to be empty anymore, the delegates are no longer serialized because writeMapPropertyToXml has no access to "delegateAnalysisEngineSpecifiers".

It should be save to e add a read-only attribute for delegateAnalysisEngineSpecifiers to AnalysisEngineDescription_impl using getDelegateAnalysisEngineSpecifiers() as a getter method. 

> Delegate AEs no longer serialized to XML after resolving imports on aggregate
> -----------------------------------------------------------------------------
>
>                 Key: UIMA-3776
>                 URL: https://issues.apache.org/jira/browse/UIMA-3776
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>            Reporter: Richard Eckart de Castilho
>             Fix For: 2.6.0SDK
>
>
> This is a regression in the UIMA SDK 2.6.0 RC 1 and worked in UIMA SDK 2.5.0.
> * Add a full delegate description to an AAE.
> * Serialize to XML: delegate description is serialized.
> * Call resolveImports()
> * Serialize to XML: delegate description is no longer serialized.
> {noformat}
>   public void testNoDelegatesToResolve() throws Exception {
>     ResourceSpecifierFactory f = UIMAFramework.getResourceSpecifierFactory();
>     AnalysisEngineDescription outer = f.createAnalysisEngineDescription();
>     AnalysisEngineDescription inner = f.createAnalysisEngineDescription();
>     outer.getDelegateAnalysisEngineSpecifiersWithImports().put("inner", inner);
>     StringWriter outerXml = new StringWriter();
>     outer.toXML(outerXml);
>     
>     // Resolving the imports removes the inner AE description
>     outer.resolveImports(UIMAFramework.newDefaultResourceManager());
>     
>     StringWriter outerXml2 = new StringWriter();
>     outer.toXML(outerXml2);
>     Assert.assertEquals(outerXml.toString(), outerXml2.toString());
>   }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)