Re: JDom and Java5

Rolf <[email protected]>
Newsgroups gmane.comp.java.jdom.general
Message-ID <[email protected]>
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......

... which leads me to think that some people will have issues when they 
have code that they have ported, for example, that has List<Object> kids 
= (List<Object>)element.getChildren() which would have compiled (with 
warnings) using JDom 1.1, but, will compile with errors using 'JDom2'. 
In other words, maybe JDom2 will not be a drop-in replacement for some 
people.

As for issues with List<?>, there must be something I am missing.... do 
you have an example that shows your concerns?

Rolf
_______________________________________________
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.