You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by rd...@apache.org on 2009/05/22 11:41:31 UTC

svn commit: r777440 - in /incubator/rat/main/trunk/apache-rat-core/src: main/java/org/apache/rat/policy/ main/java/org/apache/rat/report/analyser/ main/java/org/apache/rat/report/claim/ main/java/org/apache/rat/report/claim/impl/ main/java/org/apache/r...

Author: rdonkin
Date: Fri May 22 09:41:31 2009
New Revision: 777440

URL: http://svn.apache.org/viewvc?rev=777440&view=rev
Log:
RAT-53 Revise reporter interface to allow migration away from claims. https://issues.apache.org/jira/browse/RAT-53

Modified:
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/policy/DefaultPolicy.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaim.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaimReporter.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/AbstractClaimReporter.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java
    incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java
    incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/policy/DefaultPolicy.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/policy/DefaultPolicy.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/policy/DefaultPolicy.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/policy/DefaultPolicy.java Fri May 22 09:41:31 2009
@@ -22,6 +22,7 @@
 import java.util.Comparator;
 
 import org.apache.rat.analysis.Claims;
+import org.apache.rat.document.IDocument;
 import org.apache.rat.license.Apache20LicenseFamily;
 import org.apache.rat.license.ILicenseFamily;
 import org.apache.rat.license.ModifiedBSDLicenseFamily;
@@ -55,6 +56,7 @@
     
     private final IClaimReporter reporter;
     private final LicenseFamilyName[] approvedLicenseNames;
+    private IDocument subject;
     
     public DefaultPolicy(final IClaimReporter reporter) {
         this(reporter, APPROVED_LICENSES);
@@ -87,7 +89,11 @@
         if (pClaim instanceof LicenseFamilyClaim) {
             final LicenseFamilyClaim lfc = (LicenseFamilyClaim) pClaim;
             final boolean isApproved = Arrays.binarySearch(approvedLicenseNames, lfc.getLicenseFamilyName(), licenseFamilyComparator) >= 0;
-            Claims.reportLicenseApprovalClaim(pClaim.getSubject(), isApproved, reporter);
+            Claims.reportLicenseApprovalClaim(subject, isApproved, reporter);
         }
     }
