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 |
*---------------------------------------------------------*
|