< prev index next >
test/java/nio/file/Files/probeContentType/Basic.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 27,45 ****
* @library ../..
* @build Basic SimpleFileTypeDetector
* @run main/othervm Basic
*/
- import java.nio.file.*;
import java.io.*;
/**
! * Uses Files.probeContentType to probe html file and custom file type.
*/
-
public class Basic {
static Path createHtmlFile() throws IOException {
Path file = Files.createTempFile("foo", ".html");
try (OutputStream out = Files.newOutputStream(file)) {
out.write("<html><body>foo</body></html>".getBytes());
}
--- 27,49 ----
* @library ../..
* @build Basic SimpleFileTypeDetector
* @run main/othervm Basic
*/
import java.io.*;
+ import java.nio.file.*;
+ import java.util.stream.Stream;
/**
! * Uses Files.probeContentType to probe html file, custom file type, and minimal
! * set of file extension to content type mappings.
*/
public class Basic {
+ private static final boolean IS_UNIX =
+ ! System.getProperty("os.name").startsWith("Windows");
+
static Path createHtmlFile() throws IOException {
Path file = Files.createTempFile("foo", ".html");
try (OutputStream out = Files.newOutputStream(file)) {
out.write("<html><body>foo</body></html>".getBytes());
}
*** 49,69 ****
static Path createGrapeFile() throws IOException {
return Files.createTempFile("red", ".grape");
}
public static void main(String[] args) throws IOException {
// exercise default file type detector
Path file = createHtmlFile();
try {
String type = Files.probeContentType(file);
if (type == null) {
System.err.println("Content type cannot be determined - test skipped");
} else {
! if (!type.equals("text/html"))
! throw new RuntimeException("Unexpected type: " + type);
}
} finally {
Files.delete(file);
}
--- 53,123 ----
static Path createGrapeFile() throws IOException {
return Files.createTempFile("red", ".grape");
}
+ private static int checkContentTypes(String expected, String actual) {
+ assert expected != null;
+ assert actual != null;
+
+ if (!expected.equals(actual)) {
+ if (IS_UNIX) {
+ Path userMimeTypes =
+ Paths.get(System.getProperty("user.home"), ".mime.types");
+ if (!Files.exists(userMimeTypes)) {
+ System.out.println(userMimeTypes + " does not exist");
+ } else if (!Files.isReadable(userMimeTypes)) {
+ System.out.println(userMimeTypes + " is not readable");
+ } else {
+ System.out.println(userMimeTypes + " contents:");
+ try (Stream<String> lines = Files.lines(userMimeTypes)) {
+ lines.forEach(System.out::println);
+ System.out.println("");
+ } catch (IOException ioe) {
+ System.err.println("Problem reading "
+ + userMimeTypes);
+ }
+ }
+
+ Path etcMimeTypes = Paths.get("/etc/mime.types");
+ if (!Files.exists(etcMimeTypes)) {
+ System.out.println(etcMimeTypes + " does not exist");
+ } else if (!Files.isReadable(etcMimeTypes)) {
+ System.out.println(etcMimeTypes + " is not readable");
+ } else {
+ System.out.println(etcMimeTypes + " contents:");
+ try (Stream<String> lines = Files.lines(etcMimeTypes)) {
+ lines.forEach(System.out::println);
+ System.out.println("");
+ } catch (IOException ioe) {
+ System.err.println("Problem reading "
+ + etcMimeTypes);
+ }
+ }
+ }
+
+ System.err.println("Expected \"" + expected
+ + "\" but obtained \""
+ + actual + "\"");
+
+ return 1;
+ }
+
+ return 0;
+ }
+
public static void main(String[] args) throws IOException {
+ int failures = 0;
// exercise default file type detector
Path file = createHtmlFile();
try {
String type = Files.probeContentType(file);
if (type == null) {
System.err.println("Content type cannot be determined - test skipped");
} else {
! failures += checkContentTypes("text/html", type);
}
} finally {
Files.delete(file);
}
*** 71,83 ****
file = createGrapeFile();
try {
String type = Files.probeContentType(file);
if (type == null)
throw new RuntimeException("Custom file type detector not installed?");
! if (!type.equals("grape/unknown"))
! throw new RuntimeException("Unexpected type: " + type);
} finally {
Files.delete(file);
}
}
}
--- 125,139 ----
file = createGrapeFile();
try {
String type = Files.probeContentType(file);
if (type == null)
throw new RuntimeException("Custom file type detector not installed?");
! failures += checkContentTypes("grape/unknown", type);
} finally {
Files.delete(file);
}
+ if (failures > 0) {
+ throw new RuntimeException("Test failed!");
+ }
}
}
< prev index next >