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 20:14:23 UTC

svn commit: r777642 - in /incubator/rat/main/trunk/apache-rat-core/src: main/java/org/apache/rat/api/ main/java/org/apache/rat/policy/ main/java/org/apache/rat/report/claim/impl/ main/java/org/apache/rat/report/claim/impl/xml/ main/java/org/apache/rat/...

Author: rdonkin
Date: Fri May 22 18:14:22 2009
New Revision: 777642

URL: http://svn.apache.org/viewvc?rev=777642&view=rev
Log:
RAT-53 License approval now stored in meta data. https://issues.apache.org/jira/browse/RAT-53

Removed:
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseApprovalClaim.java
Modified:
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/api/MetaData.java
    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/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/xml/XmlReportFactory.java
    incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/api/MetaData.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/api/MetaData.java?rev=777642&r1=777641&r2=777642&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/api/MetaData.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/api/MetaData.java Fri May 22 18:14:22 2009
@@ -43,7 +43,7 @@
     public static final String RAT_URL_DOCUMENT_CATEGORY = RAT_BASE_URL + "#FileCategory";
     
     // Header Categories
-    public static final String RAT_URL_HEADER_CATEGORY= RAT_BASE_URL + "#HeaderCategory";
+    public static final String RAT_URL_HEADER_CATEGORY = RAT_BASE_URL + "#HeaderCategory";
     
     // License Family Categories
     public static final String RAT_URL_LICENSE_FAMILY_CATEGORY= RAT_BASE_URL + "#LicenseFamilyCategory";
@@ -89,7 +89,14 @@
         = new Datum(RAT_URL_LICENSE_FAMILY_NAME, RAT_LICENSE_FAMILY_NAME_VALUE_UNKNOWN); 
     
     // Header sample
