Details

    • Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.6.1
    • Fix Version/s: 2.8
    • Labels:
      None
    • Environment:
    • Patch Submitted:
      Yes
    • Number of attachments :
      2

      Description

      When setting 'detectLinks' to 'true', the plugin checks that access to the constructed package-list files is possible by checking the HTTP status code to match 200. This check should be more strict and additionally check that the accessed package-list file is of correct type. For example, if setting detect links to 'true' and having a dependency on 'javax.annotation:jsr250-api' the plugin will add a link like 'http://jcp.org/aboutJava/communityprocess/final/jsr250/index.html/apidocs' so that javadoc will then try to access the package-list file located at 'http://jcp.org/aboutJava/communityprocess/final/jsr250/index.html/apidocs/package-list'. That link returns a HTTP status code 200 but no valid package-list file. Using the following javadoc plugin configuration

              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                  <breakiterator>true</breakiterator>
                  <keywords>true</keywords>
                  <linksource>true</linksource>
                  <serialwarn>true</serialwarn>
                  <source>1.5</source>
                  <doctitle>${project.name} ${project.version}</doctitle>
                  <windowtitle>${project.name} ${project.version}</windowtitle>
                  <detectJavaApiLink>true</detectJavaApiLink>
                  <detectOfflineLinks>false</detectOfflineLinks>
                  <detectLinks>true</detectLinks>
                  <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
                  <docletArtifact>
                    <groupId>org.umlgraph</groupId>
                    <artifactId>doclet</artifactId>
                    <version>5.1</version>
                  </docletArtifact>
                  <tagletArtifacts>
                    <tagletArtifact>
                      <groupId>org.apache.maven.plugin-tools</groupId>
                      <artifactId>maven-plugin-tools-javadoc</artifactId>
                      <version>2.5</version>
                    </tagletArtifact>
                    <tagletArtifact>
                      <groupId>org.codehaus.plexus</groupId>
                      <artifactId>plexus-javadoc</artifactId>
                      <version>1.0</version>
                    </tagletArtifact>
                  </tagletArtifacts>
                  <additionalparam>
                    -inferrel -inferdep -hide java.* -collpackages java.util.* -qualify -postfixpackage -nodefontsize 9
                    -nodefontpackagesize 7
                  </additionalparam>
                  <archive>
                    <index>true</index>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <compress>true</compress>
                  </archive>
                </configuration>
              </plugin>
      

      the configured umlgraph doclet will fail when trying to parse the retrieved HTML document as a package-list file.

      1. MJAVADOC-283.patch
        11 kB
        Christian Schulte
      2. MJAVADOC-283.patch
        2 kB
        Christian Schulte

        Issue Links

          Activity

          Hide
          Christian Schulte added a comment -

          Patch adding a check of the HTTP Content-Type response header when validating javadoc links.

          Show
          Christian Schulte added a comment - Patch adding a check of the HTTP Content-Type response header when validating javadoc links.
          Hide
          Christian Schulte added a comment -

          Attached patch would break 'http://junit.org/apidocs/package-list' with content type 'text/html; charset=UTF-8' although a valid package-list file. Maybe better add parameters for excluding/including the dependencies to use with 'detectLinks'.

          Show
          Christian Schulte added a comment - Attached patch would break 'http://junit.org/apidocs/package-list' with content type 'text/html; charset=UTF-8' although a valid package-list file. Maybe better add parameters for excluding/including the dependencies to use with 'detectLinks'.
          Hide
          Herve Boutemy added a comment -

          or read tha actual content downloaded and check that there a no spaces nor <: I think this heuristic should be sufficient
          WDYT?

          Show
          Herve Boutemy added a comment - or read tha actual content downloaded and check that there a no spaces nor <: I think this heuristic should be sufficient WDYT?
          Hide
          Christian Schulte added a comment -

          Patch adding a 'validateLinks' option which will cause the plugin to download and validate the content of 'package-list' resources.

          Show
          Christian Schulte added a comment - Patch adding a 'validateLinks' option which will cause the plugin to download and validate the content of 'package-list' resources.
          Hide
          Herve Boutemy added a comment -

          patch applied in r1096493 with updated unit-tests

          thank you

          Show
          Herve Boutemy added a comment - patch applied in r1096493 with updated unit-tests thank you

            People

            • Assignee:
              Herve Boutemy
              Reporter:
              Christian Schulte
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: