Apache JDO Project - [jira] Commented: (JDO-538) Make more JDO APIs generic

This is Interesting: Free IT Magazines  
Home > Archive > Apache JDO Project > October 2007 > [jira] Commented: (JDO-538) Make more JDO APIs generic





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author [jira] Commented: (JDO-538) Make more JDO APIs generic
Craig Russell (JIRA)

2007-10-18, 1:11 pm


[ https://issues.apache.org/jira/brow...action_12535955 ]

Craig Russell commented on JDO-538:
-----------------------------------

Thanks for the comments. There are a couple of things to change based on your observations.

1. I'll need to add the new methods and deprecate the uncooperative methods in the api2-legacy project as well.

2. I forgot to include the update to the signature utility that looks at the varargs pseudo-modifier. The next patch includes the one-line change to recognize "varargs" to mean the flag returned by reflection for methods with a varargs signature.

3. When the varargs concept was introduced, apparently the way it is reported via reflection is to use a modifier that was used to denote a transient field. Since transient is not a valid concept for a method, the modifier was overloaded for the varargs c
oncept. I've found no reference to a constant in reflection for varargs.

4. Yes, since we will apply this change to api2-legacy, it probably makes sense to keep the @deprecated javadoc.

> Make more JDO APIs generic
> --------------------------
>
> Key: JDO-538
> URL: https://issues.apache.org/jira/browse/JDO-538
> Project: JDO
> Issue Type: Improvement
> Components: api2
> Affects Versions: JDO 2 final
> Reporter: Chris Beams
> Assignee: Craig Russell
> Fix For: JDO 2 maintenance release 1
>
> Attachments: jdo-538.patch
>
>
> Several suggestions relating to evolving the API in support of Java5 features:
> 11.6, "Optional Feature Support":
> The current draft specifies the signature
> Collection supportedOptions();
> then continues to read
> "This method returns a Collection of String [...]"
> This suggests that the signature should be
> Collection<String> supportedOptions();
> 14.6.1, "Query Execution"
> I suggest we eliminate
> Object execute(Object p1);
> Object execute(Object p1, Object p2);
> Object execute(Object p1, Object p2, Object p3);
> and deprecate
> Object executeWithArray(Object[] parameters);
> in favor of a newly added
> Object execute(Object... parameters);
> This new method would seamlessly support any existing calls to the three eliminated methods, and is a proper replacement for executeWithArray().
> This would would leave us with three (non-deprecated) execution methods off the Query interface:
> Object execute();
> Object execute(Object... parameters);
> Object executeWithMap(Map parameters);
> A slightly more radical approach to this evolution would have us also eliminate
> Object execute();
> because the new varargs method can by definition support calls without arguments,
> and deprecate
> Object executeWithMap(Map params);
> in favor of a new
> Object execute(Map params);
> because Java can disambiguate between calls to execute(Object... params) and execute(Map params) just fine. This is predecated by the assumption that it would never be valid to pass a Map instance as a first-class query parameter. That might be a faul

ty assumption, it might also just be confusing.
> If all these changes were made, we'd be left with an execution API consisting of just two methods:
> Object execute(Object... params);
> Object execute(Map params);
> This is, I believe, technically favorable and cleaner, but technical considerations are not the only valid ones. Leaving the no-arg execute() might be friendly to folks that don't understand varargs, etc.
> 14.8, "Deletion by Query":
> The rationale used above for paring down Query's execute methods could also be applied to Query's deletePersistentAll methods. It would be legal and Java5-ish to eliminate the no-arg deletePersistentAll method and reduce the API down to:
> long deletePersistentAll(Object... params);
> long deletePersistentAll(Map params);
> ...
> There's a number of other places in the spec changes like the ones mentioned here could be made, but I might be getting ahead of myself :-) I'll await comments before touching on anything else.


--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com