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 21:44:19 UTC

svn commit: r777673 - in /incubator/rat/main/trunk: apache-rat-core/src/main/java/org/apache/rat/api/ apache-rat-core/src/main/java/org/apache/rat/policy/ apache-rat-core/src/main/java/org/apache/rat/report/analyser/ apache-rat-core/src/main/java/org/a...

Author: rdonkin
Date: Fri May 22 19:44:18 2009
New Revision: 777673

URL: http://svn.apache.org/viewvc?rev=777673&view=rev
Log:
RAT-53 Document categorisation (was file type) 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/FileType.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/FileTypeClaim.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/analyser/DefaultAnalyserFactory.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/ClaimStatistic.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/XmlReport.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
    incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java
    incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java
    incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java
    incubator/rat/main/trunk/apache-rat-plugin/src/main/java/org/apache/rat/mp/FilesReportable.java
    incubator/rat/main/trunk/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/ResourceCollectionContainer.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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -34,13 +34,19 @@
     public static final String RAT_BASE_URL = "http://org/apache/rat/meta-data";
     
     // Document Categories
+    public static final String RAT_URL_DOCUMENT_CATEGORY = RAT_BASE_URL + "#FileCategory";
     public static final String RAT_DOCUMENT_CATEGORY_VALUE_GENERATED = "GEN  ";
     public static final String RAT_DOCUMENT_CATEGORY_VALUE_UNKNOWN = "?????";
     public static final String RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE = "archive";
     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_URL_DOCUMENT_CATEGORY = RAT_BASE_URL + "#FileCategory";
+    public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_GENERATED = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_GENERATED);
+    public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_UNKNOWN = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_UNKNOWN);
+    public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE);
+    public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_NOTICE = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_NOTICE);
+    public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_BINARY = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_BINARY);
+    public static final Datum RAT_DOCUMENT_CATEGORY_DATUM_STANDARD = new Datum(RAT_URL_DOCUMENT_CATEGORY, RAT_DOCUMENT_CATEGORY_VALUE_STANDARD);
     
     // Header Categories
     public static final String RAT_URL_HEADER_CATEGORY = RAT_BASE_URL + "#HeaderCategory";
