You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by "Chris A. Mattmann (JIRA)" <ji...@apache.org> on 2014/08/03 20:16:12 UTC

[jira] [Commented] (OODT-689) XmlStructFactory generates invalid ProductType if policy is missing "" or ""

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

Chris A. Mattmann commented on OODT-689:
----------------------------------------

sounds good Reesh, feel free to throw up a patch.

> XmlStructFactory generates invalid ProductType if policy is missing "<metadata/>" or "<metExtractors/>"
> -------------------------------------------------------------------------------------------------------
>
>                 Key: OODT-689
>                 URL: https://issues.apache.org/jira/browse/OODT-689
>             Project: OODT
>          Issue Type: Sub-task
>          Components: file manager
>    Affects Versions: 0.6
>            Reporter: Rishi Verma
>            Assignee: Rishi Verma
>             Fix For: 0.8
>
>
> The XmlStructFactory class [1] can generate invalid ProductType objects if an XML product-types.xml file has policy missing either the "<metadata/>" tag or the "<metExtractors/>" tag. Moreover, if these nodes are missing, the user is not informed about the missing elements and is instead presented with a NullPointerException when new policy is written automatically via the AddProductTypeCliAction (or other such tools).
> I propose the following:
> * XmlStructFactory's getProductType method should NOT default the initialization of the met (Metadata) object or the extractors (List<ExtractorSpec>) object to be null. Instead, they should be initialized as an empty Metadata object and an empty Vector<ExtractorSpec> list respectively.
> * XmlStructFactory's getProductType method should warn the user via a Logger warning that either a "<metadata/>" or "<metExtractors/>" node is missing
> The reason I propose we default the metadata and metExtractors object to be empty objects instead of null objects, is because of the way the ProductType [2] object constructor is configured. By default, instantiating a new ProductType object leads its internal Metadata and metExtractors objects being set to empty objects instead of null objects. However, through the XmlStructFactory, this pattern breaks when a metadata or metExtractors node is not present in policy - these objects are set to null and the new ProductType that is generated on line 202 of XmlStructFactory is corrupted. This can be prevented by a simple initialization change as proposed. 



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