[ https://issues.apache.org/jira/browse/MJAVADOC-783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17796218#comment-17796218 ]
ASF GitHub Bot commented on MJAVADOC-783: ----------------------------------------- elharo commented on code in PR #255: URL: https://github.com/apache/maven-javadoc-plugin/pull/255#discussion_r1425267623 ########## src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java: ########## @@ -118,32 +119,54 @@ public class JavadocUtil { + "environment variable using -Xms:<size> and -Xmx:<size>."; /** - * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in - * <code>dirs</code> could be an absolute or relative against the project's base directory <code>String</code> path. + * Method that removes invalid classpath elements in the specified paths. <b>Note</b>: All elements in + * <code>paths</code> could be absolute or relative against the project's base directory <code>String</code> path. + * When pruning class paths, you can optionally include "*.jar" files in the result, otherwise only directories are + * permitted. * * @param project the current Maven project not null - * @param dirs the collection of <code>String</code> directories path that will be validated. - * @return a List of valid <code>String</code> directories absolute paths. + * @param paths the collection of <code>String</code> paths that will be validated + * @param includeJars whether to include JAR files in the result + * @return a list of valid <code>String</code> directories and optionally JAR files as absolute paths */ - public static Collection<Path> pruneDirs(MavenProject project, Collection<String> dirs) { + public static Collection<Path> prunePaths(MavenProject project, Collection<String> paths, boolean includeJars) { final Path projectBasedir = project.getBasedir().toPath(); - Set<Path> pruned = new LinkedHashSet<>(dirs.size()); - for (String dir : dirs) { - if (dir == null) { + Set<Path> pruned = new LinkedHashSet<>(paths.size()); + for (String path : paths) { + if (path == null) { continue; } - Path directory = projectBasedir.resolve(dir); - - if (Files.isDirectory(directory)) { - pruned.add(directory.toAbsolutePath()); + Path resolvedPath = projectBasedir.resolve(path); + + if (Files.isDirectory(resolvedPath) + || includeJars + && Files.isRegularFile(resolvedPath) + && resolvedPath + .getFileName() + .toString() + .toLowerCase(Locale.ROOT) + .endsWith(".jar")) { + pruned.add(resolvedPath.toAbsolutePath()); } } return pruned; } + /** + * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in + * <code>dirs</code> could be absolute or relative against the project's base directory <code>String</code> path. + * + * @param project the current Maven project not null + * @param dirs the collection of <code>String</code> directories that will be validated Review Comment: the collection of <code>String</code> directories --> the paths of the directories are these relative or absolute? ########## src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java: ########## @@ -118,32 +119,54 @@ public class JavadocUtil { + "environment variable using -Xms:<size> and -Xmx:<size>."; /** - * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in - * <code>dirs</code> could be an absolute or relative against the project's base directory <code>String</code> path. + * Method that removes invalid classpath elements in the specified paths. <b>Note</b>: All elements in + * <code>paths</code> could be absolute or relative against the project's base directory <code>String</code> path. + * When pruning class paths, you can optionally include "*.jar" files in the result, otherwise only directories are + * permitted. * * @param project the current Maven project not null - * @param dirs the collection of <code>String</code> directories path that will be validated. - * @return a List of valid <code>String</code> directories absolute paths. + * @param paths the collection of <code>String</code> paths that will be validated + * @param includeJars whether to include JAR files in the result + * @return a list of valid <code>String</code> directories and optionally JAR files as absolute paths Review Comment: what does valid mean here? ########## src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java: ########## @@ -118,32 +119,54 @@ public class JavadocUtil { + "environment variable using -Xms:<size> and -Xmx:<size>."; /** - * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in - * <code>dirs</code> could be an absolute or relative against the project's base directory <code>String</code> path. + * Method that removes invalid classpath elements in the specified paths. <b>Note</b>: All elements in + * <code>paths</code> could be absolute or relative against the project's base directory <code>String</code> path. + * When pruning class paths, you can optionally include "*.jar" files in the result, otherwise only directories are + * permitted. * * @param project the current Maven project not null - * @param dirs the collection of <code>String</code> directories path that will be validated. - * @return a List of valid <code>String</code> directories absolute paths. + * @param paths the collection of <code>String</code> paths that will be validated Review Comment: the collection of <code>String</code> paths --> the paths Javadoc will insert the types ########## src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java: ########## @@ -118,32 +119,54 @@ public class JavadocUtil { + "environment variable using -Xms:<size> and -Xmx:<size>."; /** - * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in - * <code>dirs</code> could be an absolute or relative against the project's base directory <code>String</code> path. + * Method that removes invalid classpath elements in the specified paths. <b>Note</b>: All elements in Review Comment: What does invalid mean in this context? Rewrite Javadoc to clarify ########## src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java: ########## @@ -118,32 +119,54 @@ public class JavadocUtil { + "environment variable using -Xms:<size> and -Xmx:<size>."; /** - * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in - * <code>dirs</code> could be an absolute or relative against the project's base directory <code>String</code> path. + * Method that removes invalid classpath elements in the specified paths. <b>Note</b>: All elements in + * <code>paths</code> could be absolute or relative against the project's base directory <code>String</code> path. + * When pruning class paths, you can optionally include "*.jar" files in the result, otherwise only directories are + * permitted. * * @param project the current Maven project not null - * @param dirs the collection of <code>String</code> directories path that will be validated. - * @return a List of valid <code>String</code> directories absolute paths. + * @param paths the collection of <code>String</code> paths that will be validated + * @param includeJars whether to include JAR files in the result + * @return a list of valid <code>String</code> directories and optionally JAR files as absolute paths */ - public static Collection<Path> pruneDirs(MavenProject project, Collection<String> dirs) { + public static Collection<Path> prunePaths(MavenProject project, Collection<String> paths, boolean includeJars) { final Path projectBasedir = project.getBasedir().toPath(); - Set<Path> pruned = new LinkedHashSet<>(dirs.size()); - for (String dir : dirs) { - if (dir == null) { + Set<Path> pruned = new LinkedHashSet<>(paths.size()); + for (String path : paths) { + if (path == null) { continue; } - Path directory = projectBasedir.resolve(dir); - - if (Files.isDirectory(directory)) { - pruned.add(directory.toAbsolutePath()); + Path resolvedPath = projectBasedir.resolve(path); + + if (Files.isDirectory(resolvedPath) + || includeJars + && Files.isRegularFile(resolvedPath) + && resolvedPath + .getFileName() + .toString() + .toLowerCase(Locale.ROOT) + .endsWith(".jar")) { + pruned.add(resolvedPath.toAbsolutePath()); } } return pruned; } + /** + * Method that removes the invalid directories in the specified directories. <b>Note</b>: All elements in + * <code>dirs</code> could be absolute or relative against the project's base directory <code>String</code> path. + * + * @param project the current Maven project not null + * @param dirs the collection of <code>String</code> directories that will be validated + * @return a list of valid <code>String</code> directories as absolute paths Review Comment: what does valid mean here? > Invalid path when using TagletArtifact and TagletPath > ----------------------------------------------------- > > Key: MJAVADOC-783 > URL: https://issues.apache.org/jira/browse/MJAVADOC-783 > Project: Maven Javadoc Plugin > Issue Type: Bug > Affects Versions: 3.6.3 > Reporter: Rob Gordon > Priority: Major > > I’m trying to use the Javadoc plugin with both a tagletartifact and a > tagletpath but I get an InvliadPathException from the Javadoc goal. > I can see from the generated options file that there is no separator between > the end of the artifact path and the taglet path. > I think the problem is that getTagletPath method of AbstractJavadocMojo > should check for an existing path before adding the tagletpath. Something > like: > {code:java} > if (tagletpath != null && !tagletpath.isEmpty()) { > if (path.length() > 0) > { path.append(File.pathSeparator); } > path.append(JavadocUtil.unifyPathSeparator(tagletpath)); > } > {code} > I looked at creating a pull request but I can’t work out how to create a > suitable test. I found a taglet-test-plugin-config.xml, but not where it’s > used. > Could someone familiar with this codebase possibly take a look at this > problem please? > My configuration can be seen here: > [https://github.com/robjg/oj-parent/blob/d3e2328ca285516f1a4f6ee2bce94b44ba89b748/pom.xml#L304] > I attempted to report this problem via 'us...@maven.apache.org' however my > mail did not make it. -- This message was sent by Atlassian Jira (v8.20.10#820010)