You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by jo...@apache.org on 2009/03/16 01:17:49 UTC

svn commit: r754798 [2/2] - in /incubator/rat/main/branches/rat-output-semantics: apache-rat-core/src/main/java/org/apache/rat/ apache-rat-core/src/main/java/org/apache/rat/analysis/ apache-rat-core/src/main/java/org/apache/rat/analysis/generation/ apa...

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java Mon Mar 16 00:17:47 2009
@@ -20,25 +20,106 @@
 
 import java.io.IOException;
 
+import org.apache.rat.document.IResource;
 import org.apache.rat.report.RatReportFailedException;
+import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.IObject;
-import org.apache.rat.report.claim.IPredicate;
-import org.apache.rat.report.claim.ISubject;
+import org.apache.rat.report.claim.impl.ArchiveFileTypeClaim;
+import org.apache.rat.report.claim.impl.FileTypeClaim;
+import org.apache.rat.report.claim.impl.LicenseApprovalClaim;
+import org.apache.rat.report.claim.impl.LicenseFamilyClaim;
+import org.apache.rat.report.claim.impl.LicenseHeaderClaim;
 import org.apache.rat.report.xml.writer.IXmlWriter;
 
 public class SimpleXmlClaimReporter implements IClaimReporter {
+    public static final String LICENSE_APPROVAL_PREDICATE = "license-approval";
+    public static final String LICENSE_FAMILY_PREDICATE = "license-family";
+    public static final String HEADER_SAMPLE_PREDICATE = "header-sample";
+    public static final String HEADER_TYPE_PREDICATE = "header-type";
+    public static final String FILE_TYPE_PREDICATE = "type";
+    public static final String ARCHIVE_TYPE_PREDICATE = "archive-type";
+    public static final String ARCHIVE_TYPE_UNREADABLE = "unreadable";
+    public static final String ARCHIVE_TYPE_READABLE = "readable";
 
     private static final String NAME = "name";
     private final IXmlWriter writer;
-    private ISubject lastSubject;
+    private IResource lastSubject;
     
     public SimpleXmlClaimReporter(final IXmlWriter writer) {
         this.writer = writer;
     }
+
+    protected void handleClaim(ArchiveFileTypeClaim pClaim)
+            throws IOException, RatReportFailedException {
+        handleClaim((FileTypeClaim) pClaim);
+        writeClaim(ARCHIVE_TYPE_PREDICATE, pClaim.isReadable() ? ARCHIVE_TYPE_READABLE : ARCHIVE_TYPE_UNREADABLE, false);
+    }
+
+    protected void handleClaim(FileTypeClaim pClaim)
+            throws IOException, RatReportFailedException {
+        writeClaim(FILE_TYPE_PREDICATE, pClaim.getType().getName(), false);
+    }
+
+    protected void handleClaim(LicenseApprovalClaim pClaim)
+            throws IOException, RatReportFailedException {
+        writeClaim(LICENSE_APPROVAL_PREDICATE, Boolean.toString(pClaim.isApproved()), false);
+    }
+
+    protected void handleClaim(LicenseFamilyClaim pClaim)
+            throws IOException, RatReportFailedException {
+        handleClaim((LicenseHeaderClaim) pClaim);
+        writeClaim(LICENSE_FAMILY_PREDICATE, pClaim.getLicenseFamilyName().getName(), false);
+    }
+
+    protected void handleClaim(LicenseHeaderClaim pClaim)
+            throws IOException, RatReportFailedException {
+        writeClaim(HEADER_SAMPLE_PREDICATE, pClaim.getHeaderSample(), true);
+        writeClaim(HEADER_TYPE_PREDICATE, pClaim.getLicenseFamilyCode().getName(), false);
+    }
+
+    protected void handleClaim(CustomClaim pClaim)
+            throws IOException, RatReportFailedException {
+        writeClaim(pClaim.getPredicate(), pClaim.getObject(), pClaim.isLiteral());
+    }
+
+    /**
+     * Writes a single claim to the XML file.
+     * @param pPredicate The claims predicate.
+     * @param pObject The claims object.
+     * @param pLiteral Whether to write the object as an element (true),
+     *   or an attribute (false).
+     * @throws IOException An I/O error occurred while writing the claim.
+     * @throws RatReportFailedException Another error occurred while writing the claim.
+     */
+    protected void writeClaim(String pPredicate, String pObject, boolean pLiteral)
+            throws IOException, RatReportFailedException {
+        if (pLiteral) {
+            writer.openElement(pPredicate).content(pObject).closeElement();
+        } else {
+            writer.openElement(pPredicate).attribute(NAME, pObject).closeElement();
+        }
+    }
     
-    public void claim(ISubject subject, IPredicate predicate,
-            IObject object, boolean isLiteral) throws RatReportFailedException {
+    protected void handleClaim(IClaim pClaim) throws IOException, RatReportFailedException {
+        if (pClaim instanceof ArchiveFileTypeClaim) {
+            handleClaim((ArchiveFileTypeClaim) pClaim);
+        } else if (pClaim instanceof FileTypeClaim) {
+            handleClaim((FileTypeClaim) pClaim);
+        } else if (pClaim instanceof LicenseApprovalClaim) {
+            handleClaim((LicenseApprovalClaim) pClaim);
+        } else if (pClaim instanceof LicenseFamilyClaim) {
+            handleClaim((LicenseFamilyClaim) pClaim);
+        } else if (pClaim instanceof LicenseHeaderClaim) {
+            handleClaim((LicenseHeaderClaim) pClaim);
+        } else if (pClaim instanceof CustomClaim) {
+            handleClaim((CustomClaim) pClaim);
+        } else {
+            throw new IllegalStateException("Invalid claim type: " + pClaim.getClass().getName());
+        }
+    }
+
+    public void claim(IClaim pClaim) throws RatReportFailedException {
+        final IResource subject = pClaim.getSubject();
         try {
             if (!(subject.equals(lastSubject))) {
                 if (lastSubject != null) {
@@ -46,14 +127,12 @@
                 }
                 writer.openElement("resource").attribute(NAME, subject.getName());
             }
-            if (isLiteral) {
-                writer.openElement(predicate.getName()).content(object.getValue()).closeElement();
-            } else {
-                writer.openElement(predicate.getName()).attribute(NAME, object.getValue()).closeElement();
-            }
+            handleClaim(pClaim);
             lastSubject = subject;
         } catch (IOException e) {
-            throw new RatReportFailedException("XML writing failure: " + e.getMessage() + " subject: " + subject + " predicate: " + predicate, e);
+            throw new RatReportFailedException("XML writing failure: " + e.getMessage()
+                    + " subject: " + subject + " claim type: "
+                    + pClaim.getClass().getName(), e);
         }
     }
 

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexer.java Mon Mar 16 00:17:47 2009
@@ -19,10 +19,8 @@
 package org.apache.rat.report.claim.util;
 
 import org.apache.rat.report.RatReportFailedException;
+import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.IObject;
-import org.apache.rat.report.claim.IPredicate;
-import org.apache.rat.report.claim.ISubject;
 
 public class ClaimReporterMultiplexer implements IClaimReporter {
 
@@ -33,12 +31,11 @@
         this.reporters = reporters;
     }
 
-    public void claim(ISubject subject, IPredicate predicate,
-            IObject object, boolean isLiteral)
+    public void claim(IClaim pClaim)
             throws RatReportFailedException {
         final int length = reporters.length;
         for (int i=0;i<length;i++) {
-            reporters[i].claim(subject, predicate, object, isLiteral);
+            reporters[i].claim(pClaim);
         }
     }
 

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java Mon Mar 16 00:17:47 2009
@@ -19,12 +19,16 @@
 package org.apache.rat.report.xml;
 
 import org.apache.rat.analysis.IHeaderMatcher;
+import org.apache.rat.document.IDocument;
 import org.apache.rat.document.IDocumentAnalyser;
 import org.apache.rat.license.ILicenseFamily;
 import org.apache.rat.policy.DefaultPolicy;
 import org.apache.rat.report.RatReport;
+import org.apache.rat.report.RatReportFailedException;
 import org.apache.rat.report.analyser.DefaultAnalyserFactory;
+import org.apache.rat.report.claim.ClaimStatistic;
 import org.apache.rat.report.claim.IClaimReporter;
+import org.apache.rat.report.claim.impl.ClaimAggregator;
 import org.apache.rat.report.claim.impl.xml.SimpleXmlClaimReporter;
 import org.apache.rat.report.claim.util.ClaimReporterMultiplexer;
 import org.apache.rat.report.xml.writer.IXmlWriter;
@@ -34,25 +38,45 @@
  *
  */
 public class XmlReportFactory {
-    
     public static final RatReport createStandardReport(final IXmlWriter writer, 
-            final IHeaderMatcher matcher) {
-        return createStandardReport(writer, matcher, null);
+            final IHeaderMatcher matcher, ClaimStatistic pStatistic) {
+        return createStandardReport(writer, matcher, null, pStatistic);
     }
     
     public static final RatReport createStandardReport(final IXmlWriter writer, 
-            final IHeaderMatcher matcher, final ILicenseFamily[] approvedLicenses) {
+            final IHeaderMatcher matcher, final ILicenseFamily[] approvedLicenses,
+            final ClaimStatistic pStatistic) {
         // TODO: this isn't very elegant :-/
         // TODO: should really pass in analysers but this means injecting reporter
-        final SimpleXmlClaimReporter reporter = new SimpleXmlClaimReporter(writer);
+        final IClaimReporter reporter;
+        if (pStatistic == null) {
+            reporter = new SimpleXmlClaimReporter(writer);
+        } else {
+            reporter = new ClaimAggregator(new SimpleXmlClaimReporter(writer));
+        }
         final DefaultPolicy policy = new DefaultPolicy(reporter, approvedLicenses);
         final IClaimReporter[] reporters = {reporter, policy};
         final ClaimReporterMultiplexer multiplexer = new ClaimReporterMultiplexer(reporters);
         
         final IDocumentAnalyser analyser = 
             DefaultAnalyserFactory.createDefaultAnalyser(multiplexer, matcher);
-        
+
         final RatReport result = new XmlReport(writer, analyser);
-        return result;
+        if (pStatistic == null) {
+            return result;
+        }
+        return new RatReport(){
+            public void endReport() throws RatReportFailedException {
+                result.endReport();
+                ((ClaimAggregator) reporter).fillClaimStatistic(pStatistic);
+            }
+            public void report(IDocument pDocument)
+                    throws RatReportFailedException {
+                result.report(pDocument);
+            }
+            public void startReport() throws RatReportFailedException {
+                result.startReport();
+            }
+        };
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/MockLicenseMatcher.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/MockLicenseMatcher.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/MockLicenseMatcher.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/MockLicenseMatcher.java Mon Mar 16 00:17:47 2009
@@ -21,8 +21,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.rat.document.IResource;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.ISubject;
 
 public class MockLicenseMatcher implements IHeaderMatcher {
 
@@ -30,7 +30,7 @@
 	public int resets = 0;
     public boolean result = true;
 	
-	public boolean match(ISubject subject, String line, IClaimReporter reporter) {
+	public boolean match(IResource subject, String line, IClaimReporter reporter) {
 		lines.add(line);
 		return result;  
 	}

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java Mon Mar 16 00:17:47 2009
@@ -22,8 +22,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 public class GeneratedLicenseNotRequiredTest extends TestCase {
@@ -43,7 +43,7 @@
     }
 
     public void testMatch() throws Exception {
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
         assertFalse("Does not match regex", license.match(subject, "Not at all", reporter));
         assertTrue("Matches regex", license.match(subject, "This is Generated", reporter));
     }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java Mon Mar 16 00:17:47 2009
@@ -24,8 +24,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 import org.apache.rat.test.utils.Resources;
 
@@ -64,7 +64,7 @@
         boolean result = false;
         BufferedReader in = new BufferedReader(new FileReader(file));
         String line = in.readLine();
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
         while (line != null && !result) {
             result = license.match(subject, line, reporter);
             line = in.readLine();

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java Mon Mar 16 00:17:47 2009
@@ -20,8 +20,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 public class ApacheSoftwareLicense20Test extends TestCase {
@@ -53,7 +53,7 @@
 	
 	public void testMatch() throws Exception {
 		ApacheSoftwareLicense20 worker = new ApacheSoftwareLicense20();
-		final ISubject subject = new MockSubject("subject");
+		final IResource subject = new MockLocation("subject");
 		assertTrue(worker.match(subject, ApacheSoftwareLicense20.FIRST_LICENSE_LINE, reporter));
         assertTrue(worker.match(subject, "    Licensed under the Apache License, Version 2.0 (the \"License\");", reporter));
         assertTrue(worker.match(subject, "Licensed under the Apache License, Version 2.0 (the \"License\");", reporter));

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java Mon Mar 16 00:17:47 2009
@@ -23,8 +23,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 import org.apache.rat.test.utils.Resources;
 
@@ -68,7 +68,7 @@
         BufferedReader in = new BufferedReader(new StringReader(LICENSE));
         String line = in.readLine();
         boolean result = false;
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
         while (line != null) {
             result = license.match(subject, line, reporter);
             line = in.readLine();
@@ -83,7 +83,7 @@
         BufferedReader in = Resources.getBufferedResourceReader("elements/Source.java");
         String line = in.readLine();
         boolean result = false;
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
         while (line != null) {
             result = license.match(subject, line, reporter);
             line = in.readLine();

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java Mon Mar 16 00:17:47 2009
@@ -20,8 +20,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 public class W3CLicenseTest extends TestCase {
@@ -49,7 +49,7 @@
     }
 
     public void testMatch() throws Exception {
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
         assertTrue("Expected matcher to return license", license.match(subject, COPYRIGHT_URL, reporter));
         assertTrue("Expected matcher to return license", license.match(subject, COPYRIGHT_URL_COMMENTED, reporter));
         assertTrue("Expected matcher to return license", license.match(subject, COPYRIGHT_URL_XML, reporter));

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/util/MatcherMultiplexerTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/util/MatcherMultiplexerTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/util/MatcherMultiplexerTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/analysis/util/MatcherMultiplexerTest.java Mon Mar 16 00:17:47 2009
@@ -22,8 +22,8 @@
 
 import org.apache.rat.analysis.IHeaderMatcher;
 import org.apache.rat.analysis.MockLicenseMatcher;
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 public class MatcherMultiplexerTest extends TestCase {
@@ -53,7 +53,7 @@
 	public void testMatcherLine() throws Exception {
         matcherOne.result = false;
         matcherTwo.result = false;
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
 		multiplexer.match(subject, LINE_ONE, reporter);
 		assertEquals("One line", 1, matcherOne.lines.size());
 		assertEquals("Same as line passed", LINE_ONE, matcherOne.lines.get(0));

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/document/MockLocation.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/document/MockLocation.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/document/MockLocation.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/document/MockLocation.java Mon Mar 16 00:17:47 2009
@@ -27,6 +27,10 @@
         this("name", "url");
     }
     
+    public MockLocation(String name) {
+        this(name, "url");
+    }
+
     public MockLocation(String name, String url) {
         super();
         this.name = name;

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java Mon Mar 16 00:17:47 2009
@@ -21,20 +21,21 @@
 import junit.framework.TestCase;
 
 import org.apache.rat.analysis.Claims;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.license.Apache20LicenseFamily;
 import org.apache.rat.license.OASISLicenseFamily;
 import org.apache.rat.license.W3CDocumentLicenseFamily;
 import org.apache.rat.license.W3CSoftwareLicenseFamily;
-import org.apache.rat.report.claim.BaseObject;
-import org.apache.rat.report.claim.BasePredicate;
-import org.apache.rat.report.claim.IObject;
-import org.apache.rat.report.claim.IPredicate;
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.LicenseApprovalObject;
+import org.apache.rat.report.claim.IClaim;
+import org.apache.rat.report.claim.LicenseFamilyCode;
 import org.apache.rat.report.claim.LicenseFamilyName;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.report.claim.impl.LicenseApprovalClaim;
+import org.apache.rat.report.claim.impl.LicenseFamilyClaim;
+import org.apache.rat.report.claim.impl.xml.CustomClaim;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
+
 public class DefaultPolicyTest extends TestCase {
 
     MockClaimReporter reporter;
@@ -51,65 +52,78 @@
     }
 
     public void testOtherPredicate() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        final IPredicate predicate = new BasePredicate("predicate");
-        final IObject object = new BaseObject("object");
-        policy.claim(subject, predicate, object, true);
+        final IResource subject = new MockLocation("subject");
+        final String predicate = "predicate";
+        final String object = "object";
+        policy.claim(new CustomClaim(subject, predicate, object, true));
         assertEquals("No claim", 0, reporter.claims.size());
     }
 
     public void testASLFamily() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, Apache20LicenseFamily.APACHE_SOFTWARE_LICENSE_NAME, true);
+        final IResource subject = new MockLocation("subject");
+        policy.claim(new LicenseFamilyClaim(subject, Apache20LicenseFamily.APACHE_SOFTWARE_LICENSE_NAME, Claims.ASL_CODE, ""));
         assertEquals("Approved claim", 1, reporter.claims.size());
-        assertEquals("Approved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.TRUE, false), reporter.claims.get(0));
+        assertApproval(true);
+    }
+
+    private void assertApproval(boolean pApproved) {
+        final IClaim claim = (IClaim) reporter.claims.get(0);
+        assertApproval(pApproved, claim);
+    }
+
+    private void assertApproval(boolean pApproved, final IClaim claim) {
+        assertTrue("Expected LicenseApprovalClaim, got " + claim.getClass().getName(), claim instanceof LicenseApprovalClaim);
+        if (pApproved) {
+            assertTrue("Expected Approval", ((LicenseApprovalClaim) claim).isApproved());
+        } else {
+            assertFalse("Expected Decline", ((LicenseApprovalClaim) claim).isApproved());
+        }
     }
     
     public void testOASISFamily() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, OASISLicenseFamily.OASIS_OPEN_LICENSE_NAME, true);
+        final IResource subject = new MockLocation("subject");
+        policy.claim(new LicenseFamilyClaim(subject, OASISLicenseFamily.OASIS_OPEN_LICENSE_NAME, Claims.OASIS_CODE, ""));
         assertEquals("Approved claim", 1, reporter.claims.size());
-        assertEquals("Approved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.TRUE, false), reporter.claims.get(0));
+        assertApproval(true);
     }
     
     public void testW3CFamily() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, W3CSoftwareLicenseFamily.W3C_SOFTWARE_COPYRIGHT_NAME, true);
+        final IResource subject = new MockLocation("subject");
+        policy.claim(new LicenseFamilyClaim(subject, W3CSoftwareLicenseFamily.W3C_SOFTWARE_COPYRIGHT_NAME, Claims.W3C_CODE, ""));
         assertEquals("Approved claim", 1, reporter.claims.size());
-        assertEquals("Approved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.TRUE, false), reporter.claims.get(0));
+        assertApproval(true);
     }
     
     public void testW3CDocFamily() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, W3CDocumentLicenseFamily.W3C_DOCUMENT_COPYRIGHT_NAME, true);
+        final IResource subject = new MockLocation("subject");
+        policy.claim(new LicenseFamilyClaim(subject, W3CDocumentLicenseFamily.W3C_DOCUMENT_COPYRIGHT_NAME, Claims.W3CD_CODE, ""));
         assertEquals("Approved claim", 1, reporter.claims.size());
-        assertEquals("Approved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.TRUE, false), reporter.claims.get(0));
+        assertApproval(true);
     }
     
     public void testUnknownFamily() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, true);
+        final IResource subject = new MockLocation("subject");
+        policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN, ""));
         assertEquals("Approved claim", 1, reporter.claims.size());
-        assertEquals("Approved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.FALSE, false), reporter.claims.get(0));
+        assertApproval(false);
     }
     
     public void testCustomNames() throws Exception {
         reporter = new MockClaimReporter();
         LicenseFamilyName[] custom = {new LicenseFamilyName("Example")};
         policy = new DefaultPolicy(reporter, custom);
-        final ISubject subject = new MockSubject("subject");
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, true);
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, W3CDocumentLicenseFamily.W3C_DOCUMENT_COPYRIGHT_NAME, true);
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, W3CSoftwareLicenseFamily.W3C_SOFTWARE_COPYRIGHT_NAME, true);
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, Apache20LicenseFamily.APACHE_SOFTWARE_LICENSE_NAME, true);
+        final IResource subject = new MockLocation("subject");
+        policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN, ""));
+        policy.claim(new LicenseFamilyClaim(subject, W3CDocumentLicenseFamily.W3C_DOCUMENT_COPYRIGHT_NAME, Claims.W3CD_CODE, ""));
+        policy.claim(new LicenseFamilyClaim(subject, W3CSoftwareLicenseFamily.W3C_SOFTWARE_COPYRIGHT_NAME, Claims.W3C_CODE, ""));
+        policy.claim(new LicenseFamilyClaim(subject, Apache20LicenseFamily.APACHE_SOFTWARE_LICENSE_NAME, Claims.ASL_CODE, ""));
         assertEquals("Four unapproved claims", 4, reporter.claims.size());
-        assertEquals("Four unapproved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.FALSE, false), reporter.claims.get(0));
-        assertEquals("Four unapproved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.FALSE, false), reporter.claims.get(1));
-        assertEquals("Four unapproved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.FALSE, false), reporter.claims.get(2));
-        assertEquals("Four unapproved claim", new MockClaimReporter.Claim(subject, Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.FALSE, false), reporter.claims.get(3));
-        policy.claim(subject, Claims.LICENSE_FAMILY_PREDICATE, custom[0], true);
+        assertApproval(false, (IClaim) reporter.claims.get(0));
+        assertApproval(false, (IClaim) reporter.claims.get(1));
+        assertApproval(false, (IClaim) reporter.claims.get(2));
+        assertApproval(false, (IClaim) reporter.claims.get(3));
+        policy.claim(new LicenseFamilyClaim(subject, custom[0], new LicenseFamilyCode("EXAMP"), ""));
         assertEquals("Approved claim", 5, reporter.claims.size());
-        assertEquals("Approved claim", new MockClaimReporter.Claim(subject, 
-                Claims.LICENSE_APPROVAL_PREDICATE, LicenseApprovalObject.TRUE, false), reporter.claims.get(4));
+        assertApproval(true, (IClaim) reporter.claims.get(4));
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java Mon Mar 16 00:17:47 2009
@@ -69,6 +69,6 @@
         MonolithicFileDocument document = new MonolithicFileDocument(new File("src/test/elements/Dummy.jar"));
         IDocumentAnalyser analyser = DefaultAnalyserFactory.createArchiveTypeAnalyser(reporter);
         analyser.analyse(document);
-        assertEquals("Open note element", "<resource name='src/test/elements/Dummy.jar'><type name='archive'/>", out.toString());
+        assertEquals("Open note element", "<resource name='src/test/elements/Dummy.jar'><type name='archive'/><archive-type name='unreadable'/>", out.toString());
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/HeaderCheckWorkerTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/HeaderCheckWorkerTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/HeaderCheckWorkerTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/HeaderCheckWorkerTest.java Mon Mar 16 00:17:47 2009
@@ -24,9 +24,8 @@
 import junit.framework.TestCase;
 
 import org.apache.rat.analysis.license.ApacheSoftwareLicense20;
-import org.apache.rat.report.analyser.HeaderCheckWorker;
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 public class HeaderCheckWorkerTest extends TestCase {
@@ -42,7 +41,7 @@
 	}
 	
 	public void testIsFinished() throws Exception {
-        final ISubject subject = new MockSubject("subject");
+        final IResource subject = new MockLocation("subject");
 		HeaderCheckWorker worker = new HeaderCheckWorker(new StringReader(""), new ApacheSoftwareLicense20(), reporter, subject);
 		assertFalse(worker.isFinished());
 		worker.read();

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserAnalyseTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserAnalyseTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserAnalyseTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserAnalyseTest.java Mon Mar 16 00:17:47 2009
@@ -23,6 +23,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.rat.document.IDocumentAnalyser;
 import org.apache.rat.document.impl.zip.ZipFileDocument;
 import org.apache.rat.report.claim.impl.xml.SimpleXmlClaimReporter;
 import org.apache.rat.report.xml.writer.impl.base.XmlWriter;
@@ -30,40 +31,33 @@
 
 public class ReadableArchiveAnalyserAnalyseTest extends TestCase {
 
-    StringWriter out;
-    ReadableArchiveAnalyser analyser;
-    
-    protected void setUp() throws Exception {
-        super.setUp();
-        out = new StringWriter();
-        XmlWriter writer = new XmlWriter(out);
-        analyser = new ReadableArchiveAnalyser(new SimpleXmlClaimReporter(writer));
-    }
-
-    protected void tearDown() throws Exception {
-        super.tearDown();
-    }
-
     public void testVisitReadableArchive() throws Exception {
-    	final File dummyJar = Resources.getResourceFile("elements/dummy.jar");
+        final StringWriter out = new StringWriter();
+        final IDocumentAnalyser analyser = newAnalyser(out);
+        final File dummyJar = Resources.getResourceFile("elements/dummy.jar");
         ZipFileDocument document = new ZipFileDocument(dummyJar);
         analyser.analyse(document);
         assertEquals("Readable attribute set",
                      "<resource name='"
                      + dummyJar.getPath().replace('/', File.separatorChar)
-                     + "'><archive-type name='readable'/>", out.toString());
+                     + "'><type name='archive'/><archive-type name='readable'/>", out.toString());
+    }
+
+    private IDocumentAnalyser newAnalyser(final StringWriter out) {
+        final XmlWriter writer = new XmlWriter(out);
+        final SimpleXmlClaimReporter reporter = new SimpleXmlClaimReporter(writer);
+        return DefaultAnalyserFactory.createArchiveTypeAnalyser(reporter);
     }
 
     public void testVisitUnreadableArchive() throws Exception {
+        final StringWriter out = new StringWriter();
+        final IDocumentAnalyser analyser = newAnalyser(out);
         String name = "src/test/artifacts/dummy.tar.gz";
         ZipFileDocument document = new ZipFileDocument((new File(name)));
         analyser.analyse(document);
         assertEquals("Readable attribute unset",
                      "<resource name='"
                      + name.replace('/', File.separatorChar)
-                     + "'><archive-type name='unreadable'/>", out.toString());
-
+                     + "'><type name='archive'/><archive-type name='unreadable'/>", out.toString());
     }
-
-
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/analyser/ReadableArchiveAnalyserTest.java Mon Mar 16 00:17:47 2009
@@ -18,36 +18,32 @@
  */ 
 package org.apache.rat.report.analyser;
 
+import junit.framework.TestCase;
+
 import org.apache.rat.document.MockArchiveDocument;
 import org.apache.rat.document.MockDocument;
 import org.apache.rat.document.MockDocumentCollection;
+import org.apache.rat.report.claim.IClaim;
+import org.apache.rat.report.claim.impl.ArchiveFileTypeClaim;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
-import junit.framework.TestCase;
 
 public class ReadableArchiveAnalyserTest extends TestCase {
-
-    MockClaimReporter reporter;
-    ReadableArchiveAnalyser analyser;
-    
-    protected void setUp() throws Exception {
-        super.setUp();
-        reporter = new MockClaimReporter();
-        analyser = new ReadableArchiveAnalyser(reporter);
-    }
-
-    protected void tearDown() throws Exception {
-        super.tearDown();
+    private final AbstractSingleClaimAnalyser newAnalyser() {
+        final MockClaimReporter reporter = new MockClaimReporter();
+        return (AbstractSingleClaimAnalyser) DefaultAnalyserFactory.createArchiveTypeAnalyser(reporter);
     }
 
     public void testUnreadableArchiveToObject() throws Exception {
         MockDocument document = new MockDocument();
-        assertEquals("Document is unreadable", ReadableArchiveAnalyser.UNREADABLE_ARCHIVE_VALUE, 
-                analyser.toObject(document));
+        final IClaim claim = newAnalyser().toClaim(document);
+        assertTrue("Expected ArchiveFileTypeClaim", claim instanceof ArchiveFileTypeClaim);
+        assertFalse("Expected unreadable archive", ((ArchiveFileTypeClaim) claim).isReadable());
     }
 
     public void testReadableArchiveToObject() throws Exception {
         MockArchiveDocument document = new MockArchiveDocument("whatever", new MockDocumentCollection());
-        assertEquals("Document is readable", ReadableArchiveAnalyser.READABLE_ARCHIVE_VALUE, 
-                analyser.toObject(document));
+        final IClaim claim = newAnalyser().toClaim(document);
+        assertTrue("Expected ArchiveFileTypeClaim", claim instanceof ArchiveFileTypeClaim);
+        assertTrue("Expected readable archive", ((ArchiveFileTypeClaim) claim).isReadable());
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/MockClaimReporter.java Mon Mar 16 00:17:47 2009
@@ -22,48 +22,19 @@
 import java.util.List;
 
 import org.apache.rat.report.RatReportFailedException;
+import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.IObject;
-import org.apache.rat.report.claim.IPredicate;
-import org.apache.rat.report.claim.ISubject;
 
 public class MockClaimReporter implements IClaimReporter {
 
     public List claims = new ArrayList();
     
-    public void claim(ISubject subject, IPredicate predicate,
-            IObject object, boolean isLiteral)
+    public void claim(IClaim pClaim)
             throws RatReportFailedException {
-        claims.add(new Claim(subject, predicate, object, isLiteral));
+        claims.add(pClaim);
     }
 
-    public Claim getClaim(int index) {
-        return (Claim) claims.get(index);
-    }
-    
-    public static class Claim {
-        public final ISubject subject;
-        public final IPredicate predicate;
-        public final IObject object;
-        public final boolean isLiteral;
-
-        public Claim(final ISubject subject, final IPredicate predicate, final IObject object, final boolean isLiteral) {
-            this.subject = subject;
-            this.predicate = predicate;
-            this.object = object;
-            this.isLiteral = isLiteral;
-        }
-        
-        public boolean equals(Object obj) {
-            boolean result = false;
-            if (obj instanceof Claim) {
-                Claim claim = (Claim) obj;
-                result = subject.equals(claim.subject) && predicate.equals(claim.predicate) 
-                && object.equals(claim.object) && isLiteral == claim.isLiteral;
-            }
-            return result;
-        }
-        
-        
+    public CustomClaim getClaim(int index) {
+        return (CustomClaim) claims.get(index);
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporterTest.java Mon Mar 16 00:17:47 2009
@@ -20,12 +20,8 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.BaseObject;
-import org.apache.rat.report.claim.BasePredicate;
-import org.apache.rat.report.claim.IObject;
-import org.apache.rat.report.claim.IPredicate;
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.xml.MockXmlWriter;
 
 public class SimpleXmlClaimReporterTest extends TestCase {
@@ -44,57 +40,57 @@
     }
 
     public void testClaimsAboutOneResource() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        final IPredicate predicate = new BasePredicate("predicate");
-        final IObject object = new BaseObject("object");
-        reporter.claim(subject, predicate, object, false);
+        final IResource subject = new MockLocation("subject");
+        final String predicate = "predicate";
+        final String object = "object";
+        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));
         assertTrue("Second call is name attribute", mockWriter.isAttribute("name", subject.getName(), 1));
-        assertTrue("Third call is predicate element", mockWriter.isOpenElement(predicate.getName(), 2));
-        assertTrue("Forth call is object attribute", mockWriter.isAttribute("name", object.getValue(), 3));    
+        assertTrue("Third call is predicate element", mockWriter.isOpenElement(predicate, 2));
+        assertTrue("Forth call is object attribute", mockWriter.isAttribute("name", object, 3));    
         assertTrue("Fifth call is close element", mockWriter.isCloseElement(4));    
-        final IPredicate predicateTwo = new BasePredicate("another-predicate");
-        final IObject objectTwo = new BaseObject("another-object");
-        reporter.claim(subject, predicateTwo, objectTwo, false);
+        final String predicateTwo = "another-predicate";
+        final String objectTwo = "another-object";
+        reporter.claim(new CustomClaim(subject, predicateTwo, objectTwo, false));
         assertEquals("Another three calls made", 8, mockWriter.calls.size());
-        assertTrue("Sixth call is predicate element", mockWriter.isOpenElement(predicateTwo.getName(), 5));
-        assertTrue("Seventh call is object attribute", mockWriter.isAttribute("name", objectTwo.getValue(), 6));    
+        assertTrue("Sixth call is predicate element", mockWriter.isOpenElement(predicateTwo, 5));
+        assertTrue("Seventh call is object attribute", mockWriter.isAttribute("name", objectTwo, 6));    
         assertTrue("Eighth call is close element", mockWriter.isCloseElement(7));    
     }
 
     public void testClaimsAboutTwoResource() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        final IPredicate predicate = new BasePredicate("predicate");
-        final IObject object = new BaseObject("object");
-        reporter.claim(subject, predicate, object, false);
+        final IResource subject = new MockLocation("subject");
+        final String predicate = "predicate";
+        final String object = "object";
+        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));
         assertTrue("Second call is name attribute", mockWriter.isAttribute("name", subject.getName(), 1));
-        assertTrue("Third call is predicate element", mockWriter.isOpenElement(predicate.getName(), 2));
-        assertTrue("Forth call is object attribute", mockWriter.isAttribute("name", object.getValue(), 3));    
+        assertTrue("Third call is predicate element", mockWriter.isOpenElement(predicate, 2));
+        assertTrue("Forth call is object attribute", mockWriter.isAttribute("name", object, 3));    
         assertTrue("Fifth call is close element", mockWriter.isCloseElement(4));    
-        final ISubject subjectTwo = new MockSubject("another-subject");
-        reporter.claim(subjectTwo, predicate, object, false);
+        final IResource subjectTwo = new MockLocation("another-subject");
+        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));  
         assertTrue("Seventh call is open element 'resource'", mockWriter.isOpenElement("resource", 6));
         assertTrue("Eighth call is name attribute", mockWriter.isAttribute("name", subjectTwo.getName(), 7));
-        assertTrue("Nineth call is predicate element", mockWriter.isOpenElement(predicate.getName(), 8));
-        assertTrue("Tenth call is object attribute", mockWriter.isAttribute("name", object.getValue(), 9));    
+        assertTrue("Nineth call is predicate element", mockWriter.isOpenElement(predicate, 8));
+        assertTrue("Tenth call is object attribute", mockWriter.isAttribute("name", object, 9));    
         assertTrue("Eleventh call is close element", mockWriter.isCloseElement(10));
     }
 
     public void testLiteralClaim() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        final IPredicate predicate = new BasePredicate("predicate");
-        final IObject object = new BaseObject("object");
-        reporter.claim(subject, predicate, object, true);
+        final IResource subject = new MockLocation("subject");
+        final String predicate = "predicate";
+        final String object = "object";
+        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));
         assertTrue("Second call is name attribute", mockWriter.isAttribute("name", subject.getName(), 1));
