Re: JDom and Java5

Victor Toni <[email protected]>
Newsgroups gmane.comp.java.jdom.general
Message-ID <[email protected]>
Mattias Jiderhamn wrote:
> Rolf wrote (2008-02-27 17:19):
>> Mattias Jiderhamn wrote:
>>> Rolf wrote (2008-02-27 15:54):
>>>> Mattias Jiderhamn wrote:
>>>>> Rolf wrote (2008-02-27 02:55):
>>>>>> On the other hand, I think it would also be a *very good* 
>>>>>> solution to leave the method with a return type of List<?> 
>>>>>> because, as far as I can tell, it is fully compile-time 
>>>>>> backward-compatible with existing code,  ... I am sure would be 
>>>>>> far more receptive to migrate to 'JDom2' if the migration was 
>>>>>> 'seamless'.
>>>>> Does this mean you managed to compile
>>>>>  List<Elements> l = XPath.selectNodes(...)
>>>>> if XPath.selectNodes() returns List<?>; the case where I had to 
>>>>> add an explicit cast in comparison with the old raw "List" version 
>>>>> to avoid "incompatible types" error?
>>>>> How?
>>>>>
>>>> No, but this is what I can do...
>>>>
>>>> ...
>>>>
>>>> Now, the code following the above snippet is:
>>>>
>>>>        out.println("This WAR has "+ servlets.size() +" registered 
>>>> servlets:");
>>>>        Iterator i = servlets.iterator();
>>>>        while (i.hasNext()) {
>>>>            Element servlet = (Element) i.next();
>>>>            out.print("\t" + servlet.getChild("servlet-name")
>>>>                                    .getTextTrim() +
>>>>                      " for " + servlet.getChild("servlet-class")
>>>>                                       .getTextTrim());
>>>>            List initParams = servlet.getChildren("init-param");
>>>>            out.println(" (it has " + initParams.size() + " init 
>>>> params)");
>>>>        }
>>>>
>>>> The above construct is very typical of 'legacy' JDom and XPath usage.
>>>>
>>>> So, by returning List<?>, there are only compile-time warnings in 
>>>> existing legacy code, and the only difference between JDom1.1 and 
>>>> JDom2 is the details on the compiler warnings.
>>>
>>> Yes, but some of us have existing projects using Java5 and JDOM. In 
>>> some of those cases your port will - as far as I can understand - 
>>> NOT be "fully compile-time backward-compatible".
>>> I just want everybody to be fully aware of that.
>>>
>>> /Mattias
>>>
>>
>> Hmmm. that is a new angle on it, but, for the life of me, I can't 
>> think of any situation where it breaks things.... How could changing 
>> the return type from 'List' to 'List<?>' break any code? Returning 
>> List<Element> would surely break things though......
>
> See the (real life) example I have provided
>   List<Elements> l = XPath.selectNodes(...)
> gives a compiler warning with the current JDOM release, but does not 
> compile against your code.
>
> If we want a drop in replacement, I believe we will have to stick with 
> raw "List" for selectNodes().
>
> (It may also be worth noting that the main, or at least first, users 
> of JDOM with Java5 are probably those already on Java5 projects using 
> JDOM).
One could still use the mentioned "<T> List<T>" approach. This should 
work for old and new code without needing an explicit cast...
_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.