-    public static final String RAT_URL_HEADER_SAMPLE = RAT_BASE_URL + "HeaderSample";
+    public static final String RAT_URL_HEADER_SAMPLE = RAT_BASE_URL + "#HeaderSample";
+    
+    // License Approval
+    public static final String RAT_URL_APPROVED_LICENSE = RAT_BASE_URL + "#ApprovedLicense";
+    public static final String RAT_APPROVED_LICENSE_VALUE_TRUE = Boolean.TRUE.toString();
+    public static final String RAT_APPROVED_LICENSE_VALUE_FALSE = Boolean.FALSE.toString();
+    public static final Datum RAT_APPROVED_LICENSE_DATIM_TRUE = new Datum(RAT_URL_APPROVED_LICENSE, RAT_APPROVED_LICENSE_VALUE_TRUE);
+    public static final Datum RAT_APPROVED_LICENSE_DATIM_FALSE = new Datum(RAT_URL_APPROVED_LICENSE, RAT_APPROVED_LICENSE_VALUE_FALSE);
     
     private ContentType contentType;
     /** 
@@ -172,6 +179,23 @@
     }
     
     /**
+     * Gets the value of the first datum matching the given name.
+     * @param name not null
+     * @return the value of the matchin datum first added when there is any matching data,
+     * null otherwise
+     */
+    public String value(final String name) {
+        final Datum datum = get(name);
+        final String result;
+        if (datum == null) {
+            result = null;
+        } else {
+            result = datum.getValue();
+        }
+        return result;
+    }
+    
+    /**
      * Removes all data matching the given name.
      * @param name not null
      * @return true if any data match, false otherwise

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=777642&r1=777641&r2=777642&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 18:14:22 2009
@@ -19,15 +19,14 @@
 package org.apache.rat.policy;
 
 import java.util.Arrays;
-import java.util.Comparator;
 
 import org.apache.rat.api.MetaData;
+import org.apache.rat.api.MetaData.Datum;
 import org.apache.rat.document.IDocument;
 import org.apache.rat.license.ILicenseFamily;
 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.impl.LicenseApprovalClaim;
 
 public class DefaultPolicy implements IClaimReporter {
     private static final String[] APPROVED_LICENSES = {
@@ -49,22 +48,20 @@
         }
         return results;
     }
-    
-    private final IClaimReporter reporter;
+    ;
     private final String[] approvedLicenseNames;
     private IDocument subject;
     private boolean testedDocument = false;
     
-    public DefaultPolicy(final IClaimReporter reporter) {
-        this(reporter, APPROVED_LICENSES);
+    public DefaultPolicy() {
+        this(APPROVED_LICENSES);
     }
     
-    public DefaultPolicy(final IClaimReporter reporter, final ILicenseFamily[] approvedLicenses) {
-        this(reporter, toNames(approvedLicenses));
+    public DefaultPolicy(final ILicenseFamily[] approvedLicenses) {
+        this(toNames(approvedLicenses));
     }
 
-    public DefaultPolicy(final IClaimReporter reporter, final String[] approvedLicenseNames) {
-        this.reporter = reporter;
+    public DefaultPolicy(final String[] approvedLicenseNames) {
         if (approvedLicenseNames == null) {
             this.approvedLicenseNames = APPROVED_LICENSES;
         } else {
@@ -86,14 +83,20 @@
             if (nameDatum != null) {
                 final String name = nameDatum.getValue();
                 final boolean isApproved = Arrays.binarySearch(approvedLicenseNames, name) >= 0;
-                reportLicenseApprovalClaim(subject, isApproved, reporter);
+                reportLicenseApprovalClaim(subject, isApproved);
             }
             testedDocument = true;
         }
     }
 
-    public void reportLicenseApprovalClaim(final IDocument subject, final boolean isAcceptable, final IClaimReporter reporter) throws RatReportFailedException {
-        reporter.claim(new LicenseApprovalClaim(subject, isAcceptable));
+    public void reportLicenseApprovalClaim(final IDocument subject, final boolean isAcceptable) throws RatReportFailedException {
+        final Datum datum;
+        if (isAcceptable) {
+            datum = MetaData.RAT_APPROVED_LICENSE_DATIM_TRUE;
+        } else {
+            datum = MetaData.RAT_APPROVED_LICENSE_DATIM_FALSE;
+        }
+        subject.getMetaData().set(datum);
     }
     
     

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=777642&r1=777641&r2=777642&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 18:14:22 2009
@@ -22,7 +22,7 @@
         // Does nothing
     }
 
-    protected void handleClaim(LicenseApprovalClaim pClaim) {
+    protected void handleApprovedLicenseClaim(String licenseApproved) {
         // Does nothing
     }
 
@@ -42,8 +42,6 @@
         writeDocumentClaimsWhenNecessary(subject);
         if (pClaim instanceof FileTypeClaim) {
             handleClaim((FileTypeClaim) pClaim);
-        } else if (pClaim instanceof LicenseApprovalClaim) {
-            handleClaim((LicenseApprovalClaim) pClaim);
         } else if (pClaim instanceof CustomClaim) {
             handleClaim((CustomClaim) pClaim);
         } else {
@@ -56,14 +54,30 @@
     }
 
     private void writeDocumentClaim(IDocument subject)  {
-        final MetaData.Datum headerCategoryDatum = subject.getMetaData().get(MetaData.RAT_URL_HEADER_CATEGORY);
+        final MetaData metaData = subject.getMetaData();
+        writeHeaderCategory(metaData);
+        writeLicenseFamilyName(metaData);
+        final MetaData.Datum approvedLicenseDatum = metaData.get(MetaData.RAT_URL_APPROVED_LICENSE);
+        if (approvedLicenseDatum != null) {
+            final String approvedLicense = approvedLicenseDatum.getValue();
+            if (approvedLicense != null) {
+                handleApprovedLicenseClaim(approvedLicense);
+            }
+        }
+    }
+
+    private void writeHeaderCategory(final MetaData metaData) {
+        final MetaData.Datum headerCategoryDatum = metaData.get(MetaData.RAT_URL_HEADER_CATEGORY);
         if (headerCategoryDatum != null) {
             final String headerCategory = headerCategoryDatum.getValue();
             if (headerCategory != null) {
                 handleHeaderCategoryClaim(headerCategory);
             }
         }
-        final MetaData.Datum licenseFamilyNameDatum = subject.getMetaData().get(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
+    }
+
+    private void writeLicenseFamilyName(final MetaData metaData) {
+        final MetaData.Datum licenseFamilyNameDatum = metaData.get(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
         if (licenseFamilyNameDatum != null) {
             final String licenseFamilyName = licenseFamilyNameDatum.getName();
             if (licenseFamilyName != null) {

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=777642&r1=777641&r2=777642&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 18:14:22 2009
@@ -46,8 +46,8 @@
         incMapValue(numsByFileType, pClaim.getType());
     }
 
-    protected void handleClaim(LicenseApprovalClaim pClaim) {
-        if (pClaim.isApproved()) {
+    protected void handleApprovedLicenseClaim(String licenseApproved) {
+        if (MetaData.RAT_APPROVED_LICENSE_VALUE_TRUE.equals(licenseApproved)) {
             numApproved++;
         } else {
             numUnApproved++;

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=777642&r1=777641&r2=777642&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 18:14:22 2009
@@ -26,7 +26,6 @@
 import org.apache.rat.report.claim.IClaim;
 import org.apache.rat.report.claim.IClaimReporter;
 import org.apache.rat.report.claim.impl.FileTypeClaim;
-import org.apache.rat.report.claim.impl.LicenseApprovalClaim;
 import org.apache.rat.report.xml.writer.IXmlWriter;
 
 public class SimpleXmlClaimReporter implements IClaimReporter {
@@ -54,11 +53,6 @@
         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(CustomClaim pClaim)
             throws IOException, RatReportFailedException {
@@ -86,8 +80,6 @@
     protected void handleClaim(IClaim pClaim) throws IOException, RatReportFailedException {
         if (pClaim instanceof FileTypeClaim) {
             handleClaim((FileTypeClaim) pClaim);
-        } else if (pClaim instanceof LicenseApprovalClaim) {
-            handleClaim((LicenseApprovalClaim) pClaim);
         } else if (pClaim instanceof CustomClaim) {
             handleClaim((CustomClaim) pClaim);
         } else {
@@ -135,6 +127,18 @@
         writeLicenseFamilyCategory(metaData);
         writeHeaderCategory(metaData);
         writeLicenseFamilyName(metaData);
+        writeApprovedLicense(metaData);
+        
+    }
+
+    private void writeApprovedLicense(final MetaData metaData) throws IOException, RatReportFailedException {
+        final MetaData.Datum approvedLicenseDatum = metaData.get(MetaData.RAT_URL_APPROVED_LICENSE);
+        if (approvedLicenseDatum != null) {
+            final String approvedLicense = approvedLicenseDatum.getValue();
+            if (approvedLicense != null) {
+                writeClaim(LICENSE_APPROVAL_PREDICATE, approvedLicense, false);
+            }
+        }
     }
 
     private void writeLicenseFamilyName(final MetaData metaData) throws IOException, RatReportFailedException {

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java?rev=777642&r1=777641&r2=777642&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReportFactory.java Fri May 22 18:14:22 2009
@@ -54,8 +54,8 @@
         } else {
             reporter = new ClaimAggregator(new SimpleXmlClaimReporter(writer));
         }
-        final DefaultPolicy policy = new DefaultPolicy(reporter, approvedLicenses);
-        final IClaimReporter[] reporters = {reporter, policy};
+        final DefaultPolicy policy = new DefaultPolicy(approvedLicenses);
+        final IClaimReporter[] reporters = {policy, reporter};
         final ClaimReporterMultiplexer multiplexer = new ClaimReporterMultiplexer(reporters);
         
         final IDocumentAnalyser analyser = 

Modified: incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java?rev=777642&r1=777641&r2=777642&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/policy/DefaultPolicyTest.java Fri May 22 18:14:22 2009
@@ -23,8 +23,6 @@
 import org.apache.rat.api.MetaData;
 import org.apache.rat.document.IDocument;
 import org.apache.rat.document.MockLocation;
-import org.apache.rat.report.claim.IClaim;
-import org.apache.rat.report.claim.impl.LicenseApprovalClaim;
 import org.apache.rat.report.claim.impl.xml.CustomClaim;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
@@ -33,11 +31,13 @@
 
     MockClaimReporter reporter;
     DefaultPolicy policy;
+    private IDocument subject;
     
     protected void setUp() throws Exception {
         super.setUp();
         reporter = new MockClaimReporter();
-        policy = new DefaultPolicy(reporter);
+        policy = new DefaultPolicy();
+        subject = new MockLocation("subject");
     }
 
     protected void tearDown() throws Exception {
@@ -45,7 +45,6 @@
     }
 
     public void testOtherPredicate() throws Exception {
-        final IDocument subject = new MockLocation("subject");
         final String predicate = "predicate";
         final String object = "object";
         policy.claim(new CustomClaim(subject, predicate, object, true));
@@ -53,61 +52,41 @@
     }
 
     public void testASLFamily() throws Exception {
-        final IDocument subject = new MockLocation("subject");
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_APACHE_LICENSE_VERSION_2_0);
         policy.report(subject);
         policy.claim(null);
-        assertEquals("Approved claim", 1, reporter.claims.size());
         assertApproval(true);
     }
 
     private void assertApproval(boolean pApproved) {
-        final IClaim claim = (IClaim) reporter.claims.get(0);
-        assertApproval(pApproved, claim);
+        assertEquals(pApproved, MetaData.RAT_APPROVED_LICENSE_VALUE_TRUE.equals(subject.getMetaData().value(MetaData.RAT_URL_APPROVED_LICENSE)));
     }
 
-    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 IDocument subject = new MockLocation("subject");
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_OASIS_OPEN_LICENSE);
         policy.report(subject);
         policy.claim(null);
-        assertEquals("Approved claim", 1, reporter.claims.size());
         assertApproval(true);
     }
     
     public void testW3CFamily() throws Exception {
-        final IDocument subject = new MockLocation("subject");
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_W3C_SOFTWARE_COPYRIGHT);
         policy.report(subject);
         policy.claim(null);
-        assertEquals("Approved claim", 1, reporter.claims.size());
         assertApproval(true);
     }
     
     public void testW3CDocFamily() throws Exception {
-        final IDocument subject = new MockLocation("subject");
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_W3C_DOCUMENT_COPYRIGHT);
         policy.report(subject);
         policy.claim(null);
-        assertEquals("Approved claim", 1, reporter.claims.size());
         assertApproval(true);
     }
     
     public void testUnknownFamily() throws Exception {
-        final IDocument subject = new MockLocation("subject");
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_UNKNOWN);
         policy.report(subject);
         policy.claim(null);
-        assertEquals("Approved claim", 1, reporter.claims.size());
         assertApproval(false);
     }
 }