-        assertTrue("Third call is predicate element", mockWriter.isOpenElement(predicate.getName(), 2));
-        assertTrue("Forth call is object content", mockWriter.isContent(object.getValue(), 3));    
+        assertTrue("Third call is predicate element", mockWriter.isOpenElement(predicate, 2));
+        assertTrue("Forth call is object content", mockWriter.isContent(object, 3));    
         assertTrue("Fifth call is close element", mockWriter.isCloseElement(4));  
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexerTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexerTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexerTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/claim/util/ClaimReporterMultiplexerTest.java Mon Mar 16 00:17:47 2009
@@ -20,13 +20,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.rat.report.claim.BaseObject;
-import org.apache.rat.report.claim.BasePredicate;
+import org.apache.rat.document.IResource;
+import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.IObject;
-import org.apache.rat.report.claim.IPredicate;
-import org.apache.rat.report.claim.ISubject;
-import org.apache.rat.report.claim.MockSubject;
+import org.apache.rat.report.claim.impl.xml.CustomClaim;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 public class ClaimReporterMultiplexerTest extends TestCase {
@@ -50,22 +47,22 @@
     }
 
     public void testClaim() throws Exception {
-        final ISubject subject = new MockSubject("subject");
-        final IPredicate predicate = new BasePredicate("predicate");
-        final ISubject otherSubject = new MockSubject("another subject");
-        final IPredicate otherPredicate = new BasePredicate("another predicate");
-        final IObject object = new BaseObject("object");
-        final IObject otherObject = new BaseObject("another object");
-        multiplexer.claim(subject, predicate, object, true);
-        MockClaimReporter.Claim claimOne = new MockClaimReporter.Claim(subject, predicate, object, true);
+        final IResource subject = new MockLocation("subject");
+        final String predicate = "predicate";
+        final IResource otherSubject = new MockLocation("another subject");
+        final String otherPredicate = "another predicate";
+        final String object = "object";
+        final String otherObject = "another object";
+        multiplexer.claim(new CustomClaim(subject, predicate, object, true));
+        CustomClaim claimOne = new CustomClaim(subject, predicate, object, true);
         assertEquals("Claim reported", 1 , reporterOne.claims.size());
         assertEquals("Claim reported", claimOne, reporterOne.claims.get(0));
         assertEquals("Claim reported", 1 , reporterTwo.claims.size());
         assertEquals("Claim reported", claimOne, reporterTwo.claims.get(0));
         assertEquals("Claim reported", 1 , reporterThree.claims.size());
         assertEquals("Claim reported", claimOne, reporterThree.claims.get(0));
-        multiplexer.claim(otherSubject, otherPredicate, otherObject, false);
-        MockClaimReporter.Claim claimTwo = new MockClaimReporter.Claim(otherSubject, otherPredicate, otherObject, false);
+        multiplexer.claim(new CustomClaim(otherSubject, otherPredicate, otherObject, false));
+        CustomClaim claimTwo = new CustomClaim(otherSubject, otherPredicate, otherObject, false);
         assertEquals("Claim reported", 2, reporterOne.claims.size());
         assertEquals("Claim reported", claimTwo, reporterOne.claims.get(1));
         assertEquals("Claim reported", 2, reporterTwo.claims.size());

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java Mon Mar 16 00:17:47 2009
@@ -27,6 +27,8 @@
 import org.apache.rat.DirectoryWalker;
 import org.apache.rat.analysis.MockLicenseMatcher;
 import org.apache.rat.report.RatReport;
+import org.apache.rat.report.claim.ClaimStatistic;
+import org.apache.rat.report.claim.FileType;
 import org.apache.rat.report.xml.writer.IXmlWriter;
 import org.apache.rat.report.xml.writer.impl.base.XmlWriter;
 import org.apache.rat.test.utils.Resources;
@@ -58,7 +60,8 @@
     	final String elementsPath = Resources.getResourceDirectory("elements/Source.java");
         final MockLicenseMatcher mockLicenseMatcher = new MockLicenseMatcher();
         DirectoryWalker directory = new DirectoryWalker(new File(elementsPath), IGNORE_EMPTY);
-        RatReport report = XmlReportFactory.createStandardReport(writer, mockLicenseMatcher);
+        final ClaimStatistic statistic = new ClaimStatistic();
+        RatReport report = XmlReportFactory.createStandardReport(writer, mockLicenseMatcher, statistic);
         report.startReport();
         report(directory, report);
         report.endReport();
@@ -79,5 +82,9 @@
                 "<resource name='" + elementsPath + "/dummy.jar'><type name='archive'/><archive-type name='readable'/></resource>" +
                 "</rat-report>", output);
         assertTrue("Is well formed", XmlUtils.isWellFormedXml(output));
