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 2013/12/07 12:48:25 UTC

svn commit: r1548902 - /creadur/rat/branches/gsoc/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java

Author: rdonkin
Date: Sat Dec  7 11:48:24 2013
New Revision: 1548902

URL: http://svn.apache.org/r1548902
Log:
Format Code.

Modified:
    creadur/rat/branches/gsoc/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java

Modified: creadur/rat/branches/gsoc/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java
URL: http://svn.apache.org/viewvc/creadur/rat/branches/gsoc/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java?rev=1548902&r1=1548901&r2=1548902&view=diff
==============================================================================
--- creadur/rat/branches/gsoc/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java (original)
+++ creadur/rat/branches/gsoc/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java Sat Dec  7 11:48:24 2013
@@ -29,172 +29,170 @@ import java.nio.charset.CodingErrorActio
 
 import org.apache.rat.api.Document;
 
-
 public class BinaryGuesser {
 
-    private static final String[] DATA_EXTENSIONS = { "DAT", "DOC", "NCB",
-            "IDB", "SUO", "XCF", "RAJ", "CERT", "KS", "TS", "ODP", };
-    private static final String[] EXE_EXTENSIONS = { "EXE", "DLL", "LIB", "SO",
-            "A", "EXP", };
-    private static final String[] KEYSTORE_EXTENSIONS = { "JKS", "KEYSTORE",
-            "PEM", "CRL" };
-    private static final String[] IMAGE_EXTENSIONS = { "PNG", "PDF", "GIF",
-            "GIFF", "TIF", "TIFF", "JPG", "JPEG", "ICO", "ICNS", };
-    private static final String[] BYTECODE_EXTENSIONS = { "CLASS", "PYD",
-            "OBJ", "PYC", };
-
-    private static final String JAR_MANIFEST = "MANIFEST.MF";
-    private static final String JAVA = "JAVA";
-    private static final int HIGH_BYTES_RATIO = 100;
-    private static final int TOTAL_READ_RATIO = 30;
-    private static final int NON_ASCII_THREASHOLD = 256;
-    private static final int ASCII_CHAR_THREASHOLD = 8;
-
-    public BinaryGuesser() {
-    }
-
-    public boolean matches(final Document document) {
-        return isBinary(document.getName()) ||
-        // try a taste
-                isBinaryDocument(document);
-    }
-
-    private boolean isBinaryDocument(final Document document) {
-        boolean result = false;
-        InputStream stream = null;
-        try {
-            stream = document.inputStream();
-            result = isBinary(stream);
-        } catch (final IOException e) {
-            result = false;
-        } finally {
-            try {
-                if (stream != null) {
-                    stream.close();
-                }
-            } catch (final IOException e) {
-                // SWALLOW
-            }
-        }
-        return result;
-    }
-
-    private boolean isBinary(final CharSequence taste) {
-        int highBytes = 0;
-        final int length = taste.length();
-        for (int i = 0; i < length; i++) {
-            final char c = taste.charAt(i);
-            if (c > BinaryGuesser.NON_ASCII_THREASHOLD
-                    || c <= BinaryGuesser.ASCII_CHAR_THREASHOLD) {
-                highBytes++;
-            }
-        }
-        return highBytes * BinaryGuesser.HIGH_BYTES_RATIO > length
-                * BinaryGuesser.TOTAL_READ_RATIO;
-    }
-
-    /**
-     * Do the first few bytes of the stream hint at a binary file?
-     * 
-     * <p>
-     * Any IOException is swallowed internally and the test returns false.
-     * </p>
-     * 
-     * <p>
-     * This method will try to read bytes from the stream and translate them to
-     * characters according to the platform's default encoding. If any bytes can
-     * not be translated to characters it will assume the original data must be
-     * binary and return true.
-     * </p>
-     */
-    private boolean isBinary(final InputStream in) {
-        try {
-            final byte[] taste = new byte[200];
-            final int bytesRead = in.read(taste);
-            if (bytesRead > 0) {
-                final ByteBuffer bytes = ByteBuffer.wrap(taste, 0, bytesRead);
-                CharBuffer chars = CharBuffer.allocate(2 * bytesRead);
-                final Charset cs =
-                        Charset.forName(System.getProperty("file.encoding"));
-                final CharsetDecoder cd =
-                        cs.newDecoder()
-                                .onMalformedInput(CodingErrorAction.REPORT)
-                                .onUnmappableCharacter(CodingErrorAction.REPORT);
-                while (bytes.remaining() > 0) {
-                    final CoderResult res = cd.decode(bytes, chars, true);
-                    if (res.isMalformed() || res.isUnmappable()) {
-                        return true;
-                    } else if (res.isOverflow()) {
-                        chars.limit(chars.position());
-                        chars.rewind();
-                        final int c = chars.capacity() * 2;
-                        final CharBuffer on = CharBuffer.allocate(c);
-                        on.put(chars);
-                        chars = on;
-                    }
-                }
-                chars.limit(chars.position());
-                chars.rewind();
-                return isBinary(chars);
-            }
-        } catch (final IOException e) {
-            // SWALLOW
-        }
-        return false;
-    }
-
-    private boolean isBinaryData(final String name) {
-        return extensionMatches(name, DATA_EXTENSIONS);
-    }
-
-    private boolean isExecutable(final String name) {
-        return name.equals(BinaryGuesser.JAVA)
-                || extensionMatches(name, EXE_EXTENSIONS)
-                || containsExtension(name, EXE_EXTENSIONS);
-    }
-
-    private boolean containsExtension(final String name, final String[] exts) {
-        for (final String ext : exts) {
-            if (name.indexOf("." + ext + ".") >= 0) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean extensionMatches(final String name, final String[] exts) {
-        for (final String ext : exts) {
-            if (name.endsWith("." + ext)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean isBytecode(final String name) {
-        return extensionMatches(name, BYTECODE_EXTENSIONS);
-    }
-
-    private boolean isImage(final String name) {
-        return extensionMatches(name, IMAGE_EXTENSIONS);
-    }
-
-    private boolean isKeystore(final String name) {
-        return extensionMatches(name, KEYSTORE_EXTENSIONS);
-    }
-
-    /**
-     * Is a file by that name a known binary file?
-     */
-    private boolean isBinary(final String name) {
-        if (name == null) {
-            return false;
-        }
-        final String normalisedName = GuessUtils.normalise(name);
-        return BinaryGuesser.JAR_MANIFEST.equals(name)
-                || isImage(normalisedName) || isKeystore(normalisedName)
-                || isBytecode(normalisedName) || isBinaryData(normalisedName)
-                || isExecutable(normalisedName);
-    }
+	private static final String[] DATA_EXTENSIONS = { "DAT", "DOC", "NCB",
+			"IDB", "SUO", "XCF", "RAJ", "CERT", "KS", "TS", "ODP", };
+	private static final String[] EXE_EXTENSIONS = { "EXE", "DLL", "LIB", "SO",
+			"A", "EXP", };
+	private static final String[] KEYSTORE_EXTENSIONS = { "JKS", "KEYSTORE",
+			"PEM", "CRL" };
+	private static final String[] IMAGE_EXTENSIONS = { "PNG", "PDF", "GIF",
+			"GIFF", "TIF", "TIFF", "JPG", "JPEG", "ICO", "ICNS", };
+	private static final String[] BYTECODE_EXTENSIONS = { "CLASS", "PYD",
+			"OBJ", "PYC", };
+
+	private static final String JAR_MANIFEST = "MANIFEST.MF";
+	private static final String JAVA = "JAVA";
+	private static final int HIGH_BYTES_RATIO = 100;
+	private static final int TOTAL_READ_RATIO = 30;
+	private static final int NON_ASCII_THREASHOLD = 256;
+	private static final int ASCII_CHAR_THREASHOLD = 8;
+
+	public BinaryGuesser() {
+	}
+
+	public boolean matches(final Document document) {
+		return isBinary(document.getName()) ||
+		// try a taste
+				isBinaryDocument(document);
+	}
+
+	private boolean isBinaryDocument(final Document document) {
+		boolean result = false;
+		InputStream stream = null;
+		try {
+			stream = document.inputStream();
+			result = isBinary(stream);
+		} catch (final IOException e) {
+			result = false;
+		} finally {
+			try {
+				if (stream != null) {
+					stream.close();
+				}
+			} catch (final IOException e) {
+				// SWALLOW
+			}
+		}
+		return result;
+	}
+
+	private boolean isBinary(final CharSequence taste) {
+		int highBytes = 0;
+		final int length = taste.length();
+		for (int i = 0; i < length; i++) {
+			final char c = taste.charAt(i);
+			if (c > BinaryGuesser.NON_ASCII_THREASHOLD
+					|| c <= BinaryGuesser.ASCII_CHAR_THREASHOLD) {
+				highBytes++;
+			}
+		}
+		return highBytes * BinaryGuesser.HIGH_BYTES_RATIO > length
+				* BinaryGuesser.TOTAL_READ_RATIO;
+	}
+
+	/**
+	 * Do the first few bytes of the stream hint at a binary file?
+	 * 
+	 * <p>
+	 * Any IOException is swallowed internally and the test returns false.
+	 * </p>
+	 * 
+	 * <p>
+	 * This method will try to read bytes from the stream and translate them to
+	 * characters according to the platform's default encoding. If any bytes can
+	 * not be translated to characters it will assume the original data must be
+	 * binary and return true.
+	 * </p>
+	 */
+	private boolean isBinary(final InputStream in) {
+		try {
+			final byte[] taste = new byte[200];
+			final int bytesRead = in.read(taste);
+			if (bytesRead > 0) {
+				final ByteBuffer bytes = ByteBuffer.wrap(taste, 0, bytesRead);
+				CharBuffer chars = CharBuffer.allocate(2 * bytesRead);
+				final Charset cs = Charset.forName(System
+						.getProperty("file.encoding"));
+				final CharsetDecoder cd = cs.newDecoder()
+						.onMalformedInput(CodingErrorAction.REPORT)
+						.onUnmappableCharacter(CodingErrorAction.REPORT);
+				while (bytes.remaining() > 0) {
+					final CoderResult res = cd.decode(bytes, chars, true);
+					if (res.isMalformed() || res.isUnmappable()) {
+						return true;
+					} else if (res.isOverflow()) {
+						chars.limit(chars.position());
+						chars.rewind();
+						final int c = chars.capacity() * 2;
+						final CharBuffer on = CharBuffer.allocate(c);
+						on.put(chars);
+						chars = on;
+					}
+				}
+				chars.limit(chars.position());
+				chars.rewind();
+				return isBinary(chars);
+			}
+		} catch (final IOException e) {
+			// SWALLOW
+		}
+		return false;
+	}
+
+	private boolean isBinaryData(final String name) {
+		return extensionMatches(name, DATA_EXTENSIONS);
+	}
+
+	private boolean isExecutable(final String name) {
+		return name.equals(BinaryGuesser.JAVA)
+				|| extensionMatches(name, EXE_EXTENSIONS)
+				|| containsExtension(name, EXE_EXTENSIONS);
+	}
+
+	private boolean containsExtension(final String name, final String[] exts) {
+		for (final String ext : exts) {
+			if (name.indexOf("." + ext + ".") >= 0) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private boolean extensionMatches(final String name, final String[] exts) {
+		for (final String ext : exts) {
+			if (name.endsWith("." + ext)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private boolean isBytecode(final String name) {
+		return extensionMatches(name, BYTECODE_EXTENSIONS);
+	}
+
+	private boolean isImage(final String name) {
+		return extensionMatches(name, IMAGE_EXTENSIONS);
+	}
+
+	private boolean isKeystore(final String name) {
+		return extensionMatches(name, KEYSTORE_EXTENSIONS);
+	}
+
+	/**
+	 * Is a file by that name a known binary file?
+	 */
+	private boolean isBinary(final String name) {
+		if (name == null) {
+			return false;
+		}
+		final String normalisedName = GuessUtils.normalise(name);
+		return BinaryGuesser.JAR_MANIFEST.equals(name)
+				|| isImage(normalisedName) || isKeystore(normalisedName)
+				|| isBytecode(normalisedName) || isBinaryData(normalisedName)
+				|| isExecutable(normalisedName);
+	}
 
 }