@@ -213,6 +219,14 @@
     }
     
     /**
+     * Clears all data.
+     */
+    public void clear() {
+        data.clear();
+        this.contentType = null;
+    }
+    
+    /**
      * A datum.
      */
     public static final class Datum {

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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -23,12 +23,11 @@
 import org.apache.rat.api.MetaData;
 import org.apache.rat.api.MetaData.Datum;
 import org.apache.rat.document.IDocument;
+import org.apache.rat.document.IDocumentAnalyser;
+import org.apache.rat.document.RatDocumentAnalysisException;
 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;
 
-public class DefaultPolicy implements IClaimReporter {
+public class DefaultPolicy implements IDocumentAnalyser {
     private static final String[] APPROVED_LICENSES = {
         MetaData.RAT_LICENSE_FAMILY_NAME_VALUE_APACHE_LICENSE_VERSION_2_0,
         MetaData.RAT_LICENSE_FAMILY_NAME_VALUE_OASIS_OPEN_LICENSE,
@@ -50,8 +49,6 @@
     }
     ;
     private final String[] approvedLicenseNames;
-    private IDocument subject;
-    private boolean testedDocument = false;
     
     public DefaultPolicy() {
         this(APPROVED_LICENSES);
@@ -72,24 +69,7 @@
         Arrays.sort(this.approvedLicenseNames);
     }
 
-    public void claim(IClaim pClaim)
-            throws RatReportFailedException {
-        testDocumentWhenNecessary(subject);
-    }
-
-    private void testDocumentWhenNecessary(final IDocument subject) throws RatReportFailedException {
-        if (!testedDocument && subject != null) {
-            final MetaData.Datum nameDatum = subject.getMetaData().get(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
-            if (nameDatum != null) {
-                final String name = nameDatum.getValue();
-                final boolean isApproved = Arrays.binarySearch(approvedLicenseNames, name) >= 0;
-                reportLicenseApprovalClaim(subject, isApproved);
-            }
-            testedDocument = true;
-        }
-    }
-
-    public void reportLicenseApprovalClaim(final IDocument subject, final boolean isAcceptable) throws RatReportFailedException {
+    public void reportLicenseApprovalClaim(final IDocument subject, final boolean isAcceptable) {
         final Datum datum;
         if (isAcceptable) {
             datum = MetaData.RAT_APPROVED_LICENSE_DATIM_TRUE;
@@ -99,10 +79,13 @@
         subject.getMetaData().set(datum);
     }
     
-    
-    public void report(final IDocument subject) throws RatReportFailedException {
-        testDocumentWhenNecessary(this.subject);
-        this.subject = subject;
-        testedDocument = false;
+    public void analyse(final IDocument subject) throws RatDocumentAnalysisException {
+        if (subject != null) {
+            final String name = subject.getMetaData().value(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
+            if (name != null) {
+                final boolean isApproved = Arrays.binarySearch(approvedLicenseNames, name) >= 0;
+                reportLicenseApprovalClaim(subject, isApproved);
+            }
+        }
     }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/analyser/DefaultAnalyserFactory.java Fri May 22 19:44:18 2009
@@ -19,16 +19,14 @@
 package org.apache.rat.report.analyser;
 
 import org.apache.rat.analysis.IHeaderMatcher;
+import org.apache.rat.api.MetaData;
 import org.apache.rat.document.IDocument;
 import org.apache.rat.document.IDocumentAnalyser;
 import org.apache.rat.document.RatDocumentAnalysisException;
 import org.apache.rat.document.impl.guesser.ArchiveGuesser;
 import org.apache.rat.document.impl.guesser.BinaryGuesser;
 import org.apache.rat.document.impl.guesser.NoteGuesser;
-import org.apache.rat.report.RatReportFailedException;
-import org.apache.rat.report.claim.FileType;
 import org.apache.rat.report.claim.IClaimReporter;
-import org.apache.rat.report.claim.impl.FileTypeClaim;
 
 /**
  * Creates default analysers.
@@ -53,25 +51,20 @@
             this.matcher = matcher;
         }
 
-        public void analyse(IDocument document) throws RatDocumentAnalysisException {
-            try {
-                reporter.report(document);
-                final FileType type;
-                if (NoteGuesser.isNote(document)) {
-                    type = FileType.NOTICE;
-                } else if (ArchiveGuesser.isArchive(document)) {
-                    type = FileType.ARCHIVE;
-                } else if (BinaryGuesser.isBinary(document)) {
-                    type = FileType.BINARY;
-                } else {
-                    type = FileType.STANDARD;
-                    final DocumentHeaderAnalyser headerAnalyser = new DocumentHeaderAnalyser(matcher, reporter);
-                    headerAnalyser.analyse(document);
-                }
-                reporter.claim(new FileTypeClaim(document, type));
-            } catch (RatReportFailedException e) {
-                throw new RatReportAnalysisResultException(e);
+        public void analyse(IDocument subject) throws RatDocumentAnalysisException {
+            final MetaData.Datum documentCategory;
+            if (NoteGuesser.isNote(subject)) {
+                documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_NOTICE;
+            } else if (ArchiveGuesser.isArchive(subject)) {
+                documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE;
+            } else if (BinaryGuesser.isBinary(subject)) {
+                documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_BINARY;
+            } else {
+                documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_STANDARD;
+                final DocumentHeaderAnalyser headerAnalyser = new DocumentHeaderAnalyser(matcher, reporter);
+                headerAnalyser.analyse(subject);
             }
+            subject.getMetaData().set(documentCategory);
         }        
     }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/ClaimStatistic.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/ClaimStatistic.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/ClaimStatistic.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/claim/ClaimStatistic.java Fri May 22 19:44:18 2009
@@ -10,7 +10,7 @@
  * the report.
  */
 public class ClaimStatistic {
-    private Map fileTypeMap, licenseFamilyCodeMap, licenseFamilyNameMap;
+    private Map documentCategoryMap, licenseFamilyCodeMap, licenseFamilyNameMap;
     private int numApproved, numUnApproved, numGenerated, numUnknown, numCustom;
 
     /**
@@ -95,22 +95,22 @@
 
     /**
      * Sets a map with the file types. The map keys
-     * are instances of {@link FileType} and the map values
+     * are file type names and the map values
      * are integers with the number of resources matching
      * the file type.
      */
-    public void setFileTypeMap(Map pFileTypeMap) {
-        fileTypeMap = pFileTypeMap;
+    public void setDocumentCategoryMap(Map pDocumentCategoryMap) {
+        documentCategoryMap = pDocumentCategoryMap;
     }
 
     /**
      * Returns a map with the file types. The map keys
-     * are instances of {@link FileType} and the map values
+     * are file type names and the map values
      * are integers with the number of resources matching
      * the file type.
      */
-    public Map getFileTypeMap() {
-        return fileTypeMap;
+    public Map getDocumentCategoryMap() {
+        return documentCategoryMap;
     }
 
     /**

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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -14,11 +14,8 @@
  * this class.
  */
 public abstract class AbstractClaimReporter implements IClaimReporter {
-
-    private IDocument subject;
-    private boolean writtenDocumentClaims = false;
     
-    protected void handleClaim(FileTypeClaim pClaim) {
+    protected void handleDocumentCategoryClaim(String documentCategoryName) {
         // Does nothing
     }
 
@@ -39,10 +36,7 @@
     }
 
     protected void handleClaim(IClaim pClaim) {
-        writeDocumentClaimsWhenNecessary(subject);
-        if (pClaim instanceof FileTypeClaim) {
-            handleClaim((FileTypeClaim) pClaim);
-        } else if (pClaim instanceof CustomClaim) {
+        if (pClaim instanceof CustomClaim) {
             handleClaim((CustomClaim) pClaim);
         } else {
             throw new IllegalStateException("Unsupported type of claim: " + pClaim.getClass().getName());
@@ -57,6 +51,11 @@
         final MetaData metaData = subject.getMetaData();
         writeHeaderCategory(metaData);
         writeLicenseFamilyName(metaData);
+        writeDocumentCategory(metaData);
+        writeApprovedLicenseClaim(metaData);
+    }
+
+    private void writeApprovedLicenseClaim(final MetaData metaData) {
         final MetaData.Datum approvedLicenseDatum = metaData.get(MetaData.RAT_URL_APPROVED_LICENSE);
         if (approvedLicenseDatum != null) {
             final String approvedLicense = approvedLicenseDatum.getValue();
@@ -79,23 +78,24 @@
     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();
+            final String licenseFamilyName = licenseFamilyNameDatum.getValue();
             if (licenseFamilyName != null) {
                 handleLicenseFamilyNameClaim(licenseFamilyName);
             }
         }
     }
     
-    public void report(IDocument subject) throws RatReportFailedException {
-        writeDocumentClaimsWhenNecessary(subject);
-        this.subject = subject;
-        writtenDocumentClaims = false;
-    }
-
-    private void writeDocumentClaimsWhenNecessary(IDocument subject) {
-        if (!writtenDocumentClaims && subject != null) {
-            writeDocumentClaim(subject);
-            writtenDocumentClaims = true;
+    private void writeDocumentCategory(final MetaData metaData) {
+        final MetaData.Datum documentCategoryDatum = metaData.get(MetaData.RAT_URL_DOCUMENT_CATEGORY);
+        if (documentCategoryDatum != null) {
+            final String documentCategory = documentCategoryDatum.getValue();
+            if (documentCategory != null) {
+                handleDocumentCategoryClaim(documentCategory);
+            }
         }
     }
+    
+    public void report(IDocument subject) throws RatReportFailedException {
+        writeDocumentClaim(subject);
+    }
 }

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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -42,8 +42,8 @@
         pMap.put(pKey, new Integer(newNum));
     }
     
-    protected void handleClaim(FileTypeClaim pClaim) {
-        incMapValue(numsByFileType, pClaim.getType());
+    protected void handleDocumentCategoryClaim(String documentCategoryName) {
+        incMapValue(numsByFileType, documentCategoryName);
     }
 
     protected void handleApprovedLicenseClaim(String licenseApproved) {
@@ -70,7 +70,7 @@
     }
 
     public void fillClaimStatistic(ClaimStatistic pStatistic) {
-        pStatistic.setFileTypeMap(numsByFileType);
+        pStatistic.setDocumentCategoryMap(numsByFileType);
         pStatistic.setLicenseFileCodeMap(numsByLicenseFamilyCode);
         pStatistic.setLicenseFileNameMap(numsByLicenseFamilyName);
         pStatistic.setNumApproved(numApproved);

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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -25,7 +25,6 @@
 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.FileTypeClaim;
 import org.apache.rat.report.xml.writer.IXmlWriter;
 
 public class SimpleXmlClaimReporter implements IClaimReporter {
@@ -40,22 +39,14 @@
 
     private static final String NAME = "name";
     private final IXmlWriter writer;
-    private IDocument lastSubject;
-    private IDocument subject;
-    private boolean writtenDocumentClaims = false;
-    
+    private boolean firstTime = true;
+
     public SimpleXmlClaimReporter(final IXmlWriter writer) {
         this.writer = writer;
     }
 
-    protected void handleClaim(FileTypeClaim pClaim)
-            throws IOException, RatReportFailedException {
-        writeClaim(FILE_TYPE_PREDICATE, pClaim.getType().getName(), false);
-    }
-
-
     protected void handleClaim(CustomClaim pClaim)
-            throws IOException, RatReportFailedException {
+    throws IOException, RatReportFailedException {
         writeClaim(pClaim.getPredicate(), pClaim.getObject(), pClaim.isLiteral());
     }
 
@@ -69,18 +60,16 @@
      * @throws RatReportFailedException Another error occurred while writing the claim.
      */
     protected void writeClaim(String pPredicate, String pObject, boolean pLiteral)
-            throws IOException, RatReportFailedException {
+    throws IOException, RatReportFailedException {
         if (pLiteral) {
             writer.openElement(pPredicate).content(pObject).closeElement();
         } else {
             writer.openElement(pPredicate).attribute(NAME, pObject).closeElement();
         }
     }
-    
+
     protected void handleClaim(IClaim pClaim) throws IOException, RatReportFailedException {
-        if (pClaim instanceof FileTypeClaim) {
-            handleClaim((FileTypeClaim) pClaim);
-        } else if (pClaim instanceof CustomClaim) {
+        if (pClaim instanceof CustomClaim) {
             handleClaim((CustomClaim) pClaim);
         } else {
             throw new IllegalStateException("Invalid claim type: " + pClaim.getClass().getName());
@@ -89,32 +78,23 @@
 
     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()
-                    + " subject: " + subject + " claim type: "
+                    + " claim type: "
                     + pClaim.getClass().getName(), e);
         }
     }
 
     public void report(final IDocument subject) throws RatReportFailedException {
-        this.subject = subject;
         try {
-            if (!(subject.equals(lastSubject))) {
-                if (lastSubject != null) {
-                    writer.closeElement();
-                    if(!writtenDocumentClaims) {
-                        writeDocumentClaims(lastSubject);
-                    }
-                }
-                writer.openElement("resource").attribute(NAME, subject.getName());
+            if (firstTime) {
+                firstTime = false;
+            } else {
+                writer.closeElement();
             }
-            lastSubject = subject;
-            writtenDocumentClaims = false;
+            writer.openElement("resource").attribute(NAME, subject.getName());
+            writeDocumentClaims(subject);
         } catch (IOException e) {
             throw new RatReportFailedException("XML writing failure: " + e.getMessage()
                     + " subject: " + subject, e);
@@ -128,53 +108,48 @@
         writeHeaderCategory(metaData);
         writeLicenseFamilyName(metaData);
         writeApprovedLicense(metaData);
-        
+        writeDocumentCategory(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);
-            }
+        final String approvedLicense = metaData.value(MetaData.RAT_URL_APPROVED_LICENSE);
+        if (approvedLicense != null) {
+            writeClaim(LICENSE_APPROVAL_PREDICATE, approvedLicense, false);
         }
     }
 
     private void writeLicenseFamilyName(final MetaData metaData) throws IOException, RatReportFailedException {
-        final MetaData.Datum licenseFamilyNameDatum = metaData.get(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
-        if (licenseFamilyNameDatum != null) {
-            final String licenseFamilyName = licenseFamilyNameDatum.getValue();
-            if (licenseFamilyName != null) {
-                writeClaim(LICENSE_FAMILY_PREDICATE, licenseFamilyName, false);
-            }
+        final String licenseFamilyName = metaData.value(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
+        if (licenseFamilyName != null) {
+            writeClaim(LICENSE_FAMILY_PREDICATE, licenseFamilyName, false);
         }
     }
 
     private void writeHeaderCategory(final MetaData metaData) throws IOException, RatReportFailedException {
-        final MetaData.Datum headerCategoryDatum = metaData.get(MetaData.RAT_URL_HEADER_CATEGORY);
-        if (headerCategoryDatum != null) {
-            final String headerCategory = headerCategoryDatum.getValue();
+        final String headerCategory = metaData.value(MetaData.RAT_URL_HEADER_CATEGORY);
+        if (headerCategory != null) {
             writeClaim(HEADER_TYPE_PREDICATE, headerCategory, false);
         }
     }
 
     private void writeLicenseFamilyCategory(final MetaData metaData) throws IOException, RatReportFailedException {
-        final MetaData.Datum licenseFamilyCategoryDatum = metaData.get(MetaData.RAT_URL_LICENSE_FAMILY_CATEGORY);
-        if (licenseFamilyCategoryDatum != null) {
-            final String licenseFamilyCategory = licenseFamilyCategoryDatum.getValue();
+        final String licenseFamilyCategory = metaData.value(MetaData.RAT_URL_LICENSE_FAMILY_CATEGORY);
+        if (licenseFamilyCategory != null) {
             writeClaim(LICENSE_FAMILY_PREDICATE, licenseFamilyCategory, false);
         }
     }
 
     private void writeHeaderSample(final MetaData metaData) throws IOException, RatReportFailedException {
-        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);
-            }
+        final String sample = metaData.value(MetaData.RAT_URL_HEADER_SAMPLE);
+        if (sample != null) {
+            writeClaim(HEADER_SAMPLE_PREDICATE, sample, true);
         }
     }
 
+    private void writeDocumentCategory(final MetaData metaData) throws IOException, RatReportFailedException {
+        final String documentCategory = metaData.value(MetaData.RAT_URL_DOCUMENT_CATEGORY);
+        if (documentCategory != null) {
+            writeClaim(FILE_TYPE_PREDICATE, documentCategory, false);
+        }
+    }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReport.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReport.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReport.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/report/xml/XmlReport.java Fri May 22 19:44:18 2009
@@ -25,16 +25,19 @@
 import org.apache.rat.document.RatDocumentAnalysisException;
 import org.apache.rat.report.RatReport;
 import org.apache.rat.report.RatReportFailedException;
+import org.apache.rat.report.claim.IClaimReporter;
 import org.apache.rat.report.xml.writer.IXmlWriter;
 
 class XmlReport implements RatReport {
    
     private final IDocumentAnalyser analyser;
     private final IXmlWriter writer;
+    private final IClaimReporter reporter;
     
-    public XmlReport(final IXmlWriter writer, IDocumentAnalyser analyser) {
+    public XmlReport(final IXmlWriter writer, IDocumentAnalyser analyser, final IClaimReporter reporter) {
         this.analyser = analyser;
         this.writer = writer;
+        this.reporter = reporter;
     }
 
     public void startReport() throws RatReportFailedException {
@@ -59,9 +62,10 @@
      * 
      * @param document the document to report on.
      */
-    public void report(IDocument document) throws RatReportFailedException {
+    public void report(IDocument subject) throws RatReportFailedException {
         try {
-            analyser.analyse(document);
+            analyser.analyse(subject);
+            reporter.report(subject);
         } catch (RatDocumentAnalysisException e) {
             throw new RatReportFailedException("Analysis failed", e);
         }

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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -21,6 +21,7 @@
 import org.apache.rat.analysis.IHeaderMatcher;
 import org.apache.rat.document.IDocument;
 import org.apache.rat.document.IDocumentAnalyser;
+import org.apache.rat.document.impl.util.DocumentAnalyserMultiplexer;
 import org.apache.rat.license.ILicenseFamily;
 import org.apache.rat.policy.DefaultPolicy;
 import org.apache.rat.report.RatReport;
@@ -30,7 +31,6 @@
 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;
 
 /**
@@ -55,13 +55,13 @@
             reporter = new ClaimAggregator(new SimpleXmlClaimReporter(writer));
         }
         final DefaultPolicy policy = new DefaultPolicy(approvedLicenses);
-        final IClaimReporter[] reporters = {policy, reporter};
-        final ClaimReporterMultiplexer multiplexer = new ClaimReporterMultiplexer(reporters);
         
         final IDocumentAnalyser analyser = 
-            DefaultAnalyserFactory.createDefaultAnalyser(multiplexer, matcher);
-
-        final RatReport result = new XmlReport(writer, analyser);
+            DefaultAnalyserFactory.createDefaultAnalyser(reporter, matcher);
+        final IDocumentAnalyser[] analysers = {analyser, policy};
+        DocumentAnalyserMultiplexer analysisMultiplexer = new DocumentAnalyserMultiplexer(analysers);
+        
+        final RatReport result = new XmlReport(writer, analysisMultiplexer, reporter);
         if (pStatistic == null) {
             return result;
         }

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=777673&r1=777672&r2=777673&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 19:44:18 2009
@@ -23,7 +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.impl.xml.CustomClaim;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
 
 
@@ -44,17 +43,9 @@
         super.tearDown();
     }
 
-    public void testOtherPredicate() throws Exception {
-        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 {
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_APACHE_LICENSE_VERSION_2_0);
-        policy.report(subject);
-        policy.claim(null);
+        policy.analyse(subject);
         assertApproval(true);
     }
 
@@ -64,29 +55,25 @@
 
     public void testOASISFamily() throws Exception {
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_OASIS_OPEN_LICENSE);
-        policy.report(subject);
-        policy.claim(null);
+        policy.analyse(subject);
         assertApproval(true);
     }
     
     public void testW3CFamily() throws Exception {
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_W3C_SOFTWARE_COPYRIGHT);
-        policy.report(subject);
-        policy.claim(null);
+        policy.analyse(subject);
         assertApproval(true);
     }
     
     public void testW3CDocFamily() throws Exception {
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_W3C_DOCUMENT_COPYRIGHT);
-        policy.report(subject);
-        policy.claim(null);
+        policy.analyse(subject);
         assertApproval(true);
     }
     
     public void testUnknownFamily() throws Exception {
         subject.getMetaData().set(MetaData.RAT_LICENSE_FAMILY_NAME_DATUM_UNKNOWN);
-        policy.report(subject);
-        policy.claim(null);
+        policy.analyse(subject);
         assertApproval(false);
     }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/analyser/AnalyserFactoryTest.java Fri May 22 19:44:18 2009
@@ -63,6 +63,7 @@
         MonolithicFileDocument document = new MonolithicFileDocument(new File("src/test/resources/elements/Text.txt"));
         IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(reporter, matcherStub);
         analyser.analyse(document);
+        reporter.report(document);
         assertEquals("Open standard element", "<resource name='src/test/resources/elements/Text.txt'><header-sample>/*\n" +
                 " * Licensed to the Apache Software Foundation (ASF) under one\n" +
                 " * or more contributor license agreements.  See the NOTICE file\n" +
@@ -90,6 +91,7 @@
         MonolithicFileDocument document = new MonolithicFileDocument(new File("src/test/elements/LICENSE"));
         IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(reporter, matcherStub);
         analyser.analyse(document);
+        reporter.report(document);
         assertEquals("Open note element", "<resource name='src/test/elements/LICENSE'><type name='notice'/>", out.toString());
     }
 
@@ -97,6 +99,7 @@
         MonolithicFileDocument document = new MonolithicFileDocument(new File("src/test/elements/Image.png"));
         IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(reporter, matcherStub);
         analyser.analyse(document);
+        reporter.report(document);
         assertEquals("Open binary element", "<resource name='src/test/elements/Image.png'><type name='binary'/>", out.toString());
     }
 
@@ -104,6 +107,7 @@
         MonolithicFileDocument document = new MonolithicFileDocument(new File("src/test/elements/Dummy.jar"));
         IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(reporter, matcherStub);
         analyser.analyse(document);
+        reporter.report(document);
         assertEquals("Open archive element", "<resource name='src/test/elements/Dummy.jar'><type name='archive'/>", out.toString());
     }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java Fri May 22 19:44:18 2009
@@ -26,9 +26,9 @@
 
 import org.apache.rat.DirectoryWalker;
 import org.apache.rat.analysis.MockLicenseMatcher;
+import org.apache.rat.api.MetaData;
 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;
@@ -82,9 +82,9 @@
                 "<resource name='" + elementsPath + "/dummy.jar'><type name='archive'/></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));
+        assertEquals("Binary files", new Integer(1), statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_BINARY));
+        assertEquals("Notice files", new Integer(2), statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_NOTICE));
+        assertEquals("Standard files", new Integer(3), statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_STANDARD));
+        assertEquals("Archives", new Integer(1), statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE));
     }
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java Fri May 22 19:44:18 2009
@@ -59,7 +59,7 @@
             }            
         };
         IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(reporter, matcher);
-        report = new XmlReport(writer, analyser);
+        report = new XmlReport(writer, analyser, reporter);
     }
 
     protected void tearDown() throws Exception {

Modified: incubator/rat/main/trunk/apache-rat-plugin/src/main/java/org/apache/rat/mp/FilesReportable.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-plugin/src/main/java/org/apache/rat/mp/FilesReportable.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-plugin/src/main/java/org/apache/rat/mp/FilesReportable.java (original)
+++ incubator/rat/main/trunk/apache-rat-plugin/src/main/java/org/apache/rat/mp/FilesReportable.java Fri May 22 19:44:18 2009
@@ -65,6 +65,7 @@
         for ( int i = 0; i < files.length; i++ )
         {
             document.setFile( new File( basedir, files[i] ) );
+            document.getMetaData().clear();
             report.report( document );
         }
     }

Modified: incubator/rat/main/trunk/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/ResourceCollectionContainer.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/ResourceCollectionContainer.java?rev=777673&r1=777672&r2=777673&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/ResourceCollectionContainer.java (original)
+++ incubator/rat/main/trunk/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/ResourceCollectionContainer.java Fri May 22 19:44:18 2009
@@ -54,6 +54,7 @@
                 // do nothing
             } else {
                 document.setResource(r);
+                document.getMetaData().clear();
                 report.report(document);
             }
         }