+        assertEquals("Binary files", new Integer(1), statistic.getFileTypeMap().get(FileType.BINARY));
+        assertEquals("Notice files", new Integer(2), statistic.getFileTypeMap().get(FileType.NOTICE));
+        assertEquals("Standard files", new Integer(3), statistic.getFileTypeMap().get(FileType.STANDARD));
+        assertEquals("Archives", new Integer(1), statistic.getFileTypeMap().get(FileType.ARCHIVE));
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java Mon Mar 16 00:17:47 2009
@@ -78,7 +78,7 @@
                     "<resource name='" + elementsPath + "/Source.java'><type name='standard'/></resource>" +
                     "<resource name='" + elementsPath + "/Text.txt'><type name='standard'/></resource>" +
                     "<resource name='" + elementsPath + "/Xml.xml'><type name='standard'/></resource>" +
-                    "<resource name='" + elementsPath + "/dummy.jar'><type name='archive'/></resource>" +
+                    "<resource name='" + elementsPath + "/dummy.jar'><type name='archive'/><archive-type name='readable'/></resource>" +
                     "<resource name='" + elementsPath + "/sub/Empty.txt'><type name='standard'/></resource>" +
                 "</rat-report>", output);
         assertTrue("Is well formed", XmlUtils.isWellFormedXml(output));

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/AbstractRatMojo.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/AbstractRatMojo.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/AbstractRatMojo.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/AbstractRatMojo.java Mon Mar 16 00:17:47 2009
@@ -22,7 +22,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.PrintWriter;
+import java.io.Writer;
 import java.lang.reflect.UndeclaredThrowableException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,6 +42,7 @@
 import org.apache.rat.license.ILicenseFamily;
 import org.apache.rat.report.IReportable;
 import org.apache.rat.report.RatReportFailedException;
