This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch JXR-142 in repository https://gitbox.apache.org/repos/asf/maven-jxr.git
commit d242056c893b9a4085cb8a8207716af2010a48b0 Author: rfscholte <rfscho...@apache.org> AuthorDate: Sun Nov 11 13:10:26 2018 +0100 Introduce ClassInfo --- .../org/apache/maven/jxr/DirectoryIndexer.java | 56 +++++++++++++++++----- .../org/apache/maven/jxr/DirectoryIndexerTest.java | 26 +++++----- 2 files changed, 57 insertions(+), 25 deletions(-) diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java index 2a3cb8f..84ee7bf 100644 --- a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java +++ b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java @@ -334,7 +334,7 @@ public class DirectoryIndexer Map<String, Map<String, ?>> getPackageInfo() { Map<String, Map<String, Object>> allPackages = new TreeMap<>(); - Map<String, Map<String, String>> allClasses = new TreeMap<>(); + Map<String, ClassInfo> allClasses = new TreeMap<>(); Enumeration<PackageType> packages = packageManager.getPackageTypes(); while ( packages.hasMoreElements() ) @@ -353,26 +353,18 @@ public class DirectoryIndexer rootRef = "./"; } - Map<String, Map<String, String>> pkgClasses = new TreeMap<>(); + Map<String, ClassInfo> pkgClasses = new TreeMap<>(); Enumeration<ClassType> classes = pkg.getClassTypes(); while ( classes.hasMoreElements() ) { ClassType clazz = classes.nextElement(); String className = clazz.getName(); - Map<String, String> classInfo = new HashMap<>(); - if ( clazz.getFilename() != null ) - { - classInfo.put( "filename", clazz.getFilename() ); - } - else - { - classInfo.put( "filename", "" ); - } - classInfo.put( "name", className ); - classInfo.put( "dir", pkgDir ); + + ClassInfo classInfo = new ClassInfo( className, pkgDir, clazz.getFilename() ); pkgClasses.put( className, classInfo ); + // Adding package name to key in order to ensure classes with identical names in different packages are // all included. allClasses.put( className + "#" + pkgName, classInfo ); @@ -392,4 +384,42 @@ public class DirectoryIndexer return info; } + + /** + * Holds class information + * + * @author Robert Scholte + * @since 3.2.0 + */ + public static class ClassInfo + { + private String name; + + private String dir; + + private String filename; + + public ClassInfo( String name, String dir, String filename ) + { + super(); + this.name = name; + this.dir = dir; + this.filename = filename; + } + + public String getName() + { + return name; + } + + public String getDir() + { + return dir; + } + + public String getFilename() + { + return filename; + } + } } \ No newline at end of file diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java index 7a16bfe..dcd85e7 100644 --- a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java +++ b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java @@ -1,5 +1,7 @@ package org.apache.maven.jxr; +import org.apache.maven.jxr.DirectoryIndexer.ClassInfo; + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -49,27 +51,27 @@ public class DirectoryIndexerTest { assertTrue( allPackages.containsKey( "(default package)" ) ); assertTrue( allPackages.containsKey( "pkga" ) ); assertTrue( allPackages.containsKey( "pkgb" ) ); - final Map<String, Map<String, String>> allClasses = (Map<String, Map<String, String>>) packageInfo.get( "allClasses" ); + final Map<String, ClassInfo> allClasses = (Map<String, ClassInfo>) packageInfo.get( "allClasses" ); assertEquals( 6, allClasses.size() ); - final Iterator<Map<String, String>> iterator = allClasses.values().iterator(); + final Iterator<ClassInfo> iterator = allClasses.values().iterator(); // #1: AClass - assertEquals( "AClass", iterator.next().get( "name" ) ); + assertEquals( "AClass", iterator.next().getName() ); // #2: BClass - assertEquals( "BClass", iterator.next().get( "name" ) ); + assertEquals( "BClass", iterator.next().getName() ); // #3: CClass - assertEquals( "CClass", iterator.next().get( "name" ) ); + assertEquals( "CClass", iterator.next().getName() ); // #4: SomeClass in default package - Map<String, String> classInfo = iterator.next(); - assertEquals( "SomeClass", classInfo.get( "name" ) ); - assertEquals( ".", classInfo.get( "dir" ) ); + ClassInfo classInfo = iterator.next(); + assertEquals( "SomeClass", classInfo.getName() ); + assertEquals( ".", classInfo.getDir() ); // #5: SomeClass in "pkga" classInfo = iterator.next(); - assertEquals( "SomeClass", classInfo.get( "name" ) ); - assertEquals( "pkga", classInfo.get( "dir" ) ); + assertEquals( "SomeClass", classInfo.getName() ); + assertEquals( "pkga", classInfo.getDir() ); // #6: SomeClass in "pkgb" classInfo = iterator.next(); - assertEquals( "SomeClass", classInfo.get( "name" ) ); - assertEquals( "pkgb", classInfo.get( "dir" ) ); + assertEquals( "SomeClass", classInfo.getName() ); + assertEquals( "pkgb", classInfo.getDir() ); } } \ No newline at end of file