Author: dblevins Date: Sun Nov 4 16:25:31 2012 New Revision: 1405581 URL: http://svn.apache.org/viewvc?rev=1405581&view=rev Log: Handful of useful IO and Files util methods for properties, paths and more
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Files.java openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Files.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Files.java?rev=1405581&r1=1405580&r2=1405581&view=diff ============================================================================== --- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Files.java (original) +++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Files.java Sun Nov 4 16:25:31 2012 @@ -26,6 +26,27 @@ import java.util.List; */ public class Files { + public static File path(String... parts) { + File dir = null; + for (String part : parts) { + if (dir == null) { + dir = new File(part); + } else { + dir = new File(dir, part); + } + } + + return dir; + } + + public static File path(File dir, String... parts) { + for (String part : parts) { + dir = new File(dir, part); + } + + return dir; + } + public static File createTempDir() throws IOException { return createTempDir("tomee", ".conf"); } Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java?rev=1405581&r1=1405580&r2=1405581&view=diff ============================================================================== --- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java (original) +++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java Sun Nov 4 16:25:31 2012 @@ -21,6 +21,7 @@ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.Closeable; import java.io.File; @@ -35,6 +36,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.URL; +import java.util.Properties; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; @@ -43,6 +45,63 @@ import java.util.zip.ZipOutputStream; */ public class IO { + public static Properties readProperties(URL resource) throws IOException { + return readProperties(resource, new Properties()); + } + + public static Properties readProperties(URL resource, Properties properties) throws IOException { + return readProperties(read(resource), properties); + } + + public static Properties readProperties(final File resource) throws IOException { + return readProperties(resource, new Properties()); + } + + public static Properties readProperties(File resource, Properties properties) throws IOException { + return readProperties(read(resource), properties); + } + + public static Properties writeProperties(File resource, Properties properties) throws IOException { + return writeProperties(write(resource), properties); + } + + /** + * Reads and closes the input stream + * @param in + * @param properties + * @return + * @throws IOException + */ + public static Properties readProperties(InputStream in, Properties properties) throws IOException { + if (in == null) throw new NullPointerException("InputStream is null"); + if (properties == null) throw new NullPointerException("Properties is null"); + try { + properties.load(in); + } finally{ + close(in); + } + return properties; + } + + + /** + * @param outputStream + * @param properties + * @return + * @throws IOException + */ + public static Properties writeProperties(OutputStream outputStream, Properties properties) throws IOException { + if (outputStream == null) throw new NullPointerException("OutputStream is null"); + if (properties == null) throw new NullPointerException("Properties is null"); + try { + properties.store(outputStream, ""); + } finally{ + close(outputStream); + } + return properties; + } + + public static String readString(URL url) throws IOException { final InputStream in = url.openStream(); try { @@ -74,9 +133,13 @@ public class IO { } public static String slurp(InputStream in) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - copy(in, out); - return new String(out.toByteArray(), "UTF-8"); + final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + int i = -1; + while ((i = in.read()) != -1) { + outputStream.write(i); + } + + return new String(outputStream.toByteArray(), "UTF-8"); } public static String slurp(URL url) throws IOException { @@ -169,6 +232,24 @@ public class IO { return null; } + + public static void copy(final File from, final File to) throws IOException { + final FileOutputStream fos = new FileOutputStream(to); + try { + copy(from, fos); + } finally { + close(fos); + } + } + + public static void copy(byte[] from, File to) throws IOException { + copy(new ByteArrayInputStream(from), to); + } + + public static void copy(byte[] from, OutputStream to) throws IOException { + copy(new ByteArrayInputStream(from), to); + } + public static void closeSilently(final Closeable closeable) { try { close(closeable); @@ -201,4 +282,13 @@ public class IO { final InputStream in = new FileInputStream(source); return new BufferedInputStream(in, 32768); } + + public static InputStream read(byte[] content) { + return new ByteArrayInputStream(content); + } + + public static InputStream read(URL url) throws IOException { + return url.openStream(); + } + }