[
https://issues.apache.org/jira/browse/JDO-483?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14994046#comment-14994046
]
Michael Bouschen commented on JDO-483:
--------------------------------------
I think without a valid use case why an application needs to call isLoaded I do
not see a need to support it. So if we do not find such a use case I propose to
resolved the JIRA as won't fix.
What do you think?
> Add JDOHelper.isLoaded methods
> ------------------------------
>
> Key: JDO-483
> URL: https://issues.apache.org/jira/browse/JDO-483
> Project: JDO
> Issue Type: Improvement
> Components: api, api2-legacy
> Affects Versions: JDO 2 maintenance release 1 (2.1)
> Reporter: Matthew T. Adams
> Fix For: JDO 3.2
>
>
> I'm putting forth a proposal to add a method to JDOHelper that allows users
> to determine whether or not a given object's field is loaded. There are two
> options to handle implementations that won't/can't support loaded field
> checking, especially when detached (essentially binary compatible v.
> non-binary compatible implementations). Option A adopts an approach that
> uses Boolean objects instead of primitives, leaving null as a return value
> for implementations that won't/can't support it. Option B takes an
> exception-based approach and uses boolean primitives. I'm not sure which I
> prefer; let's discuss.
>
> <proposal option="A">
>
> JDOHelper
>
> Checking whether fields are loaded
>
> In some use cases, an application may need to know whether or not a given
> field is loaded, for example when marshaling data from detached objects to
> data transfer objects (DTOs).
>
> Transient fields
>
> Transient fields are always considered loaded.
>
> Implementation support
>
> Some implementations may not be able to support the ability to check the
> loaded status of a field, especially when the object is detached. If the
> implementation does not support checking whether a field is loaded, then it
> must return null from the isLoaded methods.
>
> Boolean isLoaded(String fieldName, Object pc);
>
> If the field in the most-derived class of the given object's class identified
> by the given name is loaded in the given object, Boolean.TRUE is returned.
> If the field is not loaded, Boolean.FALSE is returned. If the given field
> name is not declared by the given object's class or its direct or indirect
> superclasses, then JDOUserException is thrown. If the implementation does
> not support checking the loaded state of a field, null is returned. This
> method is equivalent to calling isLoaded(fieldName, pc, pc.getClass());
>
> Boolean isLoaded(String fieldName, Object pc, Class c);
>
> This method exists to support the case where a class hides fields defined in
> a superclass and an application wants to determine the loaded state of the
> field in the superclass. In most cases, the given Class, c, will be
> identical to the class of the given object, pc (that is, c == pc.getClass()
> will return true). If the class of the given object, pc, is a subclass of
> the given Class, c, then the loaded state of the field defined on c is given.
> If the given Class c is not identical to the class of or a superclass of the
> given object, pc, then JDOUserException is thrown. If the given Class
> represents an interface, then JDOUserException is thrown.
>
> If the field of the given class is loaded, Boolean.TRUE is returned. If the
> field is not loaded, Boolean.FALSE is returned. If the implementation does
> not supporting checking the loaded state of a field, null is returned.
>
> </proposal>
>
> <proposal option="B">
>
> JDOHelper
>
> Checking whether fields are loaded
>
> In some use cases, an application may need to know whether or not a given
> field is loaded, for example, when marshaling data from detached objects to
> data transfer objects (DTOs).
>
> Transient fields
>
> Transient fields are always considered loaded.
>
> Implementation support
>
> Some implementations may not be able to support the ability to check the
> loaded status of a field, especially when the object is detached. If the
> implementation does not support checking whether a field is loaded, then it
> must throw JDOUnsupportedOperationException from the isLoaded methods.
>
> boolean isLoaded(String fieldName, Object pc);
>
> If the field in the most-derived class of the given object's class identified
> by the given name is loaded in the given object, true is returned, otherwise
> false is returned. If the given field name is not defined by the given
> object's class or its direct or indirect superclasses, then a
> JDOUserException is thrown. If the implementation does not support checking
> the loaded state of a field, JDOUnsupportedOptionException is thrown. This
> method is equivalent to calling isLoaded(fieldName, pc, pc.getClass());
>
> boolean isLoaded(String fieldName, Object pc, Class c);
>
> This method exists to support the case where a class hides fields defined in
> a superclass and an application wants to determine the loaded state of the
> field in the superclass. In most cases, the given Class, c, will be
> identical to the class of the given object, pc. If the class of the given
> object, pc, is a subclass of the given Class, c, then the loaded state of the
> field defined on c is given. If the given Class c is not identical to the
> class and is not a superclass of the given object, pc, then a
> JDOUserException is thrown. If the given Class represents an interface, then
> JDOUserException is thrown.
>
> If the field of the given class is loaded, true is returned, otherwise false
> is returned. If the implementation does not support checking the loaded
> state of a field, JDOUnsupportedOptionException is thrown.
>
> </proposal>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)