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/18 23:55:20 UTC

svn commit: r776110 - in /incubator/rat/main/trunk: apache-rat-core/src/main/java/org/apache/rat/document/impl/ apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ apache-rat-plugin/src/main/java/org/apache/rat/mp/ apache-rat-tasks/src/main...

Author: rdonkin
Date: Mon May 18 21:55:20 2009
New Revision: 776110

URL: http://svn.apache.org/viewvc?rev=776110&view=rev
Log:
No need to convert zip files to an object model to work out whether they can be read

Modified:
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/FileDocument.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipDocumentFactory.java
    incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipFileDocument.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/document/impl/FileDocument.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/FileDocument.java?rev=776110&r1=776109&r2=776110&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/FileDocument.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/FileDocument.java Mon May 18 21:55:20 2009
@@ -42,12 +42,7 @@
     }
 
     public boolean isComposite() {
-        try {
-            ZipDocumentFactory.load(file);
-            return true;
-        } catch (IOException e) {
-            return false;
-        }
+        return ZipDocumentFactory.isZip(file);
     }
 
     public Reader reader() throws IOException {

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipDocumentFactory.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipDocumentFactory.java?rev=776110&r1=776109&r2=776110&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipDocumentFactory.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipDocumentFactory.java Mon May 18 21:55:20 2009
@@ -20,82 +20,30 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
 import java.util.zip.ZipFile;
 
-import org.apache.commons.collections.EnumerationUtils;
-
-import org.apache.rat.document.IDocumentCollection;
-
 public class ZipDocumentFactory {
 
-    public static final IDocumentCollection load(File file) throws IOException {
+    public static final boolean isZip(File file) {
         ZipFile zip = null;
         try {
             zip = new ZipFile(file);
-            final Collection documents = new ArrayList();
-            final Collection subdirectories = new ArrayList();
-
-            final Collection directories = new ArrayList();
-            final List entries = EnumerationUtils.toList(zip.entries());
-            for (Iterator it=entries.iterator();it.hasNext();) {
-                final ZipEntry entry = (ZipEntry) it.next();
-                final boolean isDirectory = entry.isDirectory();
-                final boolean topLevel = ZipUtils.isTopLevel(entry);
-                if (isDirectory) {
-                    ZipDirectory directory = createDirectory(entry, entries, directories, zip);
-                    if (topLevel) {
-                        subdirectories.add(directory);
-                    }
-                    directories.add(directory);
-                } else if (topLevel){
-                    documents.add(new ZipDocument(entry, zip));
-                }
-            }
-            for (Iterator it=directories.iterator();it.hasNext();) {
-                ZipDirectory directory = (ZipDirectory) it.next();
-                directory.addSubDirectories(directories);
-            }
-
-            final IDocumentCollection result = new ZipRootDirectory(zip, subdirectories, documents);
-            return result;
+            zip.entries();
+            return true;
+        } catch (ZipException e) {
+            return false;
+        } catch (IOException e) {
+            return false;
         } finally {
             if (zip != null) {
-                zip.close();
-            }
-        }
-    }
-
-    private static ZipDirectory createDirectory(ZipEntry entry, 
-            List entries, Collection directories, ZipFile zip) {
-        final String stem = ZipUtils.getStem(entry);
-        final Collection subdirectories = new ArrayList();
-        final Collection documents = new ArrayList();
-        
-        for(Iterator it=entries.iterator();it.hasNext();) {
-            ZipEntry otherEntry = (ZipEntry) it.next();
-            if (!otherEntry.equals(entry))
-            {
-                final String otherStem = ZipUtils.getStem(otherEntry);
-                if (stem.equals(otherStem)) {
-                    if (otherEntry.isDirectory()) {
-                        ZipDirectory subDirectory 
-                            = createDirectory(otherEntry, entries,directories, zip);
-                        subdirectories.add(subDirectory);
-                        directories.add(subDirectory);
-                    } else {
-                        ZipDocument document = new ZipDocument(otherEntry, zip);
-                        documents.add(document);
-                    }
+                try {
+                    zip.close();
+                } catch (Throwable t) {
+                    // Swallow
                 }
             }
         }
-        
-        final ZipDirectory result = new ZipDirectory(entry, subdirectories, documents);
-        return result;
     }
+
 }

Modified: incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipFileDocument.java
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipFileDocument.java?rev=776110&r1=776109&r2=776110&view=diff
==============================================================================
--- incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipFileDocument.java (original)
+++ incubator/rat/main/trunk/apache-rat-core/src/main/java/org/apache/rat/document/impl/zip/ZipFileDocument.java Mon May 18 21:55:20 2009
@@ -47,12 +47,7 @@
     
     
     public boolean isComposite() {
-        try {
-            ZipDocumentFactory.load(file);
-            return true;
-        } catch (IOException e) {
-            return false;
-        }
+        return ZipDocumentFactory.isZip(file);
     }
 
     public String getName() {

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=776110&r1=776109&r2=776110&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 Mon May 18 21:55:20 2009
@@ -80,12 +80,7 @@
         }
 
         public boolean isComposite() {
-            try {
-                ZipDocumentFactory.load( file );
-                return true;
-            } catch (IOException e) {
-                return false;
-            }
+            return ZipDocumentFactory.isZip(file);
         }
 
         public Reader reader() throws IOException

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=776110&r1=776109&r2=776110&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 Mon May 18 21:55:20 2009
@@ -96,11 +96,7 @@
             if (resource instanceof FileResource) {
                 final FileResource fileResource = (FileResource) resource;
                 final File file = fileResource.getFile();
-                try {
-                    return ZipDocumentFactory.load(file) != null;
-                } catch (IOException e) {
-                    return false;
-                }
+                return ZipDocumentFactory.isZip(file);
             }
             return false;
         }