You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2008/04/25 12:43:13 UTC

svn commit: r651569 - in /commons/proper/io/trunk: src/changes/ src/java/org/apache/commons/io/ src/test/org/apache/commons/io/ src/test/org/apache/commons/io/input/ xdocs/

Author: niallp
Date: Fri Apr 25 03:42:55 2008
New Revision: 651569

URL: http://svn.apache.org/viewvc?rev=651569&view=rev
Log:
IO-165 set svn:eol-style to native - thanks to Benjamin Bentmann for the patch

Modified:
    commons/proper/io/trunk/src/changes/changes.xml   (contents, props changed)
    commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java   (contents, props changed)
    commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java   (contents, props changed)
    commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java   (contents, props changed)
    commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java   (contents, props changed)
    commons/proper/io/trunk/xdocs/upgradeto1_3_2.xml   (contents, props changed)
    commons/proper/io/trunk/xdocs/upgradeto1_4.xml   (contents, props changed)

Modified: commons/proper/io/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/changes/changes.xml?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/src/changes/changes.xml (original)
+++ commons/proper/io/trunk/src/changes/changes.xml Fri Apr 25 03:42:55 2008
@@ -1,61 +1,61 @@
-<?xml version="1.0"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!--
-This file is used by the maven-changes-plugin to generate the release notes.
-Useful ways of finding items to add to this file are:
-
-1.  Add items when you fix a bug or add a feature (this makes the 
-release process easy :-).
-
-2.  Do a Jira search for tickets closed since the previous release.
-
-3.  Use the report generated by the maven-changelog-plugin to see all
-CVS commits.  Set the project.properties' maven.changelog.range 
-property to the number of days since the last release.
-
-
-The <action> type attribute can be add,update,fix,remove.
--->
-
-<document>
-  <properties>
-    <title>Release Notes</title>
-  </properties>
-
-  <body>
-    <release version="1.4" date="Not yet released">
-    </release>
-
-    <release version="1.3.2" date="2007-Jul-02">
-      <action dev="jochen" type="fix" issue="IO-115">
-        Some tests, which are implicitly assuming a Unix-like file
-        system, are now skipped on Windows.
-      </action>
-      <action dev="jochen" type="fix" issue="IO-116">
-        Created the FileCleaningTracker, basically a non-static
-        version of the FileCleaner, which can be controlled by
-        the user.
-      </action>
-      <action dev="bayard" type="fix" issue="IO-117" due-to="Hiroshi Ikeda">
-        EndianUtils - both readSwappedUnsignedInteger(...) methods could
-        return negative numbers due to int/long casting.
-      </action>
-    </release>
-  </body>
-</document>
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+This file is used by the maven-changes-plugin to generate the release notes.
+Useful ways of finding items to add to this file are:
+
+1.  Add items when you fix a bug or add a feature (this makes the 
+release process easy :-).
+
+2.  Do a Jira search for tickets closed since the previous release.
+
+3.  Use the report generated by the maven-changelog-plugin to see all
+CVS commits.  Set the project.properties' maven.changelog.range 
+property to the number of days since the last release.
+
+
+The <action> type attribute can be add,update,fix,remove.
+-->
+
+<document>
+  <properties>
+    <title>Release Notes</title>
+  </properties>
+
+  <body>
+    <release version="1.4" date="Not yet released">
+    </release>
+
+    <release version="1.3.2" date="2007-Jul-02">
+      <action dev="jochen" type="fix" issue="IO-115">
+        Some tests, which are implicitly assuming a Unix-like file
+        system, are now skipped on Windows.
+      </action>
+      <action dev="jochen" type="fix" issue="IO-116">
+        Created the FileCleaningTracker, basically a non-static
+        version of the FileCleaner, which can be controlled by
+        the user.
+      </action>
+      <action dev="bayard" type="fix" issue="IO-117" due-to="Hiroshi Ikeda">
+        EndianUtils - both readSwappedUnsignedInteger(...) methods could
+        return negative numbers due to int/long casting.
+      </action>
+    </release>
+  </body>
+</document>

