Details
-
Type:
Improvement
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: General
-
Labels:None
-
Environment:all
-
Number of attachments :
Description
Currently we have four abstract levels of FieldHandler's even that we use the top interface, one abstract implementation and then a couple of concrete implementations...
I plan to use this issue to first collect my findings and then decide how to move forward.
My motivation to refactor it is because it is hard to implement new behaviours on top of it (e.g. JAXB stuff).
e.g. the following casts are used... maybe the interface is to narrow??
cpa/src/main/java/org/exolab/castor/jdo/engine/SQLEngine.java: FieldHandlerImpl fh = (FieldHandlerImpl) baseIdDescriptors[i].getHandler();
cpa/src/main/java/org/exolab/castor/jdo/engine/SQLFieldInfo.java: FieldHandlerImpl fh = (FieldHandlerImpl) relId.getHandler();
cpa/src/main/java/org/exolab/castor/jdo/engine/SQLFieldInfo.java: FieldHandlerImpl fh = (FieldHandlerImpl) jdoFieldDesc.getHandler();
cpa/src/main/java/org/exolab/castor/persist/ClassMolder.java: FieldHandlerImpl fh = (FieldHandlerImpl) fd[j].getHandler();
cpa/src/main/java/org/exolab/castor/persist/ClassMolder.java: FieldHandlerImpl fh = (FieldHandlerImpl) relatedIds[j].getHandler();
src/main/java/org/exolab/castor/mapping/loader/AbstractMappingLoader.java: ((FieldHandlerImpl) field.getHandler()).setRequired(true);
src/main/java/org/exolab/castor/xml/Introspector.java: ((FieldHandlerImpl)handler).setAddMethod(methodSet.add);
src/main/java/org/exolab/castor/xml/Introspector.java: ((FieldHandlerImpl)handler).setCreateMethod(methodSet.create);
src/main/java/org/exolab/castor/xml/Introspector.java: ((FieldHandlerImpl)handler).setConvertFrom(new IdentityConvertor());
src/main/java/org/exolab/castor/xml/Introspector.java: ((FieldHandlerImpl)handler).setConvertFrom(new IdentityConvertor());
src/main/java/org/exolab/castor/xml/UnmarshalHandler.java: collection = ((FieldHandlerImpl) tempHandler).isCollection();
src/main/java/org/exolab/castor/xml/XMLMappingLoader.java: FieldHandlerImpl handlerImpl = (FieldHandlerImpl)handler;