JDK-4933335 : Not all inherited methods from multiple extended interfaces are documented
  • Type: Bug
  • Component: tools
  • Sub-Component: javadoc(tool)
  • Affected Version: 1.4.2
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: other
  • CPU: generic
  • Submitted: 2003-10-06
  • Updated: 2020-08-31
  • Resolved: 2003-11-11
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 b28Fixed
Description
I have an interface IInterfaceSpecification that extends many others. 
In some cases, the same method signature is present in several of the 
extended interfaces.

When I look at the Javadoc for the extending interface, I see references to 
each of the extended interfaces (in the lists of methods inherited from). 
However, methods that are in each of the extended interfaces sometimes show up 
in the Javadoc for the extending interface and sometimes they don't.

In some cases the methods show up about half the time. That is, the method 
signatures show up in the list of inherited methods for about half the 
interfaces they're actually in. For the rest of the interfaces, they don't show 
up in the inherited methods. However, if I follow the link to the inerface's 
Javadoc page, the method signature is there.

I can't find any pattern (method name alphabetical order, etc) to explain this.

Is there any way to force Javadoc to show references to all instances of an 
inherited method signature?

I'm using the standard doclet, 1.4.2.

I'll enclose two jpg samples of what I'm seeing.

All the methods are public.  

Here are my command line args.  I've had this problem right from the start,
before I added the two custom tags.

{params} -tag database.Attribute:a:"Database Attribute"
-tag database.Table:a:"Database Table" -use  -classpath {filesystems} {files}

More specifically, the IInterfaceSpecification methods marked with ">" are
inherited from IAccountProductSpecifcation, but the rest are not.

IInterfaceSpecification extends IAccountProductSpecification

IAccountProductSpecification

    public void setCreateUserid(String userid);
    public String getCreateUserid();
    public void setCreateDate(java.sql.Date createDate);
    public java.sql.Date getCreateDate();
 >  public String getDealerNum();
 >  public void setDealerNum(String dealerNum);  
 >  public void setState(String state);
 >  public String getState();
 >  public void setZip(String zip);
 >  public String getZip();
    public void setTa(String ta);
    public String getTa();
   

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger tiger-beta FIXED IN: tiger-beta INTEGRATED IN: tiger-b28 tiger-beta
14-06-2004

PUBLIC COMMENTS Fixed. ###@###.### 2003-10-26
26-10-2003

EVALUATION Can reproduce ###@###.### 2003-10-06 Fixed bug in method inheritence algorithm so that multiple extended interfaces are properly supported. [seligman, dkramer] There are three problems here: 1. Suppose I1 extends I2, I3. Also, suppose I2 extends I3. The visible methods should be computed from the following tree: I3 I2 I1 Unfortunately, this is what the doclet is doing : I2 I3 \ / I1 The change on line 205 fixed this problem. If the doclet realizes that I2 extends I3, it will map I2 as a child of I3. 2. When the list of extended/implemented interfaces are analyzed, the interfaces at the beginning of the list are given higher priority than the interfaces at the end of the list. Therefore, if the first and last interface each have a method with identical signatures, only the method from the first interface is inherited. All the interfaces should be given the same priority and the method should be inherited from both interfaces. [Fixed near line 224] 3. Suppose I1 extends I2, I3. I2 and I3 are not related to each other but both have a method x that has the exact same signature. I1 should inherit x from I2 AND I3, not just from the first interface in the list with that method. [Fixed newr line 387] ###@###.### 2003-10-26
26-10-2003