Propchange: commons/proper/io/trunk/src/changes/changes.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java (original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java Fri Apr 25 03:42:55 2008
@@ -1,258 +1,258 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.io;
-
-import java.io.File;
-import java.lang.ref.PhantomReference;
-import java.lang.ref.ReferenceQueue;
-import java.util.Collection;
-import java.util.Vector;
-
-/**
- * Keeps track of files awaiting deletion, and deletes them when an associated
- * marker object is reclaimed by the garbage collector.
- * <p>
- * This utility creates a background thread to handle file deletion.
- * Each file to be deleted is registered with a handler object.
- * When the handler object is garbage collected, the file is deleted.
- * <p>
- * In an environment with multiple class loaders (a servlet container, for
- * example), you should consider stopping the background thread if it is no
- * longer needed. This is done by invoking the method
- * {@link #exitWhenFinished}, typically in
- * {@link javax.servlet.ServletContextListener#contextDestroyed} or similar.
- *
- * @author Noel Bergman
- * @author Martin Cooper
- * @version $Id: FileCleaner.java 490987 2006-12-29 12:11:48Z scolebourne $
- */
-public class FileCleaningTracker {
-    /**
-     * Queue of <code>Tracker</code> instances being watched.
-     */
-    ReferenceQueue /* Tracker */ q = new ReferenceQueue();
-    /**
-     * Collection of <code>Tracker</code> instances in existence.
-     */
-    final Collection<Tracker> trackers = new Vector<Tracker>();  // synchronized
-    /**
-     * Whether to terminate the thread when the tracking is complete.
-     */
-    volatile boolean exitWhenFinished = false;
-    /**
-     * The thread that will clean up registered files.
-     */
-    Thread reaper;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Track the specified file, using the provided marker, deleting the file
-     * when the marker instance is garbage collected.
-     * The {@link FileDeleteStrategy#NORMAL normal} deletion strategy will be used.
-     *
-     * @param file  the file to be tracked, not null
-     * @param marker  the marker object used to track the file, not null
-     * @throws NullPointerException if the file is null
-     */
-    public void track(File file, Object marker) {
-        track(file, marker, (FileDeleteStrategy) null);
-    }
-
-    /**
-     * Track the specified file, using the provided marker, deleting the file
-     * when the marker instance is garbage collected.
-     * The speified deletion strategy is used.
-     *
-     * @param file  the file to be tracked, not null
-     * @param marker  the marker object used to track the file, not null
-     * @param deleteStrategy  the strategy to delete the file, null means normal
-     * @throws NullPointerException if the file is null
-     */
-    public void track(File file, Object marker, FileDeleteStrategy deleteStrategy) {
-        if (file == null) {
-            throw new NullPointerException("The file must not be null");
-        }
-        addTracker(file.getPath(), marker, deleteStrategy);
-    }
-
-    /**
-     * Track the specified file, using the provided marker, deleting the file
-     * when the marker instance is garbage collected.
-     * The {@link FileDeleteStrategy#NORMAL normal} deletion strategy will be used.
-     *
-     * @param path  the full path to the file to be tracked, not null
-     * @param marker  the marker object used to track the file, not null
-     * @throws NullPointerException if the path is null
-     */
-    public void track(String path, Object marker) {
-        track(path, marker, (FileDeleteStrategy) null);
-    }
-
-    /**
-     * Track the specified file, using the provided marker, deleting the file
-     * when the marker instance is garbage collected.
-     * The speified deletion strategy is used.
-     *
-     * @param path  the full path to the file to be tracked, not null
-     * @param marker  the marker object used to track the file, not null
-     * @param deleteStrategy  the strategy to delete the file, null means normal
-     * @throws NullPointerException if the path is null
-     */
-    public void track(String path, Object marker, FileDeleteStrategy deleteStrategy) {
-        if (path == null) {
-            throw new NullPointerException("The path must not be null");
-        }
-        addTracker(path, marker, deleteStrategy);
-    }
-
-    /**
-     * Adds a tracker to the list of trackers.
-     * 
-     * @param path  the full path to the file to be tracked, not null
-     * @param marker  the marker object used to track the file, not null
-     * @param deleteStrategy  the strategy to delete the file, null means normal
-     */
-    private synchronized void addTracker(String path, Object marker, FileDeleteStrategy deleteStrategy) {
-        // synchronized block protects reaper
-        if (exitWhenFinished) {
-            throw new IllegalStateException("No new trackers can be added once exitWhenFinished() is called");
-        }
-        if (reaper == null) {
-            reaper = new Reaper();
-            reaper.start();
-        }
-        trackers.add(new Tracker(path, deleteStrategy, marker, q));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Retrieve the number of files currently being tracked, and therefore
-     * awaiting deletion.
-     *
-     * @return the number of files being tracked
-     */
-    public int getTrackCount() {
-        return trackers.size();
-    }
-
-    /**
-     * Call this method to cause the file cleaner thread to terminate when
-     * there are no more objects being tracked for deletion.
-     * <p>
-     * In a simple environment, you don't need this method as the file cleaner
-     * thread will simply exit when the JVM exits. In a more complex environment,
-     * with multiple class loaders (such as an application server), you should be
-     * aware that the file cleaner thread will continue running even if the class
-     * loader it was started from terminates. This can consitute a memory leak.
-     * <p>
-     * For example, suppose that you have developed a web application, which
-     * contains the commons-io jar file in your WEB-INF/lib directory. In other
-     * words, the FileCleaner class is loaded through the class loader of your
-     * web application. If the web application is terminated, but the servlet
-     * container is still running, then the file cleaner thread will still exist,
-     * posing a memory leak.
-     * <p>
-     * This method allows the thread to be terminated. Simply call this method
-     * in the resource cleanup code, such as {@link javax.servlet.ServletContextListener#contextDestroyed}.
-     * One called, no new objects can be tracked by the file cleaner.
-     */
-    public synchronized void exitWhenFinished() {
-        // synchronized block protects reaper
-        exitWhenFinished = true;
-        if (reaper != null) {
-            synchronized (reaper) {
-                reaper.interrupt();
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * The reaper thread.
-     */
-    private final class Reaper extends Thread {
-        /** Construct a new Reaper */
-        Reaper() {
-            super("File Reaper");
-            setPriority(Thread.MAX_PRIORITY);
-            setDaemon(true);
-        }
-
-        /**
-         * Run the reaper thread that will delete files as their associated
-         * marker objects are reclaimed by the garbage collector.
-         */
-        public void run() {
-            // thread exits when exitWhenFinished is true and there are no more tracked objects
-            while (exitWhenFinished == false || trackers.size() > 0) {
-                Tracker tracker = null;
-                try {
-                    // Wait for a tracker to remove.
-                    tracker = (Tracker) q.remove();
-                } catch (Exception e) {
-                    continue;
-                }
-                if (tracker != null) {
-                    tracker.delete();
-                    tracker.clear();
-                    trackers.remove(tracker);
-                }
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class which acts as the reference for a file pending deletion.
-     */
-    private static final class Tracker extends PhantomReference {
-
-        /**
-         * The full path to the file being tracked.
-         */
-        private final String path;
-        /**
-         * The strategy for deleting files.
-         */
-        private final FileDeleteStrategy deleteStrategy;
-
-        /**
-         * Constructs an instance of this class from the supplied parameters.
-         *
-         * @param path  the full path to the file to be tracked, not null
-         * @param deleteStrategy  the strategy to delete the file, null means normal
-         * @param marker  the marker object used to track the file, not null
-         * @param queue  the queue on to which the tracker will be pushed, not null
-         */
-        Tracker(String path, FileDeleteStrategy deleteStrategy, Object marker, ReferenceQueue queue) {
-            super(marker, queue);
-            this.path = path;
-            this.deleteStrategy = (deleteStrategy == null ? FileDeleteStrategy.NORMAL : deleteStrategy);
-        }
-
-        /**
-         * Deletes the file associated with this tracker instance.
-         *
-         * @return <code>true</code> if the file was deleted successfully;
-         *         <code>false</code> otherwise.
-         */
-        public boolean delete() {
-            return deleteStrategy.deleteQuietly(new File(path));
-        }
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.io;
+
+import java.io.File;
+import java.lang.ref.PhantomReference;
+import java.lang.ref.ReferenceQueue;
+import java.util.Collection;
+import java.util.Vector;
+
+/**
+ * Keeps track of files awaiting deletion, and deletes them when an associated
+ * marker object is reclaimed by the garbage collector.
+ * <p>
+ * This utility creates a background thread to handle file deletion.
+ * Each file to be deleted is registered with a handler object.
+ * When the handler object is garbage collected, the file is deleted.
+ * <p>
+ * In an environment with multiple class loaders (a servlet container, for
+ * example), you should consider stopping the background thread if it is no
+ * longer needed. This is done by invoking the method
+ * {@link #exitWhenFinished}, typically in
+ * {@link javax.servlet.ServletContextListener#contextDestroyed} or similar.
+ *
+ * @author Noel Bergman
+ * @author Martin Cooper
+ * @version $Id$
+ */
+public class FileCleaningTracker {
+    /**
+     * Queue of <code>Tracker</code> instances being watched.
+     */
+    ReferenceQueue /* Tracker */ q = new ReferenceQueue();
+    /**
+     * Collection of <code>Tracker</code> instances in existence.
+     */
+    final Collection<Tracker> trackers = new Vector<Tracker>();  // synchronized
+    /**
+     * Whether to terminate the thread when the tracking is complete.
+     */
+    volatile boolean exitWhenFinished = false;
+    /**
+     * The thread that will clean up registered files.
+     */
+    Thread reaper;
+
+    //-----------------------------------------------------------------------
+    /**
+     * Track the specified file, using the provided marker, deleting the file
+     * when the marker instance is garbage collected.
+     * The {@link FileDeleteStrategy#NORMAL normal} deletion strategy will be used.
+     *
+     * @param file  the file to be tracked, not null
+     * @param marker  the marker object used to track the file, not null
+     * @throws NullPointerException if the file is null
+     */
+    public void track(File file, Object marker) {
+        track(file, marker, (FileDeleteStrategy) null);
+    }
+
+    /**
+     * Track the specified file, using the provided marker, deleting the file
+     * when the marker instance is garbage collected.
+     * The speified deletion strategy is used.
+     *
+     * @param file  the file to be tracked, not null
+     * @param marker  the marker object used to track the file, not null
+     * @param deleteStrategy  the strategy to delete the file, null means normal
+     * @throws NullPointerException if the file is null
+     */
+    public void track(File file, Object marker, FileDeleteStrategy deleteStrategy) {
+        if (file == null) {
+            throw new NullPointerException("The file must not be null");
+        }
+        addTracker(file.getPath(), marker, deleteStrategy);
+    }
+
+    /**
+     * Track the specified file, using the provided marker, deleting the file
+     * when the marker instance is garbage collected.
+     * The {@link FileDeleteStrategy#NORMAL normal} deletion strategy will be used.
+     *
+     * @param path  the full path to the file to be tracked, not null
+     * @param marker  the marker object used to track the file, not null
+     * @throws NullPointerException if the path is null
+     */
+    public void track(String path, Object marker) {
+        track(path, marker, (FileDeleteStrategy) null);
+    }
+
+    /**
+     * Track the specified file, using the provided marker, deleting the file
+     * when the marker instance is garbage collected.
+     * The speified deletion strategy is used.
+     *
+     * @param path  the full path to the file to be tracked, not null
+     * @param marker  the marker object used to track the file, not null
+     * @param deleteStrategy  the strategy to delete the file, null means normal
+     * @throws NullPointerException if the path is null
+     */
+    public void track(String path, Object marker, FileDeleteStrategy deleteStrategy) {
+        if (path == null) {
+            throw new NullPointerException("The path must not be null");
+        }
+        addTracker(path, marker, deleteStrategy);
+    }
+
+    /**
+     * Adds a tracker to the list of trackers.
+     * 
+     * @param path  the full path to the file to be tracked, not null
+     * @param marker  the marker object used to track the file, not null
+     * @param deleteStrategy  the strategy to delete the file, null means normal
+     */
+    private synchronized void addTracker(String path, Object marker, FileDeleteStrategy deleteStrategy) {
+        // synchronized block protects reaper
+        if (exitWhenFinished) {
+            throw new IllegalStateException("No new trackers can be added once exitWhenFinished() is called");
+        }
+        if (reaper == null) {
+            reaper = new Reaper();
+            reaper.start();
+        }
+        trackers.add(new Tracker(path, deleteStrategy, marker, q));
+    }
+
+    //-----------------------------------------------------------------------
+    /**
+     * Retrieve the number of files currently being tracked, and therefore
+     * awaiting deletion.
+     *
+     * @return the number of files being tracked
+     */
+    public int getTrackCount() {
+        return trackers.size();
+    }
+
+    /**
+     * Call this method to cause the file cleaner thread to terminate when
+     * there are no more objects being tracked for deletion.
+     * <p>
+     * In a simple environment, you don't need this method as the file cleaner
+     * thread will simply exit when the JVM exits. In a more complex environment,
+     * with multiple class loaders (such as an application server), you should be
+     * aware that the file cleaner thread will continue running even if the class
+     * loader it was started from terminates. This can consitute a memory leak.
+     * <p>
+     * For example, suppose that you have developed a web application, which
+     * contains the commons-io jar file in your WEB-INF/lib directory. In other
+     * words, the FileCleaner class is loaded through the class loader of your
+     * web application. If the web application is terminated, but the servlet
+     * container is still running, then the file cleaner thread will still exist,
+     * posing a memory leak.
+     * <p>
+     * This method allows the thread to be terminated. Simply call this method
+     * in the resource cleanup code, such as {@link javax.servlet.ServletContextListener#contextDestroyed}.
+     * One called, no new objects can be tracked by the file cleaner.
+     */
+    public synchronized void exitWhenFinished() {
+        // synchronized block protects reaper
+        exitWhenFinished = true;
+        if (reaper != null) {
+            synchronized (reaper) {
+                reaper.interrupt();
+            }
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    /**
+     * The reaper thread.
+     */
+    private final class Reaper extends Thread {
+        /** Construct a new Reaper */
+        Reaper() {
+            super("File Reaper");
+            setPriority(Thread.MAX_PRIORITY);
+            setDaemon(true);
+        }
+
+        /**
+         * Run the reaper thread that will delete files as their associated
+         * marker objects are reclaimed by the garbage collector.
+         */
+        public void run() {
+            // thread exits when exitWhenFinished is true and there are no more tracked objects
+            while (exitWhenFinished == false || trackers.size() > 0) {
+                Tracker tracker = null;
+                try {
+                    // Wait for a tracker to remove.
+                    tracker = (Tracker) q.remove();
+                } catch (Exception e) {
+                    continue;
+                }
+                if (tracker != null) {
+                    tracker.delete();
+                    tracker.clear();
+                    trackers.remove(tracker);
+                }
+            }
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    /**
+     * Inner class which acts as the reference for a file pending deletion.
+     */
+    private static final class Tracker extends PhantomReference {
+
+        /**
+         * The full path to the file being tracked.
+         */
+        private final String path;
+        /**
+         * The strategy for deleting files.
+         */
+        private final FileDeleteStrategy deleteStrategy;
+
+        /**
+         * Constructs an instance of this class from the supplied parameters.
+         *
+         * @param path  the full path to the file to be tracked, not null
+         * @param deleteStrategy  the strategy to delete the file, null means normal
+         * @param marker  the marker object used to track the file, not null
+         * @param queue  the queue on to which the tracker will be pushed, not null
+         */
+        Tracker(String path, FileDeleteStrategy deleteStrategy, Object marker, ReferenceQueue queue) {
+            super(marker, queue);
+            this.path = path;
+            this.deleteStrategy = (deleteStrategy == null ? FileDeleteStrategy.NORMAL : deleteStrategy);
+        }
+
+        /**
+         * Deletes the file associated with this tracker instance.
+         *
+         * @return <code>true</code> if the file was deleted successfully;
+         *         <code>false</code> otherwise.
+         */
+        public boolean delete() {
+            return deleteStrategy.deleteQuietly(new File(path));
+        }
+    }
+
+}

Propchange: commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/io/trunk/src/java/org/apache/commons/io/FileCleaningTracker.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java (original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java Fri Apr 25 03:42:55 2008
@@ -1,69 +1,69 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.io;
-
-import java.io.IOException;
-
-/**
- * Subclasses IOException with the {@link Throwable} constructors missing before Java 6. If you are using Java 6,
- * consider this class deprecated and use {@link IOException}.
- * 
- * @author <a href="http://commons.apache.org/io/">Apache Commons IO</a>
- * @version $Id$
- * @since Commons IO 1.4
- */
-public class IOExceptionWithCause extends IOException {
-
-    /**
-     * Defines the serial version UID.
-     */
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Constructs a new instance with the given message and cause.
-     * <p>
-     * As specified in {@link Throwable}, the message in the given <code>cause</code> is not used in this instance's
-     * message.
-     * </p>
-     * 
-     * @param message
-     *            the message (see {@link #getMessage()})
-     * @param cause
-     *            the cause (see {@link #getCause()}). A <code>null</code> value is allowed.
-     */
-    public IOExceptionWithCause(String message, Throwable cause) {
-        super(message);
-        this.initCause(cause);
-    }
-
-    /**
-     * Constructs a new instance with the given cause.
-     * <p>
-     * The message is set to <code>cause==null ? null : cause.toString()</code>, which by default contains the class
-     * and message of <code>cause</code>. This constructor is useful for call sites that just wrap another throwable.
-     * </p>
-     * 
-     * @param cause
-     *            the cause (see {@link #getCause()}). A <code>null</code> value is allowed.
-     */
-    public IOExceptionWithCause(Throwable cause) {
-        super(cause == null ? null : cause.toString());
-        this.initCause(cause);
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.io;
+
+import java.io.IOException;
+
+/**
+ * Subclasses IOException with the {@link Throwable} constructors missing before Java 6. If you are using Java 6,
+ * consider this class deprecated and use {@link IOException}.
+ * 
+ * @author <a href="http://commons.apache.org/io/">Apache Commons IO</a>
+ * @version $Id$
+ * @since Commons IO 1.4
+ */
+public class IOExceptionWithCause extends IOException {
+
+    /**
+     * Defines the serial version UID.
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Constructs a new instance with the given message and cause.
+     * <p>
+     * As specified in {@link Throwable}, the message in the given <code>cause</code> is not used in this instance's
+     * message.
+     * </p>
+     * 
+     * @param message
+     *            the message (see {@link #getMessage()})
+     * @param cause
+     *            the cause (see {@link #getCause()}). A <code>null</code> value is allowed.
+     */
+    public IOExceptionWithCause(String message, Throwable cause) {
+        super(message);
+        this.initCause(cause);
+    }
+
+    /**
+     * Constructs a new instance with the given cause.
+     * <p>
+     * The message is set to <code>cause==null ? null : cause.toString()</code>, which by default contains the class
+     * and message of <code>cause</code>. This constructor is useful for call sites that just wrap another throwable.
+     * </p>
+     * 
+     * @param cause
+     *            the cause (see {@link #getCause()}). A <code>null</code> value is allowed.
+     */
+    public IOExceptionWithCause(Throwable cause) {
+        super(cause == null ? null : cause.toString());
+        this.initCause(cause);
+    }
+
+}

Propchange: commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/io/trunk/src/java/org/apache/commons/io/IOExceptionWithCause.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java (original)
+++ commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java Fri Apr 25 03:42:55 2008
@@ -1,53 +1,53 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.io;
-
-import junit.framework.TestCase;
-
-/**
- * Tests IOExceptionWithCause
- * 
- * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
- * @version $Id: $
- */
-public class IOExceptionWithCauseTestCase extends TestCase {
-
-    /**
-     * Tests the {@link IOExceptionWithCause#IOExceptionWithCause(String,Throwable)} constructor.
-     */
-    public void testIOExceptionStringThrowable() {
-        Throwable cause = new IllegalArgumentException("cause");
-        IOExceptionWithCause exception = new IOExceptionWithCause("message", cause);
-        this.validate(exception, cause, "message");
-    }
-
-    /**
-     * Tests the {@link IOExceptionWithCause#IOExceptionWithCause(Throwable)} constructor.
-     */
-    public void testIOExceptionThrowable() {
-        Throwable cause = new IllegalArgumentException("cause");
-        IOExceptionWithCause exception = new IOExceptionWithCause(cause);
-        this.validate(exception, cause, "java.lang.IllegalArgumentException: cause");
-    }
-
-    void validate(Throwable throwable, Throwable expectedCause, String expectedMessage) {
-        assertEquals(expectedMessage, throwable.getMessage());
-        assertEquals(expectedCause, throwable.getCause());
-        assertSame(expectedCause, throwable.getCause());
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.io;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests IOExceptionWithCause
+ * 
+ * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
+ * @version $Id$
+ */
+public class IOExceptionWithCauseTestCase extends TestCase {
+
+    /**
+     * Tests the {@link IOExceptionWithCause#IOExceptionWithCause(String,Throwable)} constructor.
+     */
+    public void testIOExceptionStringThrowable() {
+        Throwable cause = new IllegalArgumentException("cause");
+        IOExceptionWithCause exception = new IOExceptionWithCause("message", cause);
+        this.validate(exception, cause, "message");
+    }
+
+    /**
+     * Tests the {@link IOExceptionWithCause#IOExceptionWithCause(Throwable)} constructor.
+     */
+    public void testIOExceptionThrowable() {
+        Throwable cause = new IllegalArgumentException("cause");
+        IOExceptionWithCause exception = new IOExceptionWithCause(cause);
+        this.validate(exception, cause, "java.lang.IllegalArgumentException: cause");
+    }
+
+    void validate(Throwable throwable, Throwable expectedCause, String expectedMessage) {
+        assertEquals(expectedMessage, throwable.getMessage());
+        assertEquals(expectedCause, throwable.getCause());
+        assertSame(expectedCause, throwable.getCause());
+    }
+}

Propchange: commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/io/trunk/src/test/org/apache/commons/io/IOExceptionWithCauseTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java (original)
+++ commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java Fri Apr 25 03:42:55 2008
@@ -1,58 +1,58 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.io.input;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.ObjectOutputStream;
-
-import junit.framework.TestCase;
-
-/**
- * Tests the CountingInputStream.
- *
- * @version $Id: CountingInputStreamTest.java 160202 2005-04-05 17:22:21Z roxspring $
- */
-public class ClassLoaderObjectInputStreamTest extends TestCase {
-
-    public ClassLoaderObjectInputStreamTest(String name) {
-        super(name);
-    }
-
-	/* Note: This test case tests the simplest functionality of
-	 * ObjectInputStream.  IF we really wanted to test ClassLoaderObjectInputStream
-	 * we would probably need to create a transient Class Loader. -TO
-	 */
-
-    
-    public void testExpected() throws Exception {
-
-    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    	ObjectOutputStream oos = new ObjectOutputStream(baos);
-    	
-    	oos.writeObject( Boolean.FALSE );
-    	
-    	InputStream bais = new ByteArrayInputStream(baos.toByteArray());
-    	ClassLoaderObjectInputStream clois = 
-    		new ClassLoaderObjectInputStream(getClass().getClassLoader(), bais);
-    	Boolean result = (Boolean) clois.readObject();
-    	
-    	assertTrue( !result.booleanValue() );
-    }
-    
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.io.input;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.ObjectOutputStream;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests the CountingInputStream.
+ *
+ * @version $Id$
+ */
+public class ClassLoaderObjectInputStreamTest extends TestCase {
+
+    public ClassLoaderObjectInputStreamTest(String name) {
+        super(name);
+    }
+
+	/* Note: This test case tests the simplest functionality of
+	 * ObjectInputStream.  IF we really wanted to test ClassLoaderObjectInputStream
+	 * we would probably need to create a transient Class Loader. -TO
+	 */
+
+    
+    public void testExpected() throws Exception {
+
+    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    	ObjectOutputStream oos = new ObjectOutputStream(baos);
+    	
+    	oos.writeObject( Boolean.FALSE );
+    	
+    	InputStream bais = new ByteArrayInputStream(baos.toByteArray());
+    	ClassLoaderObjectInputStream clois = 
+    		new ClassLoaderObjectInputStream(getClass().getClassLoader(), bais);
+    	Boolean result = (Boolean) clois.readObject();
+    	
+    	assertTrue( !result.booleanValue() );
+    }
+    
+}

Propchange: commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/io/trunk/src/test/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: commons/proper/io/trunk/xdocs/upgradeto1_3_2.xml
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/xdocs/upgradeto1_3_2.xml?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/xdocs/upgradeto1_3_2.xml (original)
+++ commons/proper/io/trunk/xdocs/upgradeto1_3_2.xml Fri Apr 25 03:42:55 2008
@@ -1,87 +1,87 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<document>
- <properties>
-  <title>Upgrade from 1.3, or 1.3.1, to 1.3.2</title>
-  <author email="dev@commons.apache.org">Commons Documentation Team</author>
- </properties>
-<body>
-
-<section name="Upgrade">
-<p>
-These are the release notes and advice for upgrading Commons-IO from
-version 1.3, or 1.3.1, to version 1.3.2.
-<source>
-Commons IO is a package of Java utility classes for java.io's hierarchy.  
-Classes in this package are considered to be so standard and of such high 
-reuse as to justify existence in java.io.
-
-Commons IO contains utility classes, stream implementations, file filters, 
-and endian transformation classes.
-
-
-Compatibility with 1.3.1
-------------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-  Check the bug fixes section for semantic bug fixes
-
-
-Compatibility with 1.3
-----------------------
-Binary compatible - No
-  See [IO-113]
-
-Source compatible - No
-  See [IO-113]
-
-Semantic compatible - Yes
-
-
-Enhancements since 1.3.1
-------------------------
-
-- Created the FileCleaningTracker, basically a non-static version of the
-  FileCleaner, which can be controlled by the user. [IO-116]
-- The FileCleaner is deprecated. (For reasons of compatibility, the
-  deprecation warnings are hidden within the 1.3 branch. They'll be
-  visible, as of version 1.4.)
-
-
-Bug fixes from 1.3.1
---------------------
-
-- Some tests, which are implicitly assuming a Unix-like file system, are
-  now skipped on Windows. [IO-115]
-
-
-Bug fixes from 1.3
-------------------
-
-- FileUtils
-  - NPE in openOutputStream(File) when file has no parent in path [IO-112]
-  - readFileToString(File) is not static [IO-113]
-</source>
-</p>
-</section>
-
-</body>
-</document>
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+  <title>Upgrade from 1.3, or 1.3.1, to 1.3.2</title>
+  <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Upgrade">
+<p>
+These are the release notes and advice for upgrading Commons-IO from
+version 1.3, or 1.3.1, to version 1.3.2.
+<source>
+Commons IO is a package of Java utility classes for java.io's hierarchy.  
+Classes in this package are considered to be so standard and of such high 
+reuse as to justify existence in java.io.
+
+Commons IO contains utility classes, stream implementations, file filters, 
+and endian transformation classes.
+
+
+Compatibility with 1.3.1
+------------------------
+Binary compatible - Yes
+
+Source compatible - Yes
+
+Semantic compatible - Yes
+  Check the bug fixes section for semantic bug fixes
+
+
+Compatibility with 1.3
+----------------------
+Binary compatible - No
+  See [IO-113]
+
+Source compatible - No
+  See [IO-113]
+
+Semantic compatible - Yes
+
+
+Enhancements since 1.3.1
+------------------------
+
+- Created the FileCleaningTracker, basically a non-static version of the
+  FileCleaner, which can be controlled by the user. [IO-116]
+- The FileCleaner is deprecated. (For reasons of compatibility, the
+  deprecation warnings are hidden within the 1.3 branch. They'll be
+  visible, as of version 1.4.)
+
+
+Bug fixes from 1.3.1
+--------------------
+
+- Some tests, which are implicitly assuming a Unix-like file system, are
+  now skipped on Windows. [IO-115]
+
+
+Bug fixes from 1.3
+------------------
+
+- FileUtils
+  - NPE in openOutputStream(File) when file has no parent in path [IO-112]
+  - readFileToString(File) is not static [IO-113]
+</source>
+</p>
+</section>
+
+</body>
+</document>

Propchange: commons/proper/io/trunk/xdocs/upgradeto1_3_2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/proper/io/trunk/xdocs/upgradeto1_4.xml
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/xdocs/upgradeto1_4.xml?rev=651569&r1=651568&r2=651569&view=diff
==============================================================================
--- commons/proper/io/trunk/xdocs/upgradeto1_4.xml (original)
+++ commons/proper/io/trunk/xdocs/upgradeto1_4.xml Fri Apr 25 03:42:55 2008
@@ -1,142 +1,142 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<document>
- <properties>
-  <title>Upgrade from 1.3.2 to 1.4</title>
-  <author email="dev@commons.apache.org">Commons Documentation Team</author>
- </properties>
-<body>
-
-<section name="Upgrade">
-<p>
-These are the release notes and advice for upgrading Commons-IO from
-version 1.3.2 to version 1.4.
-<source>
-Commons IO is a package of Java utility classes for java.io's hierarchy.  
-Classes in this package are considered to be so standard and of such high 
-reuse as to justify existence in java.io.
-
-Commons IO contains utility classes, stream implementations, file filters, 
-file comparators and endian transformation classes.
-
-
-Compatibility with 1.3.2
-------------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-  Check the bug fixes section for semantic bug fixes
-
-Commons IO 1.4 introduces four new implementations which depend on JDK 1.4 features
-(CharSequenceReader, FileWriterWithEncoding, IOExceptionWithCause and RegexFileFilter).
-It has been built with the JDK source and target options set to JDK 1.3 and, except for
-those implementations, can be used with JDK 1.3 (see IO IO-127).
-
-
-Deprecations from 1.3.2
------------------------
-- FileCleaner deprecated in favour of FileCleaningTracker [see IO-116]
-
-
-Bug fixes from 1.3.2
---------------------
-- FileUtils
-  - forceDelete of orphaned Softlinks does not work [IO-147]
-  - Infinite loop on FileUtils.copyDirectory when the destination directory is within
-    the source directory [IO-141]
-
-- HexDump
-  - HexDump's use of static StringBuffers isn't thread-safe [IO-136]
-
-
-Enhancements from 1.3.2
------------------------
-- FileUtils
-  - Add a deleteQuietly method [IO-135]
-  - Add a copyDirectory() method that makes use of FileFilter [IO-105]
-  - Add moveDirectory() and moveFile() methods [IO-77]
-
-- FilenameUtils
-  - Add file name extension separator constants[IO-149]
-
-- IOExceptionWithCause [IO-148]
-  - Add a new IOException implementation with constructors which take a cause
-
-- TeeInputStream [IO-129]
-  - Add new Tee input stream implementation
-
-- FileWriterWithEncoding [IO-153]
-  - Add new File Writer implementation that accepts an encoding
-
-- CharSequenceReader [IO-138]
-  - Add new Reader implementation that handles any CharSequence (String,
-    StringBuffer, StringBuilder or CharBuffer) 
-
-- ThesholdingOuputStream [IO-121]
-  - Add a reset() method which sets the count of the bytes written back to zero.
-
-- DeferredFileOutputStream [IO-130]
-  - Add support for temporary files
-
-- ByteArrayOutputStream
-  - Add a new write(InputStream) method [IO-152]
-
-- New Closed Input/Output stream implementations [IO-122]
-  - AutoCloseInputStream - automatically closes and discards the underlying input stream
-  - ClosedInputStream - returns -1 for any read attempts
-  - ClosedOutputStream - throws an IOException for any write attempts
-  - CloseShieldInputStream - prevents the underlying input stream from being closed.
-  - CloseShieldOutputStream - prevents the underlying output stream from being closed.
-
-- Add Singleton Constants to several stream classes [IO-143]
-
-- PrefixFileFilter [IO-126]
-  - Add faciltiy to specify case sensitivity on prefix matching
-
-- SuffixFileFilter [IO-126]
-  - Add faciltiy to specify case sensitivity on suffix matching
-
-- RegexFileFilter [IO-74]
-  - Add new regular expression file filter implementation
-
-- Make IOFileFilter implementations Serializable [IO-131]
-
-- Improve IOFileFilter toString() methods [IO-120]
-
-- Make fields final so classes are immutable/threadsafe [IO-133]
-  - changes to Age, Delegate, Name, Not, Prefix, Regex, Size, Suffix and Wildcard IOFileFilter
-    implementations.
-
-- IOCase
-  - Add a compare method to IOCase [IO-144]
-
-- Add a package of java.util.Comparator implementations for files [IO-145]
-  - DefaultFileComparator - compare files using the default File.compareTo(File) method.
-  - ExtensionFileComparator - compares files using file name extensions.
-  - LastModifiedFileComparator - compares files using the last modified date/time.
-  - NameFileComparator - compares files using file names.
-  - PathFileComparator - compares files using file paths.
-  - SizeFileComparator - compares files using file sizes.
-</source>
-</p>
-</section>
-
-</body>
-</document>
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+  <title>Upgrade from 1.3.2 to 1.4</title>
+  <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Upgrade">
+<p>
+These are the release notes and advice for upgrading Commons-IO from
+version 1.3.2 to version 1.4.
+<source>
+Commons IO is a package of Java utility classes for java.io's hierarchy.  
+Classes in this package are considered to be so standard and of such high 
+reuse as to justify existence in java.io.
+
+Commons IO contains utility classes, stream implementations, file filters, 
+file comparators and endian transformation classes.
+
+
+Compatibility with 1.3.2
+------------------------
+Binary compatible - Yes
+
+Source compatible - Yes
+
+Semantic compatible - Yes
+  Check the bug fixes section for semantic bug fixes
+
+Commons IO 1.4 introduces four new implementations which depend on JDK 1.4 features
+(CharSequenceReader, FileWriterWithEncoding, IOExceptionWithCause and RegexFileFilter).
+It has been built with the JDK source and target options set to JDK 1.3 and, except for
+those implementations, can be used with JDK 1.3 (see IO IO-127).
+
+
+Deprecations from 1.3.2
+-----------------------
+- FileCleaner deprecated in favour of FileCleaningTracker [see IO-116]
+
+
+Bug fixes from 1.3.2
+--------------------
+- FileUtils
+  - forceDelete of orphaned Softlinks does not work [IO-147]
+  - Infinite loop on FileUtils.copyDirectory when the destination directory is within
+    the source directory [IO-141]
+
+- HexDump
+  - HexDump's use of static StringBuffers isn't thread-safe [IO-136]
+
+
+Enhancements from 1.3.2
+-----------------------
+- FileUtils
+  - Add a deleteQuietly method [IO-135]
+  - Add a copyDirectory() method that makes use of FileFilter [IO-105]
+  - Add moveDirectory() and moveFile() methods [IO-77]
+
+- FilenameUtils
+  - Add file name extension separator constants[IO-149]
+
+- IOExceptionWithCause [IO-148]
+  - Add a new IOException implementation with constructors which take a cause
+
+- TeeInputStream [IO-129]
+  - Add new Tee input stream implementation
+
+- FileWriterWithEncoding [IO-153]
+  - Add new File Writer implementation that accepts an encoding
+
+- CharSequenceReader [IO-138]
+  - Add new Reader implementation that handles any CharSequence (String,
+    StringBuffer, StringBuilder or CharBuffer) 
+
+- ThesholdingOuputStream [IO-121]
+  - Add a reset() method which sets the count of the bytes written back to zero.
+
+- DeferredFileOutputStream [IO-130]
+  - Add support for temporary files
+
+- ByteArrayOutputStream
+  - Add a new write(InputStream) method [IO-152]
+
+- New Closed Input/Output stream implementations [IO-122]
+  - AutoCloseInputStream - automatically closes and discards the underlying input stream
+  - ClosedInputStream - returns -1 for any read attempts
+  - ClosedOutputStream - throws an IOException for any write attempts
+  - CloseShieldInputStream - prevents the underlying input stream from being closed.
+  - CloseShieldOutputStream - prevents the underlying output stream from being closed.
+
+- Add Singleton Constants to several stream classes [IO-143]
+
+- PrefixFileFilter [IO-126]
+  - Add faciltiy to specify case sensitivity on prefix matching
+
+- SuffixFileFilter [IO-126]
+  - Add faciltiy to specify case sensitivity on suffix matching
+
+- RegexFileFilter [IO-74]
+  - Add new regular expression file filter implementation
+
+- Make IOFileFilter implementations Serializable [IO-131]
+
+- Improve IOFileFilter toString() methods [IO-120]
+
+- Make fields final so classes are immutable/threadsafe [IO-133]
+  - changes to Age, Delegate, Name, Not, Prefix, Regex, Size, Suffix and Wildcard IOFileFilter
+    implementations.
+
+- IOCase
+  - Add a compare method to IOCase [IO-144]
+
+- Add a package of java.util.Comparator implementations for files [IO-145]
+  - DefaultFileComparator - compare files using the default File.compareTo(File) method.
+  - ExtensionFileComparator - compares files using file name extensions.
+  - LastModifiedFileComparator - compares files using the last modified date/time.
+  - NameFileComparator - compares files using file names.
+  - PathFileComparator - compares files using file paths.
+  - SizeFileComparator - compares files using file sizes.
+</source>
+</p>
+</section>
+
+</body>
+</document>

Propchange: commons/proper/io/trunk/xdocs/upgradeto1_4.xml
------------------------------------------------------------------------------
    svn:eol-style = native