Hi,

could you resend patch as an attachment rather than inline as it gets messed 
up while passing through mail clients ;)

On Sat, 15 Sep 2001 04:34, Garrick Olson wrote:
> The documentation states classes will be removed from the coverage report
> if they are not in the reference classpath.  This patch makes it so.
>
> Index: XMLReport.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional
>/ sitraka/XMLReport.java,v
> retrieving revision 1.1
> diff -u -r1.1 XMLReport.java
> --- XMLReport.java    2001/07/31 08:40:12     1.1
> +++ XMLReport.java    2001/09/14 18:18:23
> @@ -88,6 +88,9 @@
>       /** parsed document */
>       protected Document report;
>
> +    /** mapping of class names to <code>ClassFile</code>s from the
> reference classpath.  It is used to filter the JProbe report. */
> +    protected Hashtable classFiles;
> +
>       /** mapping package name / package node for faster access */
>       protected Hashtable pkgMap;
>
> @@ -155,7 +158,7 @@
>
> methodname.delete(methodname.toString().indexOf("(") ,
> methodname.toString().length());
>                                       String signature = classname + "." +
> methodname + "()";
>                                       if (filters.accept(signature)){
> -                                             log("keeped method:" +
> signature);
> +                                             log("kept method:" +
> signature);
>                                               nbmethods++;
>                                       }
>                                       else {
> @@ -163,7 +166,7 @@
>                                       }
>                               }
>                               // if we don't keep any method, we don't
> keep the class
> -                             if (nbmethods != 0){
> +                             if (nbmethods != 0 &&
> classFiles.containsKey(classname)){
>                                       log("Adding class '" + classname +
> "'");
>                                       classMap.put(classname, clazz);
>                                       nbclasses++;
> @@ -186,19 +189,8 @@
>       /** create the whole new document */
>       public Document createDocument(String[] classPath) throws Exception
> {
>
> -             DocumentBuilder dbuilder = newBuilder();
> -             InputSource is = new InputSource( new FileInputStream(file)
> );
> -             if (jprobeHome != null){
> -                     File dtdDir = new File(jprobeHome,
> "Dtd/snapshot.dtd");
> -                     is.setSystemId( "file:///" +
> dtdDir.getAbsolutePath() );
> -             }
> -             report = dbuilder.parse( is );
> -             report.normalize();
> -
> -             // create maps for faster node access
> -             createNodeMaps();
> -
> -             // iterate over the classpath...
> +             // Iterate over the classpath to identify reference classes
> +        classFiles = new Hashtable();
>               ClassPathLoader cpl = new ClassPathLoader(classPath);
>               Enumeration enum = cpl.loaders();
>               while ( enum.hasMoreElements() ){
> @@ -207,8 +199,28 @@
>                       log("Processing " + classes.length + " classes in "
> + fl.getFile());
>                       // process all classes
>                       for (int i = 0; i < classes.length; i++){
> -                             serializeClass(classes[i]);
> +                             classFiles.put(classes[i].getFullName(),
> classes[i]);
>                       }
> +             }
> +
> +        // Load the JProbe coverage XML report
> +             DocumentBuilder dbuilder = newBuilder();
> +             InputSource is = new InputSource( new FileInputStream(file)
> );
> +             if (jprobeHome != null){
> +                     File dtdDir = new File(jprobeHome, "Dtd");
> +                     is.setSystemId( "file:///" +
> dtdDir.getAbsolutePath() + "/");
> +             }
> +             report = dbuilder.parse( is );
> +             report.normalize();
> +
> +             // create maps for faster node access (also filters out
> unwanted nodes)
> +             createNodeMaps();
> +
> +             // Make sure each class from the reference path ends up in
> the report
> +             Enumeration classes = classFiles.elements();
> +             while ( classes.hasMoreElements() ){
> +                     ClassFile cf = (ClassFile) classes.nextElement();
> +            serializeClass(cf);
>               }
>               // update the document with the stats
>               update();
>
>
>
> Confidential Information. This email is for intended recipient only.

-- 
Cheers,

Pete

*---------------------------------------------------------*
| Contrary to popular belief, UNIX is user-friendly. It   |
| just happens to be selective on who it makes friendship |
| with.                                                   |
|                       - Richard Cook                    |
*---------------------------------------------------------*

Reply via email to