Completely refactor TypeHandling code
--------------------------------------
Key: OODT-147
URL: https://issues.apache.org/jira/browse/OODT-147
Project: OODT
Issue Type: Improvement
Components: file manager
Affects Versions: 0.2, 0.1-incubating
Environment: indep. of env.
Reporter: Chris A. Mattmann
Assignee: Chris A. Mattmann
Priority: Critical
Fix For: 0.3
The o.a.oodt.cas.filemgr.structs.type.* package contains code originally
intended to strongly type Metadata elements within CAS file manager. IOW, it
was originally conceived to make declaring a type for an Element easy. Consider
the un-typed CAS file manager policy below:
{code}
<element id="urn:oodt:ProductReceivedTime" name="ProductReceivedTime">
..
</element>
{code}
which currently doesn't specify its type as a {noformat}Date{noformat} when it
clearly is a {noformat}Date{noformat} element.
Type handling was supposed to take care of this. As it stands, there are a
number of fundamental disconnects with type handling:
# There are absolutely 0 examples of how to use it. The existing example is not
tailored for the general audience and does little to inform a user of what Type
handling is supposed to do.
# Type handlers are attached to Product Type (repo manager) policy when instead
they really should be a part of the Validation layer policy (i.e., elements.xml)
# Type handlers aren't configurable.
# There is no way to map a TypeHandler alias or name (e.g.., instead of having
to declare the FQCN o.a.oodt.cas.filemgr.structs.type.DateTypeHandler, we
should be able to specify DateType).
# The TypeHandler interface is dependent on a ProductType.
In order to address the above concerns I'm going to attach a patch that does
the following:
# Moves type handler declarations to Validation layer policy (elements.xml).
# Refactors the TypeHandler interface to be configurable.
# Refactors the TypeHandler interface to be independent of ProductType.
# Allows for easy aliasing of TypeHandlers.
# By default assigns all default CAS elements that ship with the CAS file
manager a default type.
# Adds a bunch more documentation.
# Adds unit tests.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira