You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Stuart Ballard <st...@gmail.com> on 2006/11/08 04:01:24 UTC

Re: [Japi] [general] interesting discoveries with japitools - part 2

On 11/7/06, Stefano Mazzocchi <st...@apache.org> wrote:
> java.awt.peer:
> Missing
> method java.awt.peer.WindowPeer.updateFocusableWindowState(): missing in
> bea1.5

This one indicates that your set of packages is not correct:
java.awt.peer is not a documented package. Unfortunately getting the
right set of packages is hard on Windows - I just posted on
japitools-list about improving that situation. If you do happen to be
on a unix-like system this should work:

japiextractpkgs docs/api/overview-frame.html >jdk15.pkgs
japize as jdk15 packages jre/lib/*.jar `cat jdk15.pkgs`

where "docs/api" is a folder containing the JDK javadocs.

The trouble is that the "backquote" quoting and the cat command aren't
available on Windows and I'm not aware of an alternative. So the plan
is to get Japize to accept "@jdk15.pkgs" as an alternative syntax. Any
volunteers or anyone who knows where I could find code to do that,
dealing with quoting and the like, under a GPL-compatible license,
please speak up on japitools-list...

> java.util.concurrent:
> Abs.add
> method java.util.concurrent.Delayed.compareTo(java.lang.Object): new
> interface method in bea1.5
>
>
> So, it appears that that Sun added a method that is not available in the
> javadocs (bad Sun, no donut for you!) and that BEA did not (correctly)
> implement.
>
> Also, BEA added the method "compareTo" to the
> java.util.concurrent.Delayed interface. This is not really a problem
> because Delayed extends Comparable, therefore all classes implementing
> Delayed will have to have the compareTo method anyway.

Comparable is really fun in the presence of generics. Does Delayed
implement Comparable or Comparable<Delayed> or Comparable<? extends
Delayed> or what?

If it implements Comparable<Delayed> then it *doesn't* technically
have a compareTo(Object) method but a compareTo(Delayed) instead. If
Sun added a compareTo(Object) method as well... well that'd have some
rather weird effects. I'll need to take a while to get my head round
that. Could you produce and send me Japi files of *just* the Delayed
class in both implementations so I can look at the differences in
detail?

> Stuart, do you think this is something that japitools should check?
>
> I would call this a false positive.

I think it's an indicator of something, I'd say more investigation is
needed before determining it's a Japitools bug.

> java.awt.peer:
> Missing
> method java.awt.peer.WindowPeer.updateFocusableWindowState(): missing in
> ibm1.5

Again peer should not be included.

> java.util.concurrent:
> Abs.add
> method java.util.concurrent.Delayed.compareTo(java.lang.Object): new
> interface method in ibm1.5

Same as above.

> javax.xml.datatype:
> Bad
> field
> javax.xml.datatype.DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS:
> constant
> [com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl]
> in sun1.5, but constant
> [org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl] in ibm1.5

This is an API bug on Sun's part; alternative implementers are screwed
here either way. Constant fields are inlined so the value will be
taken from the implementation the code was *compiled* against, not
what it's running against. Japitools is correct to report this as an
error, but the only *correct* fix is for Sun to un-constify that
field.

> java.util.concurrent:
> Abs.add
> method java.util.concurrent.Delayed.compareTo(java.lang.Object): new
> interface method in sun1.5
> Done.
>
> Hmmm, the compareTo is in both the direct and the reverse? smells like a
> japitool bug to me.

Yes that is odd. Please do send me those two Japi files.

> java.lang:
> Missing
> method java.lang.StringBuilder.append(java.lang.StringBuilder): missing
> in sun1.5

Weird.

>  2) package org.w3c.dom.xpath: missing in sun1.5

This again is a "not getting the right set of packages" issue. Adding
extra packages isn't illegal (at least not in Japitools's view of the
world); the comparisons should be done based on which packages are
*documented* as present.

> The results show clearly that japitools did indeed improve a lot over
> the last released version.

Great :)

> NOTE: the results were taken with the following package passed to the
> "japize" tool:
>
>  +java +javax +org -org.apache -org.ietf

Yup, that's your trouble ;)

Stuart.
-- 
http://sab39.dev.netreach.com/