+import org.apache.rat.report.claim.ClaimStatistic;
 import org.codehaus.plexus.util.DirectoryScanner;
 
 
@@ -333,12 +334,12 @@
      * @throws MojoExecutionException
      *             Another error occurred while creating the report.
      */
-    protected void createReport( PrintWriter out, InputStream style ) throws MojoExecutionException, MojoFailureException
+    protected ClaimStatistic createReport( Writer out, InputStream style ) throws MojoExecutionException, MojoFailureException
     {
         HeaderMatcherMultiplexer m = new HeaderMatcherMultiplexer( getLicenseMatchers() );
         try
         {
-            Report.report( out, getResources(), style, m, getApprovedLicenseNames() );
+            return Report.report( out, getResources(), style, m, getApprovedLicenseNames() );
         }
         catch ( TransformerConfigurationException e )
         {

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/RatCheckMojo.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/RatCheckMojo.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/RatCheckMojo.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-plugin/src/main/java/org/apache/rat/mp/RatCheckMojo.java Mon Mar 16 00:17:47 2009
@@ -20,31 +20,13 @@
  */
 
 import java.io.File;
-import java.io.FileOutputStream;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.URL;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.rat.Defaults;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
+import org.apache.rat.report.claim.ClaimStatistic;
 
 /**
  * Run RAT to perform a violation check.
@@ -66,53 +48,30 @@
      * @parameter expression="${rat.numUnapprovedLicenses}" default-value="0"
      */
     private int numUnapprovedLicenses;
-    
-    private URL getStylesheetURL()
-    {
-        URL url = Thread.currentThread().getContextClassLoader().getResource( "org/apache/rat/mp/identity.xsl" );
-        if ( url == null )
-        {
-            throw new IllegalStateException( "Failed to locate stylesheet" );
-        }
-        return url;
-    }
 
-    private Document getRawReport()
+    private ClaimStatistic getRawReport()
         throws MojoExecutionException, MojoFailureException
     {
-        URL url = getStylesheetURL();
-        InputStream style = null;
+        FileWriter fw = null;
         try
         {
-            style = url.openStream();
-            final StringWriter sw = new StringWriter();
-            createReport( new PrintWriter( sw ), style );
-            style.close();
-            style = null;
-            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-            dbf.setNamespaceAware( true );
-            dbf.setValidating( false );
-            return dbf.newDocumentBuilder().parse( new InputSource( new StringReader( sw.toString() ) ) );
+            fw = new FileWriter( reportFile );
+            final ClaimStatistic statistic = createReport( fw, Defaults.getDefaultStyleSheet() );
+            fw.close();
+            fw = null;
+            return statistic;
         }
         catch ( IOException e )
         {
             throw new MojoExecutionException( e.getMessage(), e );
         }
-        catch ( SAXException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
-        catch ( ParserConfigurationException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
         finally
         {
-            if ( style != null )
+            if ( fw != null )
             {
                 try
                 {
-                    style.close();
+                    fw.close();
                 }
                 catch ( Throwable t )
                 {
@@ -135,92 +94,16 @@
         File parent = reportFile.getParentFile();
         parent.mkdirs();
 
-        final Document report = getRawReport();
-        FileOutputStream fos = null;
-        try
-        {
-            fos = new FileOutputStream( reportFile );
-            Transformer t = TransformerFactory.newInstance().newTransformer( new StreamSource( Defaults.getDefaultStyleSheet() ) );
-            t.transform( new DOMSource( report ), new StreamResult( fos ) );
-            fos.close();
-            fos = null;
-        }
-        catch ( TransformerException e )
-        {
-            throw new MojoExecutionException( "Failed to create file " + reportFile + ": " + e.getMessage(), e );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Failed to create file " + reportFile + ": " + e.getMessage(), e );
-        }
-        finally
-        {
-            if ( fos != null )
-            {
-                try
-                {
-                    fos.close();
-                }
-                catch ( Throwable t )
-                {
-                    // Ignore me
-                }
-            }
-        }
-
+        final ClaimStatistic report = getRawReport();
         check( report );
     }
 
-    
-    private void count( RatStatistics pStatistics, Node node )
-    {
-        for ( Node child = node.getFirstChild();  child != null;  child = child.getNextSibling() )
-        {
-            switch ( child.getNodeType() )
-            {
-                case Node.ELEMENT_NODE:
-                    final Element e = (Element) child;
-                    final String uri = e.getNamespaceURI();
-                    if ( uri == null  ||  uri.length() == 0 )
-                    {
-                        final String localName = e.getLocalName();
-                        if ( "license-approval".equals( localName ) )
-                        {
-                            if ( Boolean.valueOf( e.getAttribute( "name" ) ).booleanValue() )
-                            {
-                                pStatistics.setNumApprovedLicenses( pStatistics.getNumApprovedLicenses() + 1 );
-                            }
-                            else
-                            {
-                                pStatistics.setNumUnapprovedLicenses( pStatistics.getNumUnapprovedLicenses() + 1 );
-                            }
-                        }
-                    }
-                    count( pStatistics, child );
-                    break;
-                case Node.DOCUMENT_FRAGMENT_NODE:
-                    count( pStatistics, child );
-                    break;
-                default:
-                    break;
-            }
-        }
-    }
-
-    protected void check( Document document )
-        throws MojoFailureException
-    {
-        RatStatistics statistics = new RatStatistics();
-        count( statistics, document );
-        check( statistics );
-    }
-
-    protected void check( RatStatistics statistics )
+    protected void check( ClaimStatistic statistics )
         throws MojoFailureException
     {
-        if ( numUnapprovedLicenses < statistics.getNumUnapprovedLicenses() )
+        if ( numUnapprovedLicenses < statistics.getNumUnApproved() )
         {
-            throw new RatCheckException( "Too many unapproved licenses: " + statistics.getNumUnapprovedLicenses() );
+            throw new RatCheckException( "Too many unapproved licenses: " + statistics.getNumUnApproved() );
         }
     }
 }

Modified: incubator/rat/main/branches/rat-output-semantics/apache-rat-tasks/src/test/java/org/example/Matcher.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/branches/rat-output-semantics/apache-rat-tasks/src/test/java/org/example/Matcher.java?rev=754798&r1=754797&r2=754798&view=diff
==============================================================================
--- incubator/rat/main/branches/rat-output-semantics/apache-rat-tasks/src/test/java/org/example/Matcher.java (original)
+++ incubator/rat/main/branches/rat-output-semantics/apache-rat-tasks/src/test/java/org/example/Matcher.java Mon Mar 16 00:17:47 2009
@@ -19,8 +19,8 @@
 import org.apache.rat.analysis.IHeaderMatcher;
 import org.apache.rat.analysis.RatHeaderAnalysisException;
 import org.apache.rat.analysis.license.BaseLicense;
+import org.apache.rat.document.IResource;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.ISubject;
 import org.apache.rat.report.claim.LicenseFamilyCode;
 import org.apache.rat.report.claim.LicenseFamilyName;
 
@@ -31,7 +31,7 @@
     }
     public void reset() {}
     
-    public boolean match(ISubject subject, String line, IClaimReporter reporter) throws RatHeaderAnalysisException {
+    public boolean match(IResource subject, String line, IClaimReporter reporter) throws RatHeaderAnalysisException {
     	reportOnLicense(subject, reporter);
     	return true;
     }