You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2007/03/04 16:31:16 UTC
svn commit: r514409 - in /maven/jxr/trunk/src/main:
java/org/apache/maven/jxr/ java/org/apache/maven/jxr/pacman/
resources/templates/
Author: dennisl
Date: Sun Mar 4 07:31:15 2007
New Revision: 514409
URL: http://svn.apache.org/viewvc?view=rev&rev=514409
Log:
[JXR-11] JXR does not handles multiple classes in one source file
[JXR-14] JXR does not seem to handle inner classes properly
o Add the notion that a class belongs to a file. This is needed to handle multiple classes in one java file. These may be normal classes or inner classes.
o Create links to javadocs and xref files based on the filename of a class.
Modified:
maven/jxr/trunk/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
maven/jxr/trunk/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java
maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/ClassType.java
maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFile.java
maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFileImpl.java
maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java
maven/jxr/trunk/src/main/resources/templates/allclasses-frame.vm
maven/jxr/trunk/src/main/resources/templates/package-frame.vm
maven/jxr/trunk/src/main/resources/templates/package-summary.vm
Modified: maven/jxr/trunk/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java (original)
+++ maven/jxr/trunk/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java Sun Mar 4 07:31:15 2007
@@ -365,6 +365,13 @@
String className = clazz.getName();
Map classInfo = new HashMap();
+ if( clazz.getFilename() != null )
+ {
+ classInfo.put( "filename", clazz.getFilename() );
+ }
+ else {
+ classInfo.put( "filename", "" );
+ }
classInfo.put( "name", className );
classInfo.put( "dir", pkgDir );
Modified: maven/jxr/trunk/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java (original)
+++ maven/jxr/trunk/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java Sun Mar 4 07:31:15 2007
@@ -289,9 +289,10 @@
try
{
JavaFile javaFile = fileManager.getFile( this.getCurrentFilename() );
- if ( javaFile.getClassType() != null )
+ // Use the name of the file instead of the class to handle inner classes properly
+ if ( javaFile.getClassType() != null && javaFile.getClassType().getFilename() != null )
{
- buffer.append( javaFile.getClassType().getName() );
+ buffer.append( javaFile.getClassType().getFilename() );
}
else
{
@@ -1101,9 +1102,10 @@
javadocURI.append( StringUtils.replace( jf.getPackageType().getName(), ".", "/" ) );
javadocURI.append( "/" );
- if ( jf.getClassType() != null )
+ // Use the name of the file instead of the class to handle inner classes properly
+ if ( jf.getClassType() != null && jf.getClassType().getFilename() != null )
{
- javadocURI.append( jf.getClassType().getName() );
+ javadocURI.append( jf.getClassType().getFilename() );
}
else
{
@@ -1293,11 +1295,11 @@
href.append( dest );
- //now append the classname.html file
+ // Now append filename.html
if ( jc != null )
{
href.append( "/" );
- href.append( jc.getName() );
+ href.append( jc.getFilename() );
href.append( ".html" );
}
Modified: maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/ClassType.java
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/ClassType.java?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/ClassType.java (original)
+++ maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/ClassType.java Sun Mar 4 07:31:15 2007
@@ -20,15 +20,22 @@
*/
/**
- * Represents a Java class or interface
+ * Represents a Java class or interface.
*/
public class ClassType
extends BaseType
{
+ /**
+ * The name of the file that this class resides in, without path or
+ * extension. It might be different from the name of the class when dealing
+ * with inner classes.
+ */
+ private String filename = null;
/**
- * Create a new ClassType
+ * Create a new ClassType without a filename.
*
+ * @deprecated Please use {@link #ClassType( String, String )} instead
* @param name
*/
public ClassType( String name )
@@ -36,4 +43,26 @@
this.setName( name );
}
+ /**
+ * Create a new ClassType.
+ *
+ * @param name
+ * @param filename
+ */
+ public ClassType( String name , String filename)
+ {
+ this.setName( name );
+ this.setFilename( filename );
+ }
+
+
+ public String getFilename()
+ {
+ return filename;
+ }
+
+ public void setFilename( String filename )
+ {
+ this.filename = filename;
+ }
}
Modified: maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFile.java
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFile.java?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFile.java (original)
+++ maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFile.java Sun Mar 4 07:31:15 2007
@@ -19,6 +19,8 @@
* under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
import java.util.Vector;
/**
@@ -32,7 +34,7 @@
private Vector imports = new Vector();
- private ClassType classType = null;
+ private ArrayList classTypes = new ArrayList();
private PackageType packageType = new PackageType();
@@ -56,7 +58,23 @@
*/
public ClassType getClassType()
{
- return this.classType;
+ if ( classTypes.isEmpty() )
+ {
+ return null;
+ }
+ else
+ {
+ // To retain backward compatibility, return the first class
+ return (ClassType) this.classTypes.get( 0 );
+ }
+ }
+
+ /**
+ * Get the names of the classes in this file.
+ */
+ public List getClassTypes()
+ {
+ return this.classTypes;
}
/**
@@ -69,7 +87,15 @@
/**
- * Add an ImportType to the current imports
+ * Add a ClassType to the current list of class types.
+ */
+ public void addClassType( ClassType classType )
+ {
+ this.classTypes.add( classType );
+ }
+
+ /**
+ * Add an ImportType to the current imports.
*/
public void addImportType( ImportType importType )
{
@@ -81,7 +107,9 @@
*/
public void setClassType( ClassType classType )
{
- this.classType = classType;
+ // To retain backward compatibility, make sure the list contains only the supplied classType
+ this.classTypes.clear();
+ this.classTypes.add( classType );
}
/**
Modified: maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFileImpl.java
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFileImpl.java?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFileImpl.java (original)
+++ maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/JavaFileImpl.java Sun Mar 4 07:31:15 2007
@@ -19,6 +19,8 @@
* under the License.
*/
+import org.codehaus.plexus.util.StringUtils;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
@@ -111,14 +113,13 @@
this.addImportType( new ImportType( name ) );
}
- //set the Class... if the class is found no more information is
- //valid so just break out of the while loop at this point.
- //set the imports
+ // Add the class or classes. There can be several classes in one file so
+ // continue with the while loop to get them all.
if ( stok.sval.equals( "class" ) || stok.sval.equals( "interface" ) || stok.sval.equals( "enum" ) )
{
stok.nextToken();
- this.setClassType( new ClassType( stok.sval ) );
- break;
+ this.addClassType( new ClassType( stok.sval,
+ getFilenameWithoutPathOrExtension( this.getFilename()) ) );
}
}
@@ -130,6 +131,36 @@
{
this.reader.close();
}
+ }
+ }
+
+ /**
+ * Remove the path and the ".java" extension from a filename.
+ */
+ private static String getFilenameWithoutPathOrExtension( String filename )
+ {
+ String newFilename;
+ // Remove the ".java" extension from the filename, if it exists
+ int extensionIndex = filename.lastIndexOf( ".java" );
+ if ( extensionIndex == -1 )
+ {
+ newFilename = filename;
+ }
+ else
+ {
+ newFilename = filename.substring( 0, extensionIndex );
+ }
+
+ // Remove the path, after unifying path separators
+ newFilename = StringUtils.replace( newFilename, "\\", "/" );
+ int pathIndex = newFilename.lastIndexOf( "/" );
+ if ( pathIndex == -1 )
+ {
+ return newFilename;
+ }
+ else
+ {
+ return newFilename.substring( pathIndex + 1 );
}
}
Modified: maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java (original)
+++ maven/jxr/trunk/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java Sun Mar 4 07:31:15 2007
@@ -26,6 +26,7 @@
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.Iterator;
/**
@@ -134,10 +135,13 @@
jp = jfi.getPackageType();
}
- //add the current class to this global package.
- if ( jfi.getClassType() != null && jfi.getClassType().getName() != null )
+ // Add the current file's class(es) to this global package.
+ if ( jfi.getClassTypes() != null && !jfi.getClassTypes().isEmpty() )
{
- jp.addClassType( jfi.getClassType() );
+ for ( Iterator iterator = jfi.getClassTypes().iterator(); iterator.hasNext(); )
+ {
+ jp.addClassType( (ClassType) iterator.next() );
+ }
}
}
Modified: maven/jxr/trunk/src/main/resources/templates/allclasses-frame.vm
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/resources/templates/allclasses-frame.vm?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/resources/templates/allclasses-frame.vm (original)
+++ maven/jxr/trunk/src/main/resources/templates/allclasses-frame.vm Sun Mar 4 07:31:15 2007
@@ -32,7 +32,7 @@
<ul>
#foreach ($classInfo in $info.allClasses.values())
<li>
- <a href="${classInfo.dir}/${classInfo.name}.html" target="classFrame">$classInfo.name</a>
+ <a href="${classInfo.dir}/${classInfo.filename}.html" target="classFrame">$classInfo.name</a>
</li>
#end
</ul>
Modified: maven/jxr/trunk/src/main/resources/templates/package-frame.vm
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/resources/templates/package-frame.vm?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/resources/templates/package-frame.vm (original)
+++ maven/jxr/trunk/src/main/resources/templates/package-frame.vm Sun Mar 4 07:31:15 2007
@@ -36,7 +36,7 @@
<ul>
#foreach ($classInfo in $pkgInfo.classes.values())
<li>
- <a href="${classInfo.name}.html" target="classFrame">$classInfo.name</a>
+ <a href="${classInfo.filename}.html" target="classFrame">$classInfo.name</a>
</li>
#end
</ul>
Modified: maven/jxr/trunk/src/main/resources/templates/package-summary.vm
URL: http://svn.apache.org/viewvc/maven/jxr/trunk/src/main/resources/templates/package-summary.vm?view=diff&rev=514409&r1=514408&r2=514409
==============================================================================
--- maven/jxr/trunk/src/main/resources/templates/package-summary.vm (original)
+++ maven/jxr/trunk/src/main/resources/templates/package-summary.vm Sun Mar 4 07:31:15 2007
@@ -60,7 +60,7 @@
#foreach ($classInfo in $pkgInfo.classes.values())
<tr>
<td>
- <a href="${classInfo.name}.html" target="classFrame">$classInfo.name</a>
+ <a href="${classInfo.filename}.html" target="classFrame">$classInfo.name</a>
</td>
</tr>
#end