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 13:23:53 UTC
svn commit: r777475 - in /incubator/rat/main/trunk/apache-rat-core/src:
main/java/org/apache/rat/analysis/generation/
main/java/org/apache/rat/analysis/license/ main/java/org/apache/rat/api/
main/java/org/apache/rat/report/analyser/ main/java/org/apach...
Author: rdonkin
Date: Fri May 22 11:23:53 2009
New Revision: 777475
URL: http://svn.apache.org/viewvc?rev=777475&view=rev
Log:
RAT-53 Store sample header in MetaData. https://issues.apache.org/jira/browse/RAT-53
Modified:
incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java
incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequired.java
incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/license/BaseLicense.java
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/report/analyser/HeaderCheckWorker.java
incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseFamilyClaim.java
incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseHeaderClaim.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/test/java/org/apache/rat/policy/DefaultPolicyTest.java
Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java?rev=777475&r1=777474&r2=777475&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequired.java Fri May 22 11:23:53 2009
@@ -80,8 +80,7 @@
private void reportOnLicense(IDocument subject, IClaimReporter reporter) throws RatHeaderAnalysisException {
try {
- reporter.claim(new LicenseHeaderClaim(subject, LicenseFamilyCode.GENERATED,
- "Generated files do not required license headers"));
+ reporter.claim(new LicenseHeaderClaim(subject, LicenseFamilyCode.GENERATED));
} catch (RatReportFailedException e) {
throw new RatHeaderAnalysisException("Cannot write claims", e);
}
Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequired.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequired.java?rev=777475&r1=777474&r2=777475&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequired.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequired.java Fri May 22 11:23:53 2009
@@ -48,8 +48,7 @@
private void reportOnLicense(IDocument subject, IClaimReporter reporter) throws RatHeaderAnalysisException {
try {
- reporter.claim(new LicenseHeaderClaim(subject, LicenseFamilyCode.GENERATED,
- "JavaDocs are generated and so license header is optional"));
+ reporter.claim(new LicenseHeaderClaim(subject, LicenseFamilyCode.GENERATED));
} catch (RatReportFailedException e) {
throw new RatHeaderAnalysisException("Cannot write claims", e);
}
Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/license/BaseLicense.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/license/BaseLicense.java?rev=777475&r1=777474&r2=777475&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/license/BaseLicense.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/analysis/license/BaseLicense.java Fri May 22 11:23:53 2009
@@ -19,6 +19,7 @@
package org.apache.rat.analysis.license;
import org.apache.rat.analysis.RatHeaderAnalysisException;
+import org.apache.rat.api.MetaData;
import org.apache.rat.document.IDocument;
import org.apache.rat.report.RatReportFailedException;
import org.apache.rat.report.claim.IClaimReporter;
@@ -42,8 +43,9 @@
final LicenseFamilyName name = getName();
final LicenseFamilyCode code = getCode();
final String notes = getNotes();
+ subject.getMetaData().set(new MetaData.Datum(MetaData.RAT_URL_HEADER_SAMPLE, notes));
try {
- reporter.claim(new LicenseFamilyClaim(subject, name, code, notes));
+ reporter.claim(new LicenseFamilyClaim(subject, name, code));
} catch (RatReportFailedException e) {
// Cannot recover
throw new RatHeaderAnalysisException("Cannot report on license information", e);
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=777475&r1=777474&r2=777475&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 11:23:53 2009
@@ -40,7 +40,7 @@
public static final String RAT_DOCUMENT_CATEGORY_VALUE_NOTICE = "notice";
public static final String RAT_DOCUMENT_CATEGORY_VALUE_BINARY = "binary";
public static final String RAT_DOCUMENT_CATEGORY_VALUE_STANDARD = "standard";
- public static final String RAT_DOCUMENT_CATEGORY_URL = RAT_BASE_URL + "#FileCategory";
+ public static final String RAT_URL_DOCUMENT_CATEGORY = RAT_BASE_URL + "#FileCategory";
// License Family Categories
public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_GEN = "GEN ";
@@ -51,7 +51,7 @@
public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_W3C = "W3C ";
public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_DOJO = "DOJO ";
public static final String RAT_LICENSE_FAMILY_CATEGORY_VALUE_TMF = "TMF ";
- public static final String RAT_LICENSE_FAMILY_CATEGORY_URL= RAT_BASE_URL + "LicenseFamilyCategory";
+ public static final String RAT_URL_LICENSE_FAMILY_CATEGORY= RAT_BASE_URL + "LicenseFamilyCategory";
// License Family Standard Names
public static final String RAT_LICENSE_FAMILY_NAME_VALUE_W3C_SOFTWARE_COPYRIGHT = "W3C Software Copyright";
@@ -61,7 +61,10 @@
public static final String RAT_LICENSE_FAMILY_NAME_VALUE_APACHE_LICENSE_VERSION_2_0 = "Apache License Version 2.0";
public static final String RAT_LICENSE_FAMILY_NAME_VALUE_ACADEMIC_FREE_LICENSE_VERSION_2_1 = "Academic Free License, Version 2.1";
public static final String RAT_LICENSE_FAMILY_NAME_VALUE_UNKNOWN = "?????";
- public static final String RAT_LICENSE_FAMILY_NAME_URL= RAT_BASE_URL + "LicenseFamilyName";
+ public static final String RAT_URL_LICENSE_FAMILY_NAME= RAT_BASE_URL + "LicenseFamilyName";
+
+ // Header sample
+ public static final String RAT_URL_HEADER_SAMPLE = RAT_BASE_URL + "HeaderSample";
private ContentType contentType;
/**
@@ -108,7 +111,7 @@
* Adds a new datum.
* Existing data with the same name are not replaced.
* @param datum
- * @see #put(org.apache.rat.api.MetaData.Datum)
+ * @see #set(org.apache.rat.api.MetaData.Datum)
*/
public void add(final Datum datum) {
data.add(datum);
@@ -120,8 +123,27 @@
* @param datum not null
* @see #add(org.apache.rat.api.MetaData.Datum)
*/
- public void put(final Datum datum) {
+ public void set(final Datum datum) {
clear(datum.getName());
+ add(datum);
+ }
+
+ /**
+ * Gets the first datum matching the given name.
+ * @param name not null
+ * @return the matching datum first added when there is any matching data,
+ * null otherwise
+ */
+ public Datum get(final String name) {
+ Datum result = null;
+ for (final Iterator/*<Datum>*/ it=data.iterator();it.hasNext();) {
+ final Datum next = (Datum) it.next();
+ if (name.equals(next.getName())) {
+ result = next;
+ break;
+ }
+ }
+ return result;
}
/**
Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/HeaderCheckWorker.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/HeaderCheckWorker.java?rev=777475&r1=777474&r2=777475&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/HeaderCheckWorker.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/HeaderCheckWorker.java Fri May 22 11:23:53 2009
@@ -24,6 +24,7 @@
import org.apache.rat.analysis.IHeaderMatcher;
import org.apache.rat.analysis.RatHeaderAnalysisException;
+import org.apache.rat.api.MetaData;
import org.apache.rat.document.IDocument;
import org.apache.rat.report.RatReportFailedException;
import org.apache.rat.report.claim.IClaimReporter;
@@ -43,7 +44,7 @@
private final BufferedReader reader;
private final IHeaderMatcher matcher;
private final IClaimReporter reporter;
- private final IDocument name;
+ private final IDocument subject;
private boolean match = false;
@@ -77,7 +78,7 @@
this.numberOfRetainedHeaderLines = numberOfRetainedHeaderLine;
this.matcher = matcher;
this.reporter = reporter;
- this.name = name;
+ this.subject = name;
}
public boolean isFinished() {
@@ -92,12 +93,13 @@
while(readLine(headers));
if (!match) {
final String notes = headers.toString();
- reporter.claim(new LicenseFamilyClaim(name, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN, notes));
+ subject.getMetaData().set(new MetaData.Datum(MetaData.RAT_URL_HEADER_SAMPLE, notes));
+ reporter.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN));
}
} catch (IOException e) {
- throw new RatHeaderAnalysisException("Cannot read header for " + name, e);
+ throw new RatHeaderAnalysisException("Cannot read header for " + subject, e);
} catch (RatReportFailedException e) {
- throw new RatHeaderAnalysisException("Cannot write claim for " + name, e);
+ throw new RatHeaderAnalysisException("Cannot write claim for " + subject, e);
}
try {
reader.close();
@@ -117,7 +119,7 @@
headers.append(line);
headers.append('\n');
}
- match = matcher.match(name, line, reporter);
+ match = matcher.match(subject, line, reporter);
result = !match;
}
return result;
Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseFamilyClaim.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseFamilyClaim.java?rev=777475&r1=777474&r2=777475&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseFamilyClaim.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseFamilyClaim.java Fri May 22 11:23:53 2009
@@ -17,8 +17,8 @@
* the given license family name.
*/
public LicenseFamilyClaim(IDocument pSubject, LicenseFamilyName pName,
- LicenseFamilyCode pCode, String pHeaderSample) {
- super(pSubject, pCode, pHeaderSample);
+ LicenseFamilyCode pCode) {
+ super(pSubject, pCode);
licenseFamilyName = pName;
}
Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseHeaderClaim.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseHeaderClaim.java?rev=777475&r1=777474&r2=777475&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseHeaderClaim.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/LicenseHeaderClaim.java Fri May 22 11:23:53 2009
@@ -12,16 +12,14 @@
*/
public class LicenseHeaderClaim extends AbstractClaim {
private final LicenseFamilyCode licenseFamilyCode;
- private final String headerSample;
/**
* Creates a new instance with the given subject, license
* family code, and header sample.
*/
- public LicenseHeaderClaim(IDocument pSubject, LicenseFamilyCode pCode, String pHeaderSample) {
+ public LicenseHeaderClaim(IDocument pSubject, LicenseFamilyCode pCode) {
super(pSubject);
licenseFamilyCode = pCode;
- headerSample = pHeaderSample;
}
/**
@@ -30,11 +28,4 @@
public LicenseFamilyCode getLicenseFamilyCode() {
return licenseFamilyCode;
}
-
- /**
- * Returns the header sample.
- */
- public String getHeaderSample() {
- return headerSample;
- }
}
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=777475&r1=777474&r2=777475&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 11:23:53 2009
@@ -20,6 +20,7 @@
import java.io.IOException;
+import org.apache.rat.api.MetaData;
import org.apache.rat.document.IDocument;
import org.apache.rat.report.RatReportFailedException;
import org.apache.rat.report.claim.IClaim;
@@ -44,6 +45,7 @@
private final IXmlWriter writer;
private IDocument lastSubject;
private IDocument subject;
+ private boolean writtenDocumentClaims = false;
public SimpleXmlClaimReporter(final IXmlWriter writer) {
this.writer = writer;
@@ -67,7 +69,6 @@
protected void handleClaim(LicenseHeaderClaim pClaim)
throws IOException, RatReportFailedException {
- writeClaim(HEADER_SAMPLE_PREDICATE, pClaim.getHeaderSample(), true);
writeClaim(HEADER_TYPE_PREDICATE, pClaim.getLicenseFamilyCode().getName(), false);
}
@@ -112,6 +113,10 @@
public void claim(IClaim pClaim) throws RatReportFailedException {
try {
+ if(!writtenDocumentClaims) {
+ writeDocumentClaims(subject);
+ writtenDocumentClaims = true;
+ }
handleClaim(pClaim);
} catch (IOException e) {
throw new RatReportFailedException("XML writing failure: " + e.getMessage()
@@ -126,8 +131,12 @@
if (!(subject.equals(lastSubject))) {
if (lastSubject != null) {
writer.closeElement();
+ if(!writtenDocumentClaims) {
+ writeDocumentClaims(lastSubject);
+ }
}
writer.openElement("resource").attribute(NAME, subject.getName());
+ writtenDocumentClaims = false;
}
lastSubject = subject;
} catch (IOException e) {
@@ -136,4 +145,15 @@
}
}
+ private void writeDocumentClaims(final IDocument subject) throws IOException, RatReportFailedException {
+ final MetaData metaData = subject.getMetaData();
+ final MetaData.Datum sampleDatum = metaData.get(MetaData.RAT_URL_HEADER_SAMPLE);
+ if (sampleDatum != null) {
+ final String sample = sampleDatum.getValue();
+ if (sample != null) {
+ writeClaim(HEADER_SAMPLE_PREDICATE, sample, true);
+ }
+ }
+ }
+
}
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=777475&r1=777474&r2=777475&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 11:23:53 2009
@@ -56,7 +56,7 @@
public void testASLFamily() throws Exception {
final IDocument subject = new MockLocation("subject");
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.APACHE_SOFTWARE_LICENSE_NAME, LicenseFamilyCode.ASL_CODE, ""));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.APACHE_SOFTWARE_LICENSE_NAME, LicenseFamilyCode.ASL_CODE));
assertEquals("Approved claim", 1, reporter.claims.size());
assertApproval(true);
}
@@ -77,28 +77,28 @@
public void testOASISFamily() throws Exception {
final IDocument subject = new MockLocation("subject");
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.OASIS_OPEN_LICENSE_NAME, LicenseFamilyCode.OASIS_CODE, ""));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.OASIS_OPEN_LICENSE_NAME, LicenseFamilyCode.OASIS_CODE));
assertEquals("Approved claim", 1, reporter.claims.size());
assertApproval(true);
}
public void testW3CFamily() throws Exception {
final IDocument subject = new MockLocation("subject");
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_SOFTWARE_COPYRIGHT_NAME, LicenseFamilyCode.W3C_CODE, ""));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_SOFTWARE_COPYRIGHT_NAME, LicenseFamilyCode.W3C_CODE));
assertEquals("Approved claim", 1, reporter.claims.size());
assertApproval(true);
}
public void testW3CDocFamily() throws Exception {
final IDocument subject = new MockLocation("subject");
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_DOCUMENT_COPYRIGHT_NAME, LicenseFamilyCode.W3CD_CODE, ""));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_DOCUMENT_COPYRIGHT_NAME, LicenseFamilyCode.W3CD_CODE));
assertEquals("Approved claim", 1, reporter.claims.size());
assertApproval(true);
}
public void testUnknownFamily() throws Exception {
final IDocument subject = new MockLocation("subject");
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN, ""));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN));
assertEquals("Approved claim", 1, reporter.claims.size());
assertApproval(false);
}
@@ -108,16 +108,16 @@
LicenseFamilyName[] custom = {new LicenseFamilyName("Example")};
policy = new DefaultPolicy(reporter, custom);
final IDocument subject = new MockLocation("subject");
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN, ""));
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_DOCUMENT_COPYRIGHT_NAME, LicenseFamilyCode.W3CD_CODE, ""));
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_SOFTWARE_COPYRIGHT_NAME, LicenseFamilyCode.W3C_CODE, ""));
- policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.APACHE_SOFTWARE_LICENSE_NAME, LicenseFamilyCode.ASL_CODE, ""));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.UNKNOWN_LICENSE_FAMILY, LicenseFamilyCode.UNKNOWN));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_DOCUMENT_COPYRIGHT_NAME, LicenseFamilyCode.W3CD_CODE));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.W3C_SOFTWARE_COPYRIGHT_NAME, LicenseFamilyCode.W3C_CODE));
+ policy.claim(new LicenseFamilyClaim(subject, LicenseFamilyName.APACHE_SOFTWARE_LICENSE_NAME, LicenseFamilyCode.ASL_CODE));
assertEquals("Four unapproved claims", 4, reporter.claims.size());
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"), ""));
+ policy.claim(new LicenseFamilyClaim(subject, custom[0], new LicenseFamilyCode("EXAMP")));
assertEquals("Approved claim", 5, reporter.claims.size());
assertApproval(true, (IClaim) reporter.claims.get(4));
}