+
+    public void report(final IDocument subject) throws RatReportFailedException {
+        this.subject = subject;
+    }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java Fri May 22 09:41:31 2009
@@ -54,20 +54,20 @@
         }
 
         public void analyse(IDocument document) throws RatDocumentAnalysisException {
-            final FileType type;
-            if (NoteGuesser.isNote(document)) {
-                type = FileType.NOTICE;
-            } else if (ArchiveGuesser.isArchive(document)) {
-                type = FileType.ARCHIVE;
-            } else if (BinaryGuesser.isBinary(document)) {
-                type = FileType.BINARY;
-            } else {
-                type = FileType.STANDARD;
-                final DocumentHeaderAnalyser headerAnalyser = new DocumentHeaderAnalyser(matcher, reporter);
-                headerAnalyser.analyse(document);
-            }
-            
             try {
+                reporter.report(document);
+                final FileType type;
+                if (NoteGuesser.isNote(document)) {
+                    type = FileType.NOTICE;
+                } else if (ArchiveGuesser.isArchive(document)) {
+                    type = FileType.ARCHIVE;
+                } else if (BinaryGuesser.isBinary(document)) {
+                    type = FileType.BINARY;
+                } else {
+                    type = FileType.STANDARD;
+                    final DocumentHeaderAnalyser headerAnalyser = new DocumentHeaderAnalyser(matcher, reporter);
+                    headerAnalyser.analyse(document);
+                }
                 reporter.claim(new FileTypeClaim(document, type));
             } catch (RatReportFailedException e) {
                 throw new RatReportAnalysisResultException(e);

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaim.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaim.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaim.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaim.java Fri May 22 09:41:31 2009
@@ -1,6 +1,5 @@
 package org.apache.rat.report.claim;
 
-import org.apache.rat.document.IDocument;
 
 
 
@@ -10,8 +9,4 @@
  * subject.
  */
 public interface IClaim {
-    /**
-     * Returns the claims subject.
-     */
-    IDocument getSubject();
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaimReporter.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaimReporter.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaimReporter.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/IClaimReporter.java Fri May 22 09:41:31 2009
@@ -18,9 +18,19 @@
  */ 
 package org.apache.rat.report.claim;
 
+import org.apache.rat.document.IDocument;
 import org.apache.rat.report.RatReportFailedException;
 
 public interface IClaimReporter {
+    
+    /**
+     * Starts a report on the given document.
+     * All claims concern this document until this is called next.
+     * @param subject not null
+     * @throws RatReportFailedException
+     */
+    void report(IDocument subject) throws RatReportFailedException;
+    
     /**
      * States a claim.
      * @param pClaim The claim to state.

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/AbstractClaimReporter.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/AbstractClaimReporter.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/AbstractClaimReporter.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/AbstractClaimReporter.java Fri May 22 09:41:31 2009
@@ -1,5 +1,6 @@
 package org.apache.rat.report.claim.impl;
 
+import org.apache.rat.document.IDocument;
 import org.apache.rat.report.RatReportFailedException;
 import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
@@ -52,4 +53,6 @@
     public void claim(IClaim pClaim) throws RatReportFailedException {
         handleClaim(pClaim);
     }
+
+    public void report(IDocument document) throws RatReportFailedException {}
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java Fri May 22 09:41:31 2009
@@ -3,6 +3,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.rat.document.IDocument;
 import org.apache.rat.report.RatReportFailedException;
 import org.apache.rat.report.claim.ClaimStatistic;
 import org.apache.rat.report.claim.IClaim;
@@ -84,4 +85,11 @@
             reporter.claim(pClaim);
         }
     }
+
+    public void report(IDocument document) throws RatReportFailedException {
+        super.report(document);
+        if (reporter != null) {
+            reporter.report(document);
+        }
+    }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java Fri May 22 09:41:31 2009
@@ -43,6 +43,7 @@
     private static final String NAME = "name";
     private final IXmlWriter writer;
     private IDocument lastSubject;
+    private IDocument subject;
     
     public SimpleXmlClaimReporter(final IXmlWriter writer) {
         this.writer = writer;
@@ -110,7 +111,17 @@
     }
 
     public void claim(IClaim pClaim) throws RatReportFailedException {
-        final IDocument subject = pClaim.getSubject();
+        try {
+            handleClaim(pClaim);
+        } catch (IOException e) {
+            throw new RatReportFailedException("XML writing failure: " + e.getMessage()
+                    + " subject: " + subject + " claim type: "
+                    + pClaim.getClass().getName(), e);
+        }
+    }
+
+    public void report(final IDocument subject) throws RatReportFailedException {
+        this.subject = subject;
         try {
             if (!(subject.equals(lastSubject))) {
                 if (lastSubject != null) {
@@ -118,12 +129,10 @@
                 }
                 writer.openElement("resource").attribute(NAME, subject.getName());
             }
-            handleClaim(pClaim);
             lastSubject = subject;
         } catch (IOException e) {
             throw new RatReportFailedException("XML writing failure: " + e.getMessage()
-                    + " subject: " + subject + " claim type: "
-                    + pClaim.getClass().getName(), e);
+                    + " subject: " + subject, e);
         }
     }
 

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java Fri May 22 09:41:31 2009
@@ -18,6 +18,7 @@
  */ 
 package org.apache.rat.report.claim.util;
 
+import org.apache.rat.document.IDocument;
 import org.apache.rat.report.RatReportFailedException;
 import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
@@ -39,4 +40,10 @@
         }
     }
 
+    public void report(IDocument document) throws RatReportFailedException {
+        final int length = reporters.length;
+        for (int i=0;i<length;i++) {
+            reporters[i].report(document);
+        } 
+    }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java Fri May 22 09:41:31 2009
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.rat.document.IDocument;
 import org.apache.rat.report.RatReportFailedException;
 import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
@@ -37,4 +38,7 @@
     public CustomClaim getClaim(int index) {
         return (CustomClaim) claims.get(index);
     }
+
+    public void report(IDocument document) throws RatReportFailedException {
+    }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java?rev=777440&r1=777439&r2=777440&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java Fri May 22 09:41:31 2009
@@ -43,6 +43,7 @@
         final IDocument subject = new MockLocation("subject");
         final String predicate = "predicate";
         final String object = "object";
+        reporter.report(subject);
         reporter.claim(new CustomClaim(subject, predicate, object, false));
         assertEquals("Five calls made", 5, mockWriter.calls.size());
         assertTrue("First call is open element 'resource'", mockWriter.isOpenElement("resource", 0));
@@ -63,6 +64,7 @@
         final IDocument subject = new MockLocation("subject");
         final String predicate = "predicate";
         final String object = "object";
+        reporter.report(subject);
         reporter.claim(new CustomClaim(subject, predicate, object, false));
         assertEquals("Five calls made", 5, mockWriter.calls.size());
         assertTrue("First call is open element 'resource'", mockWriter.isOpenElement("resource", 0));
@@ -71,6 +73,7 @@
         assertTrue("Forth call is object attribute", mockWriter.isAttribute("name", object, 3));    
         assertTrue("Fifth call is close element", mockWriter.isCloseElement(4));    
         final IDocument subjectTwo = new MockLocation("another-subject");
+        reporter.report(subjectTwo);
         reporter.claim(new CustomClaim(subjectTwo, predicate, object, false));
         assertEquals("Another found calls made", 11, mockWriter.calls.size());
         assertTrue("Sixth call is close element", mockWriter.isCloseElement(5));  
@@ -85,6 +88,7 @@
         final IDocument subject = new MockLocation("subject");
         final String predicate = "predicate";
         final String object = "object";
+        reporter.report(subject);
         reporter.claim(new CustomClaim(subject, predicate, object, true));
         assertEquals("Five calls made", 5, mockWriter.calls.size());
         assertTrue("First call is open element 'resource'", mockWriter.isOpenElement("resource", 0));