svn commit: r1695126 [5/22] - in /ofbiz/trunk: applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/ applications/accounting/src/org/ofbiz/accounting/thirdparty/securepay/ applications/content/src/org/ofbiz/content/webapp/ftl/ ap...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1695126 [5/22] - in /ofbiz/trunk: applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/ applications/accounting/src/org/ofbiz/accounting/thirdparty/securepay/ applications/content/src/org/ofbiz/content/webapp/ftl/ ap...

jleroux@apache.org
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/test/GenericTestCaseBase.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/test/GenericTestCaseBase.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/test/GenericTestCaseBase.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/test/GenericTestCaseBase.java Mon Aug 10 16:15:37 2015
@@ -1,389 +1,389 @@
-/*******************************************************************************
- * 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.ofbiz.base.test;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
-import junit.framework.TestCase;
-
-// This class can not use any other ofbiz helper methods, because it
-// may be used to test those helper methods.
-public abstract class GenericTestCaseBase extends TestCase {
-    protected GenericTestCaseBase(String name) {
-        super(name);
-    }
-
-    public static void useAllMemory() throws Exception {
-        LinkedList<long[]> dummy = new LinkedList<long[]>();
-        try {
-            do {
-                dummy.add(new long[1048576]);
-            } while (true);
-        } catch (OutOfMemoryError e) {
-            System.gc();
-            Thread.sleep(100);
-        }
-    }
-
-    public static void assertStaticHelperClass(Class<?> clz) throws Exception {
-        Constructor<?>[] constructors = clz.getDeclaredConstructors();
-        assertEquals(clz.getName() + " constructor count", 1, constructors.length);
-        assertEquals(clz.getName() + " private declared constructor", 1 << Constructor.DECLARED, constructors[0].getModifiers() & ~(1 << Constructor.PUBLIC) & (1 << Constructor.DECLARED));
-        constructors[0].setAccessible(true);
-        constructors[0].newInstance();
-    }
-
-    public static void assertComparison(String label, int wanted, int result) {
-        if (wanted == 0) {
-            assertEquals(label, wanted, result);
-        } else {
-            assertEquals(label, wanted, result / Math.abs(result));
-        }
-    }
-
-    public static <V, E extends Exception> void assertFuture(String label, Future<V> future, V wanted, boolean interruptable, Class<E> thrownClass, String thrownMessage) {
-        try {
-            assertEquals(label + ": future return", wanted, future.get());
-        } catch (InterruptedException e) {
-            assertTrue(label + ": expected interruption", interruptable);
-        } catch (ExecutionException e) {
-            assertNotNull(label + ": expecting an exception", thrownClass);
-            Throwable caught = e.getCause();
-            assertNotNull(label + ": captured exception", caught);
-            assertEquals(label + ": correct thrown class", thrownClass, caught.getClass());
-            if (thrownMessage != null) {
-                assertEquals(label + ": exception message", thrownMessage, caught.getMessage());
-            }
-        }
-    }
-
-    public static <T> void assertNotEquals(Object wanted, Object got) {
-        assertNotEquals(null, wanted, got);
-    }
-
-    public static <T> void assertNotEquals(String msg, Object wanted, Object got) {
-        if (wanted == null) {
-            if (got != null) {
-                return;
-            }
-            failEquals(msg, wanted, got);
-        } else if (wanted.equals(got)) {
-            failEquals(msg, wanted, got);
-        }
-    }
-
-    private static void failEquals(String msg, Object wanted, Object got) {
-        StringBuilder sb = new StringBuilder();
-        if (msg != null) {
-            sb.append(msg).append(' ');
-        }
-        sb.append(" expected value: ").append(wanted);
-        sb.append(" actual value: ").append(got);
-        fail(sb.toString());
-    }
-
-    public static <T> void assertEquals(List<T> wanted, Object got) {
-        assertEquals(null, wanted, got);
-    }
-
-    public static <T> void assertEquals(String msg, List<T> wanted, Object got) {
-        msg = msg == null ? "" : msg + ' ';
-        assertNotNull(msg + "expected a value", got);
-        if (got.getClass().isArray()) {
-            assertEqualsListArray(msg, wanted, got);
-            return;
-        }
-        if (!(got instanceof Collection<?>)) fail(msg + "expected a collection, got a " + got.getClass());
-        Iterator<T> leftIt = wanted.iterator();
-        Iterator<?> rightIt = ((Collection<?>) got).iterator();
-        int i = 0;
-        while (leftIt.hasNext() && rightIt.hasNext()) {
-            T left = leftIt.next();
-            Object right = rightIt.next();
-            assertEquals(msg + "item " + i, left, right);
-            i++;
-        }
-        assertFalse(msg + "not enough items", leftIt.hasNext());
-        assertFalse(msg + "too many items", rightIt.hasNext());
-    }
-
-    public static <T> void assertEquals(Collection<T> wanted, Object got) {
-        assertEquals(null, wanted, got);
-    }
-
-    public static <T> void assertEquals(String msg, Collection<T> wanted, Object got) {
-        if (wanted instanceof List<?> || wanted instanceof Set<?>) {
-            // list.equals(list) and set.equals(set), see docs for Collection.equals
-            if (got instanceof Set<?>) fail("Not a collection, is a set");
-            if (got instanceof List<?>) fail("Not a collection, is a list");
-        }
-        if (wanted.equals(got)) return;
-        if (!(got instanceof Collection<?>)) fail(msg + "not a collection");
-        // Need to check the reverse, wanted may not implement equals,
-        // which is the case for HashMap.values()
-        if (got.equals(wanted)) return;
-        msg = msg == null ? "" : msg + ' ';
-        assertNotNull(msg + "expected a value", got);
-        List<T> list = new ArrayList<T>(wanted);
-        Iterator<?> rightIt = ((Collection<?>) got).iterator();
-OUTER:
-        while (rightIt.hasNext()) {
-            Object right = rightIt.next();
-            for (int i = 0; i < list.size(); i++) {
-                T left = list.get(i);
-                if (left == null) {
-                    if (right == null) {
-                        list.remove(i);
-                        continue OUTER;
-                    }
-                } else if (left.equals(right)) {
-                    list.remove(i);
-                    continue OUTER;
-                }
-            }
-            fail(msg + "couldn't find " + right);
-        }
-        if (!list.isEmpty()) fail(msg + "not enough items: " + list);
-    }
-
-    public static <T> void assertEquals(Set<T> wanted, Object got) {
-        assertEquals(null, wanted, got);
-    }
-
-    public static <T> void assertEquals(String msg, Set<T> wanted, Object got) {
-        if (wanted.equals(got)) return;
-        if (!(got instanceof Set<?>)) fail(msg + "not a set");
-        // Need to check the reverse, wanted may not implement equals,
-        // which is the case for HashMap.values()
-        if (got.equals(wanted)) return;
-        msg = msg == null ? "" : msg + ' ';
-        assertNotNull(msg + "expected a value", got);
-        Set<T> wantedSet = new HashSet<T>(wanted);
-        Iterator<?> rightIt = ((Set<?>) got).iterator();
-        while (rightIt.hasNext()) {
-            Object right = rightIt.next();
-            if (wantedSet.contains(right)) {
-                wantedSet.remove(right);
-            } else {
-                fail(msg + "couldn't find " + right);
-            }
-        }
-        if (!wantedSet.isEmpty()) fail(msg + "not enough items: " + wantedSet);
-    }
-
-    private static <T> void assertEqualsArrayArray(String msg, Object wanted, Object got) {
-        int i = 0;
-        while (i < Array.getLength(wanted) && i < Array.getLength(got)) {
-            Object left = Array.get(wanted, i);
-            Object right = Array.get(got, i);
-            assertEquals(msg + "item " + i, left, right);
-            i++;
-        }
-        assertFalse(msg + "not enough items", i < Array.getLength(wanted));
-        assertFalse(msg + "too many items", i < Array.getLength(got));
-    }
-
-    private static <T> void assertEqualsArrayList(String msg, Object wanted, List<T> got) {
-        Iterator<T> rightIt = got.iterator();
-        int i = 0;
-        while (i < Array.getLength(wanted) && rightIt.hasNext()) {
-            Object left = Array.get(wanted, i);
-            T right = rightIt.next();
-            assertEquals(msg + "item " + i, left, right);
-            i++;
-        }
-        assertFalse(msg + "too enough items", i < Array.getLength(wanted));
-        assertFalse(msg + "not many items", rightIt.hasNext());
-    }
-
-    private static <T> void assertEqualsListArray(String msg, List<T> wanted, Object got) {
-        Iterator<T> leftIt = wanted.iterator();
-        int i = 0;
-        while (leftIt.hasNext() && i < Array.getLength(got)) {
-            T left = leftIt.next();
-            Object right = Array.get(got, i);
-            assertEquals(msg + "item " + i, left, right);
-            i++;
-        }
-        assertFalse(msg + "not enough items", leftIt.hasNext());
-        assertFalse(msg + "too many items", i < Array.getLength(got));
-    }
-
-    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, I got) {
-        assertEqualsIterable(label, wanted, 0, got, 0);
-    }
-
-    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, int wantedExtra, I got, int gotExtra) {
-        Iterator<? extends V> wantedIt = wanted.iterator();
-        Iterator<V> gotIt = got.iterator();
-        while (wantedIt.hasNext() && gotIt.hasNext()) {
-            assertEquals(label + ":iterate", wantedIt.next(), gotIt.next());
-        }
-        while (wantedExtra > 0) {
-            assertTrue(label + ":wanted-extra(" + wantedExtra + ")", wantedIt.hasNext());
-            wantedExtra--;
-        }
-        assertFalse(label + ":wanted-done", wantedIt.hasNext());
-        while (gotExtra > 0) {
-            assertTrue(label + ":got-extra(" + gotExtra + ")", gotIt.hasNext());
-            gotExtra--;
-        }
-        assertFalse(label + ":got-done", gotIt.hasNext());
-    }
-
-    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, List<? extends V> wantedExtra, I got, List<? extends V> gotExtra) {
-        assertEqualsIterable(label, wanted, wantedExtra, false, got, gotExtra, false);
-    }
-
-    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, List<? extends V> wantedExtra, boolean removeWanted, I got, List<? extends V> gotExtra, boolean removeGot) {
-        Iterator<? extends V> wantedIt = wanted.iterator();
-        Iterator<V> gotIt = got.iterator();
-        while (wantedIt.hasNext() && gotIt.hasNext()) {
-            assertEquals(label + ":iterate", wantedIt.next(), gotIt.next());
-        }
-        while (wantedExtra.size() > 0) {
-            assertTrue(label + ":wanted-extra(" + wantedExtra + ")-hasNext", wantedIt.hasNext());
-            assertEquals(label + ":wanted-extra(" + wantedExtra + ")", wantedExtra.remove(0), wantedIt.next());
-            if (removeWanted) {
-                wantedIt.remove();
-            }
-        }
-        assertFalse(label + ":wanted-done", wantedIt.hasNext());
-        while (gotExtra.size() > 0) {
-            assertTrue(label + ":got-extra(" + gotExtra + ")-hasNext", gotIt.hasNext());
-            assertEquals(label + ":got-extra(" + gotExtra + ")", gotExtra.remove(0), gotIt.next());
-            if (removeGot) {
-                gotIt.remove();
-            }
-        }
-        assertFalse(label + ":got-done", gotIt.hasNext());
-    }
-
-    public static <T> void assertEquals(Map<T, ?> wanted, Object got) {
-        assertEquals(null, wanted, got);
-    }
-
-    public static <T> void assertEquals(String msg, Map<T, ?> wanted, Object got) {
-        msg = msg == null ? "" : msg + ' ';
-        assertNotNull(msg + "expected a value", got);
-        if (!(got instanceof Map<?, ?>)) fail(msg + "expected a map");
-        Map<?, ?> gotMap = (Map<?, ?>) got;
-        if (!got.equals(wanted)) {
-            Set<T> leftKeys = new LinkedHashSet<T>(wanted.keySet());
-            HashSet<Object> rightKeys = new HashSet<Object>(gotMap.keySet());
-            for (T key: leftKeys) {
-                assertTrue(msg + "got key(" + key + ")", rightKeys.remove(key));
-                assertEquals(msg + "key(" + key + ") value", wanted.get(key), gotMap.get(key));
-            }
-            assertTrue(msg + "extra entries", rightKeys.isEmpty());
-        }
-    }
-
-    public static void assertEquals(String msg, String wanted, String got) {
-        TestCase.assertEquals(msg, wanted, got);
-    }
-
-    public static void assertEquals(Object wanted, Object got) {
-        assertEquals(null, wanted, got);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static void assertEquals(String msg, Object wanted, Object got) {
-        if (wanted instanceof List) {
-            assertEquals(msg, (List<?>) wanted, got);
-        } else if (wanted instanceof Map) {
-            assertEquals(msg, (Map<?, ?>) wanted, got);
-        } else if (wanted == null) {
-            TestCase.assertEquals(msg, wanted, got);
-        } else if (wanted instanceof Set) {
-            assertEquals(msg, (Set<?>) wanted, got);
-        } else if (wanted instanceof Collection) {
-            assertEquals(msg, (Collection<?>) wanted, got);
-        } else if (wanted.getClass().isArray()) {
-            if (got == null) {
-                TestCase.assertEquals(msg, wanted, got);
-            } else if (got.getClass().isArray()) {
-                assertEqualsArrayArray(msg, wanted, got);
-            } else if (got instanceof List) {
-                assertEqualsArrayList(msg, wanted, (List) got);
-            } else {
-                TestCase.assertEquals(msg, wanted, got);
-            }
-        } else {
-            TestCase.assertEquals(msg, wanted, got);
-        }
-    }
-
-    public static <T> List<T> list(T value) {
-        ArrayList<T> list = new ArrayList<T>(1);
-        list.add(value);
-        return list;
-    }
-
-    public static <T> List<T> list(T... list) {
-        return new ArrayList<T>(Arrays.asList(list));
-    }
-
-    public static <T> Set<T> set(T value) {
-        HashSet<T> set = new HashSet<T>(1);
-        set.add(value);
-        return set;
-    }
-
-    public static <T> Set<T> set(T... list) {
-        return new HashSet<T>(Arrays.asList(list));
-    }
-
-    public static <T> Set<T> set(Iterable<T> iterable) {
-        return set(iterable.iterator());
-    }
-
-    public static <T> Set<T> set(Iterator<T> it) {
-        HashSet<T> set = new HashSet<T>();
-        while (it.hasNext()) {
-            T item = it.next();
-            set.add(item);
-        }
-        return set;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <K, V> Map<K, V> map(Object... list) {
-        assertEquals("list has even number of elements", 0, list.length % 2);
-        Map<K, V> map = new LinkedHashMap<K, V>();
-        for (int i = 0; i < list.length; i += 2) {
-            map.put((K) list[i], (V) list[i + 1]);
-        }
-        return map;
-    }
-}
+/*******************************************************************************
+ * 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.ofbiz.base.test;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import junit.framework.TestCase;
+
+// This class can not use any other ofbiz helper methods, because it
+// may be used to test those helper methods.
+public abstract class GenericTestCaseBase extends TestCase {
+    protected GenericTestCaseBase(String name) {
+        super(name);
+    }
+
+    public static void useAllMemory() throws Exception {
+        LinkedList<long[]> dummy = new LinkedList<long[]>();
+        try {
+            do {
+                dummy.add(new long[1048576]);
+            } while (true);
+        } catch (OutOfMemoryError e) {
+            System.gc();
+            Thread.sleep(100);
+        }
+    }
+
+    public static void assertStaticHelperClass(Class<?> clz) throws Exception {
+        Constructor<?>[] constructors = clz.getDeclaredConstructors();
+        assertEquals(clz.getName() + " constructor count", 1, constructors.length);
+        assertEquals(clz.getName() + " private declared constructor", 1 << Constructor.DECLARED, constructors[0].getModifiers() & ~(1 << Constructor.PUBLIC) & (1 << Constructor.DECLARED));
+        constructors[0].setAccessible(true);
+        constructors[0].newInstance();
+    }
+
+    public static void assertComparison(String label, int wanted, int result) {
+        if (wanted == 0) {
+            assertEquals(label, wanted, result);
+        } else {
+            assertEquals(label, wanted, result / Math.abs(result));
+        }
+    }
+
+    public static <V, E extends Exception> void assertFuture(String label, Future<V> future, V wanted, boolean interruptable, Class<E> thrownClass, String thrownMessage) {
+        try {
+            assertEquals(label + ": future return", wanted, future.get());
+        } catch (InterruptedException e) {
+            assertTrue(label + ": expected interruption", interruptable);
+        } catch (ExecutionException e) {
+            assertNotNull(label + ": expecting an exception", thrownClass);
+            Throwable caught = e.getCause();
+            assertNotNull(label + ": captured exception", caught);
+            assertEquals(label + ": correct thrown class", thrownClass, caught.getClass());
+            if (thrownMessage != null) {
+                assertEquals(label + ": exception message", thrownMessage, caught.getMessage());
+            }
+        }
+    }
+
+    public static <T> void assertNotEquals(Object wanted, Object got) {
+        assertNotEquals(null, wanted, got);
+    }
+
+    public static <T> void assertNotEquals(String msg, Object wanted, Object got) {
+        if (wanted == null) {
+            if (got != null) {
+                return;
+            }
+            failEquals(msg, wanted, got);
+        } else if (wanted.equals(got)) {
+            failEquals(msg, wanted, got);
+        }
+    }
+
+    private static void failEquals(String msg, Object wanted, Object got) {
+        StringBuilder sb = new StringBuilder();
+        if (msg != null) {
+            sb.append(msg).append(' ');
+        }
+        sb.append(" expected value: ").append(wanted);
+        sb.append(" actual value: ").append(got);
+        fail(sb.toString());
+    }
+
+    public static <T> void assertEquals(List<T> wanted, Object got) {
+        assertEquals(null, wanted, got);
+    }
+
+    public static <T> void assertEquals(String msg, List<T> wanted, Object got) {
+        msg = msg == null ? "" : msg + ' ';
+        assertNotNull(msg + "expected a value", got);
+        if (got.getClass().isArray()) {
+            assertEqualsListArray(msg, wanted, got);
+            return;
+        }
+        if (!(got instanceof Collection<?>)) fail(msg + "expected a collection, got a " + got.getClass());
+        Iterator<T> leftIt = wanted.iterator();
+        Iterator<?> rightIt = ((Collection<?>) got).iterator();
+        int i = 0;
+        while (leftIt.hasNext() && rightIt.hasNext()) {
+            T left = leftIt.next();
+            Object right = rightIt.next();
+            assertEquals(msg + "item " + i, left, right);
+            i++;
+        }
+        assertFalse(msg + "not enough items", leftIt.hasNext());
+        assertFalse(msg + "too many items", rightIt.hasNext());
+    }
+
+    public static <T> void assertEquals(Collection<T> wanted, Object got) {
+        assertEquals(null, wanted, got);
+    }
+
+    public static <T> void assertEquals(String msg, Collection<T> wanted, Object got) {
+        if (wanted instanceof List<?> || wanted instanceof Set<?>) {
+            // list.equals(list) and set.equals(set), see docs for Collection.equals
+            if (got instanceof Set<?>) fail("Not a collection, is a set");
+            if (got instanceof List<?>) fail("Not a collection, is a list");
+        }
+        if (wanted.equals(got)) return;
+        if (!(got instanceof Collection<?>)) fail(msg + "not a collection");
+        // Need to check the reverse, wanted may not implement equals,
+        // which is the case for HashMap.values()
+        if (got.equals(wanted)) return;
+        msg = msg == null ? "" : msg + ' ';
+        assertNotNull(msg + "expected a value", got);
+        List<T> list = new ArrayList<T>(wanted);
+        Iterator<?> rightIt = ((Collection<?>) got).iterator();
+OUTER:
+        while (rightIt.hasNext()) {
+            Object right = rightIt.next();
+            for (int i = 0; i < list.size(); i++) {
+                T left = list.get(i);
+                if (left == null) {
+                    if (right == null) {
+                        list.remove(i);
+                        continue OUTER;
+                    }
+                } else if (left.equals(right)) {
+                    list.remove(i);
+                    continue OUTER;
+                }
+            }
+            fail(msg + "couldn't find " + right);
+        }
+        if (!list.isEmpty()) fail(msg + "not enough items: " + list);
+    }
+
+    public static <T> void assertEquals(Set<T> wanted, Object got) {
+        assertEquals(null, wanted, got);
+    }
+
+    public static <T> void assertEquals(String msg, Set<T> wanted, Object got) {
+        if (wanted.equals(got)) return;
+        if (!(got instanceof Set<?>)) fail(msg + "not a set");
+        // Need to check the reverse, wanted may not implement equals,
+        // which is the case for HashMap.values()
+        if (got.equals(wanted)) return;
+        msg = msg == null ? "" : msg + ' ';
+        assertNotNull(msg + "expected a value", got);
+        Set<T> wantedSet = new HashSet<T>(wanted);
+        Iterator<?> rightIt = ((Set<?>) got).iterator();
+        while (rightIt.hasNext()) {
+            Object right = rightIt.next();
+            if (wantedSet.contains(right)) {
+                wantedSet.remove(right);
+            } else {
+                fail(msg + "couldn't find " + right);
+            }
+        }
+        if (!wantedSet.isEmpty()) fail(msg + "not enough items: " + wantedSet);
+    }
+
+    private static <T> void assertEqualsArrayArray(String msg, Object wanted, Object got) {
+        int i = 0;
+        while (i < Array.getLength(wanted) && i < Array.getLength(got)) {
+            Object left = Array.get(wanted, i);
+            Object right = Array.get(got, i);
+            assertEquals(msg + "item " + i, left, right);
+            i++;
+        }
+        assertFalse(msg + "not enough items", i < Array.getLength(wanted));
+        assertFalse(msg + "too many items", i < Array.getLength(got));
+    }
+
+    private static <T> void assertEqualsArrayList(String msg, Object wanted, List<T> got) {
+        Iterator<T> rightIt = got.iterator();
+        int i = 0;
+        while (i < Array.getLength(wanted) && rightIt.hasNext()) {
+            Object left = Array.get(wanted, i);
+            T right = rightIt.next();
+            assertEquals(msg + "item " + i, left, right);
+            i++;
+        }
+        assertFalse(msg + "too enough items", i < Array.getLength(wanted));
+        assertFalse(msg + "not many items", rightIt.hasNext());
+    }
+
+    private static <T> void assertEqualsListArray(String msg, List<T> wanted, Object got) {
+        Iterator<T> leftIt = wanted.iterator();
+        int i = 0;
+        while (leftIt.hasNext() && i < Array.getLength(got)) {
+            T left = leftIt.next();
+            Object right = Array.get(got, i);
+            assertEquals(msg + "item " + i, left, right);
+            i++;
+        }
+        assertFalse(msg + "not enough items", leftIt.hasNext());
+        assertFalse(msg + "too many items", i < Array.getLength(got));
+    }
+
+    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, I got) {
+        assertEqualsIterable(label, wanted, 0, got, 0);
+    }
+
+    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, int wantedExtra, I got, int gotExtra) {
+        Iterator<? extends V> wantedIt = wanted.iterator();
+        Iterator<V> gotIt = got.iterator();
+        while (wantedIt.hasNext() && gotIt.hasNext()) {
+            assertEquals(label + ":iterate", wantedIt.next(), gotIt.next());
+        }
+        while (wantedExtra > 0) {
+            assertTrue(label + ":wanted-extra(" + wantedExtra + ")", wantedIt.hasNext());
+            wantedExtra--;
+        }
+        assertFalse(label + ":wanted-done", wantedIt.hasNext());
+        while (gotExtra > 0) {
+            assertTrue(label + ":got-extra(" + gotExtra + ")", gotIt.hasNext());
+            gotExtra--;
+        }
+        assertFalse(label + ":got-done", gotIt.hasNext());
+    }
+
+    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, List<? extends V> wantedExtra, I got, List<? extends V> gotExtra) {
+        assertEqualsIterable(label, wanted, wantedExtra, false, got, gotExtra, false);
+    }
+
+    public static <V, I extends Iterable<V>> void assertEqualsIterable(String label, List<? extends V> wanted, List<? extends V> wantedExtra, boolean removeWanted, I got, List<? extends V> gotExtra, boolean removeGot) {
+        Iterator<? extends V> wantedIt = wanted.iterator();
+        Iterator<V> gotIt = got.iterator();
+        while (wantedIt.hasNext() && gotIt.hasNext()) {
+            assertEquals(label + ":iterate", wantedIt.next(), gotIt.next());
+        }
+        while (wantedExtra.size() > 0) {
+            assertTrue(label + ":wanted-extra(" + wantedExtra + ")-hasNext", wantedIt.hasNext());
+            assertEquals(label + ":wanted-extra(" + wantedExtra + ")", wantedExtra.remove(0), wantedIt.next());
+            if (removeWanted) {
+                wantedIt.remove();
+            }
+        }
+        assertFalse(label + ":wanted-done", wantedIt.hasNext());
+        while (gotExtra.size() > 0) {
+            assertTrue(label + ":got-extra(" + gotExtra + ")-hasNext", gotIt.hasNext());
+            assertEquals(label + ":got-extra(" + gotExtra + ")", gotExtra.remove(0), gotIt.next());
+            if (removeGot) {
+                gotIt.remove();
+            }
+        }
+        assertFalse(label + ":got-done", gotIt.hasNext());
+    }
+
+    public static <T> void assertEquals(Map<T, ?> wanted, Object got) {
+        assertEquals(null, wanted, got);
+    }
+
+    public static <T> void assertEquals(String msg, Map<T, ?> wanted, Object got) {
+        msg = msg == null ? "" : msg + ' ';
+        assertNotNull(msg + "expected a value", got);
+        if (!(got instanceof Map<?, ?>)) fail(msg + "expected a map");
+        Map<?, ?> gotMap = (Map<?, ?>) got;
+        if (!got.equals(wanted)) {
+            Set<T> leftKeys = new LinkedHashSet<T>(wanted.keySet());
+            HashSet<Object> rightKeys = new HashSet<Object>(gotMap.keySet());
+            for (T key: leftKeys) {
+                assertTrue(msg + "got key(" + key + ")", rightKeys.remove(key));
+                assertEquals(msg + "key(" + key + ") value", wanted.get(key), gotMap.get(key));
+            }
+            assertTrue(msg + "extra entries", rightKeys.isEmpty());
+        }
+    }
+
+    public static void assertEquals(String msg, String wanted, String got) {
+        TestCase.assertEquals(msg, wanted, got);
+    }
+
+    public static void assertEquals(Object wanted, Object got) {
+        assertEquals(null, wanted, got);
+    }
+
+    @SuppressWarnings("unchecked")
+    public static void assertEquals(String msg, Object wanted, Object got) {
+        if (wanted instanceof List) {
+            assertEquals(msg, (List<?>) wanted, got);
+        } else if (wanted instanceof Map) {
+            assertEquals(msg, (Map<?, ?>) wanted, got);
+        } else if (wanted == null) {
+            TestCase.assertEquals(msg, wanted, got);
+        } else if (wanted instanceof Set) {
+            assertEquals(msg, (Set<?>) wanted, got);
+        } else if (wanted instanceof Collection) {
+            assertEquals(msg, (Collection<?>) wanted, got);
+        } else if (wanted.getClass().isArray()) {
+            if (got == null) {
+                TestCase.assertEquals(msg, wanted, got);
+            } else if (got.getClass().isArray()) {
+                assertEqualsArrayArray(msg, wanted, got);
+            } else if (got instanceof List) {
+                assertEqualsArrayList(msg, wanted, (List) got);
+            } else {
+                TestCase.assertEquals(msg, wanted, got);
+            }
+        } else {
+            TestCase.assertEquals(msg, wanted, got);
+        }
+    }
+
+    public static <T> List<T> list(T value) {
+        ArrayList<T> list = new ArrayList<T>(1);
+        list.add(value);
+        return list;
+    }
+
+    public static <T> List<T> list(T... list) {
+        return new ArrayList<T>(Arrays.asList(list));
+    }
+
+    public static <T> Set<T> set(T value) {
+        HashSet<T> set = new HashSet<T>(1);
+        set.add(value);
+        return set;
+    }
+
+    public static <T> Set<T> set(T... list) {
+        return new HashSet<T>(Arrays.asList(list));
+    }
+
+    public static <T> Set<T> set(Iterable<T> iterable) {
+        return set(iterable.iterator());
+    }
+
+    public static <T> Set<T> set(Iterator<T> it) {
+        HashSet<T> set = new HashSet<T>();
+        while (it.hasNext()) {
+            T item = it.next();
+            set.add(item);
+        }
+        return set;
+    }
+
+    @SuppressWarnings("unchecked")
+    public static <K, V> Map<K, V> map(Object... list) {
+        assertEquals("list has even number of elements", 0, list.length % 2);
+        Map<K, V> map = new LinkedHashMap<K, V>();
+        for (int i = 0; i < list.length; i += 2) {
+            map.put((K) list[i], (V) list[i + 1]);
+        }
+        return map;
+    }
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/test/GenericTestCaseBase.java
            ('svn:eol-style' removed)

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/IndentingWriter.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/IndentingWriter.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/IndentingWriter.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/IndentingWriter.java Mon Aug 10 16:15:37 2015
@@ -1,132 +1,132 @@
-/*******************************************************************************
- * 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.ofbiz.base.util;
-
-import java.io.IOException;
-import java.io.FilterWriter;
-import java.io.Writer;
-
-import org.ofbiz.base.lang.SourceMonitored;
-
-@SourceMonitored
-public class IndentingWriter extends FilterWriter {
-    protected final StringBuilder indent = new StringBuilder();
-    protected final boolean doSpace;
-    protected final boolean doNewline;
-    protected boolean lastWasNewline;
-
-    public static IndentingWriter makeIndentingWriter(Writer writer) {
-        return writer instanceof IndentingWriter ? (IndentingWriter) writer : new IndentingWriter(writer);
-    }
-
-    public IndentingWriter(Writer out, boolean doSpace, boolean doNewline) {
-        super(out);
-        this.doSpace = doSpace;
-        this.doNewline = doNewline;
-    }
-
-    public IndentingWriter(Writer out) {
-        this(out, true, true);
-    }
-
-    public IndentingWriter newline() throws IOException {
-        lastWasNewline = true;
-        if (doNewline) super.write('\n');
-        return this;
-    }
-
-    protected void checkAfterNewline() throws IOException {
-        if (lastWasNewline) {
-            if (doSpace) {
-                if (doNewline) {
-                    super.write(indent.toString(), 0, indent.length());
-                } else {
-                    super.write(' ');
-                }
-            }
-            lastWasNewline = false;
-        }
-    }
-
-    public IndentingWriter push() {
-        indent.append(' ');
-        return this;
-    }
-
-    public IndentingWriter pop() {
-        indent.setLength(indent.length() - 1);
-        return this;
-    }
-
-    public IndentingWriter space() throws IOException {
-        checkAfterNewline();
-        if (doSpace) super.write(' ');
-        return this;
-    }
-
-    @Override
-    public void write(char[] buf) throws IOException {
-        write(buf, 0, buf.length);
-    }
-
-    @Override
-    public void write(char[] buf, int offset, int length) throws IOException {
-        int i;
-        for (i = offset; i < length; i++) {
-            if (buf[i] == '\n') {
-                checkAfterNewline();
-                super.write(buf, offset, i - offset + 1);
-                offset = i + 1;
-                lastWasNewline = true;
-            }
-        }
-        checkAfterNewline();
-        super.write(buf, offset, i - offset);
-    }
-
-    @Override
-    public void write(int c) throws IOException {
-        checkAfterNewline();
-        super.write(c);
-        if (c == '\n') {
-            lastWasNewline = true;
-            checkAfterNewline();
-        }
-    }
-
-    @Override
-    public void write(String s) throws IOException {
-        write(s, 0, s.length());
-    }
-
-    @Override
-    public void write(String s, int offset, int length) throws IOException {
-        int i;
-        for (i = offset; i < length; i++) {
-            if (s.charAt(i) == '\n') {
-                checkAfterNewline();
-                super.write(s, offset, i - offset + 1);
-                offset = i + 1;
-                lastWasNewline = true;
-            }
-        }
-        checkAfterNewline();
-        super.write(s, offset, i - offset);
-    }
-}
+/*******************************************************************************
+ * 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.ofbiz.base.util;
+
+import java.io.IOException;
+import java.io.FilterWriter;
+import java.io.Writer;
+
+import org.ofbiz.base.lang.SourceMonitored;
+
+@SourceMonitored
+public class IndentingWriter extends FilterWriter {
+    protected final StringBuilder indent = new StringBuilder();
+    protected final boolean doSpace;
+    protected final boolean doNewline;
+    protected boolean lastWasNewline;
+
+    public static IndentingWriter makeIndentingWriter(Writer writer) {
+        return writer instanceof IndentingWriter ? (IndentingWriter) writer : new IndentingWriter(writer);
+    }
+
+    public IndentingWriter(Writer out, boolean doSpace, boolean doNewline) {
+        super(out);
+        this.doSpace = doSpace;
+        this.doNewline = doNewline;
+    }
+
+    public IndentingWriter(Writer out) {
+        this(out, true, true);
+    }
+
+    public IndentingWriter newline() throws IOException {
+        lastWasNewline = true;
+        if (doNewline) super.write('\n');
+        return this;
+    }
+
+    protected void checkAfterNewline() throws IOException {
+        if (lastWasNewline) {
+            if (doSpace) {
+                if (doNewline) {
+                    super.write(indent.toString(), 0, indent.length());
+                } else {
+                    super.write(' ');
+                }
+            }
+            lastWasNewline = false;
+        }
+    }
+
+    public IndentingWriter push() {
+        indent.append(' ');
+        return this;
+    }
+
+    public IndentingWriter pop() {
+        indent.setLength(indent.length() - 1);
+        return this;
+    }
+
+    public IndentingWriter space() throws IOException {
+        checkAfterNewline();
+        if (doSpace) super.write(' ');
+        return this;
+    }
+
+    @Override
+    public void write(char[] buf) throws IOException {
+        write(buf, 0, buf.length);
+    }
+
+    @Override
+    public void write(char[] buf, int offset, int length) throws IOException {
+        int i;
+        for (i = offset; i < length; i++) {
+            if (buf[i] == '\n') {
+                checkAfterNewline();
+                super.write(buf, offset, i - offset + 1);
+                offset = i + 1;
+                lastWasNewline = true;
+            }
+        }
+        checkAfterNewline();
+        super.write(buf, offset, i - offset);
+    }
+
+    @Override
+    public void write(int c) throws IOException {
+        checkAfterNewline();
+        super.write(c);
+        if (c == '\n') {
+            lastWasNewline = true;
+            checkAfterNewline();
+        }
+    }
+
+    @Override
+    public void write(String s) throws IOException {
+        write(s, 0, s.length());
+    }
+
+    @Override
+    public void write(String s, int offset, int length) throws IOException {
+        int i;
+        for (i = offset; i < length; i++) {
+            if (s.charAt(i) == '\n') {
+                checkAfterNewline();
+                super.write(s, offset, i - offset + 1);
+                offset = i + 1;
+                lastWasNewline = true;
+            }
+        }
+        checkAfterNewline();
+        super.write(s, offset, i - offset);
+    }
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/IndentingWriter.java
            ('svn:eol-style' removed)

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/RMIExtendedSocketFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/RMIExtendedSocketFactory.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/RMIExtendedSocketFactory.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/RMIExtendedSocketFactory.java Mon Aug 10 16:15:37 2015
@@ -1,104 +1,104 @@
-/*******************************************************************************
- * 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.ofbiz.base.util;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.rmi.server.RMISocketFactory;
-
-/**
- * A <code>RMISocketFactory</code> implementation that creates <code>ServerSocket</code>s bound
- * on a specified network interface.  
- */
-public class RMIExtendedSocketFactory extends RMISocketFactory {
-    
-    /**
-     * The network interface to bind the <code>ServerSocket</code> to. If null than bind to all interfaces.
-     */
-    private InetAddress hostInetAddress;
-    
-    /**
-     * Default constructor. Bind the server sockets on all interfaces.
-     */
-    public RMIExtendedSocketFactory() {
-        // leave hostInetAddress null
-    }
-    
-    /**
-     * Creates a new <code>RMIExtendedSocketFactory</code> which will create <code>ServerSocket</code>s
-     * bound on the specified network interface.
-     *
-     * @param inetAddress The <code>InetAddress</code> of the network interface.
-     */
-    public RMIExtendedSocketFactory( InetAddress inetAddress ) {
-        this.hostInetAddress = inetAddress;
-    }
-
-    /**
-     * Creates a new <code>RMIExtendedSocketFactory</code> which will create <code>ServerSocket</code>s
-     * bound on the specified network interface.
-     *
-     * @param hostIpAddress The IP address of the interface to bind the server sockets to.
-     * @throws UnknownHostException If an invalid IP address is provided.
-     */
-    public RMIExtendedSocketFactory( String hostIpAddress ) throws UnknownHostException {
-        
-        // check if host length is at least equal to "0.0.0.0"
-        if ( hostIpAddress != null && hostIpAddress.length() >= 7 ) {
-            String[] octets = hostIpAddress.split( "\\." );
-            
-            if ( octets == null || octets.length != 4 ) {
-                throw new UnknownHostException( "Invalid IP address: " + hostIpAddress );
-            }
-            
-            byte[] ipAddr = new byte[4];
-            for ( int i = 0; i < octets.length; i++ ) {
-                try {
-                    ipAddr[i] = ( byte ) Integer.parseInt( octets[i] );
-                } catch ( NumberFormatException nfEx ) {
-                    throw new UnknownHostException( "Invalid IP address: " + hostIpAddress );
-                }
-            }
-            
-            hostInetAddress = InetAddress.getByAddress( ipAddr );
-            
-        }
-        
-        
-    }
-    
-    @Override
-    public ServerSocket createServerSocket(int port) throws IOException {
-        if ( hostInetAddress !=  null ) {
-            return new ServerSocket( port, 0, hostInetAddress );
-        } else {
-            return new ServerSocket( port );
-        }
-    }
-
-    @Override
-    public Socket createSocket(String host, int port) throws IOException {
-        
-        return new Socket( host, port );
-    }
-
-}
+/*******************************************************************************
+ * 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.ofbiz.base.util;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.rmi.server.RMISocketFactory;
+
+/**
+ * A <code>RMISocketFactory</code> implementation that creates <code>ServerSocket</code>s bound
+ * on a specified network interface.  
+ */
+public class RMIExtendedSocketFactory extends RMISocketFactory {
+    
+    /**
+     * The network interface to bind the <code>ServerSocket</code> to. If null than bind to all interfaces.
+     */
+    private InetAddress hostInetAddress;
+    
+    /**
+     * Default constructor. Bind the server sockets on all interfaces.
+     */
+    public RMIExtendedSocketFactory() {
+        // leave hostInetAddress null
+    }
+    
+    /**
+     * Creates a new <code>RMIExtendedSocketFactory</code> which will create <code>ServerSocket</code>s
+     * bound on the specified network interface.
+     *
+     * @param inetAddress The <code>InetAddress</code> of the network interface.
+     */
+    public RMIExtendedSocketFactory( InetAddress inetAddress ) {
+        this.hostInetAddress = inetAddress;
+    }
+
+    /**
+     * Creates a new <code>RMIExtendedSocketFactory</code> which will create <code>ServerSocket</code>s
+     * bound on the specified network interface.
+     *
+     * @param hostIpAddress The IP address of the interface to bind the server sockets to.
+     * @throws UnknownHostException If an invalid IP address is provided.
+     */
+    public RMIExtendedSocketFactory( String hostIpAddress ) throws UnknownHostException {
+        
+        // check if host length is at least equal to "0.0.0.0"
+        if ( hostIpAddress != null && hostIpAddress.length() >= 7 ) {
+            String[] octets = hostIpAddress.split( "\\." );
+            
+            if ( octets == null || octets.length != 4 ) {
+                throw new UnknownHostException( "Invalid IP address: " + hostIpAddress );
+            }
+            
+            byte[] ipAddr = new byte[4];
+            for ( int i = 0; i < octets.length; i++ ) {
+                try {
+                    ipAddr[i] = ( byte ) Integer.parseInt( octets[i] );
+                } catch ( NumberFormatException nfEx ) {
+                    throw new UnknownHostException( "Invalid IP address: " + hostIpAddress );
+                }
+            }
+            
+            hostInetAddress = InetAddress.getByAddress( ipAddr );
+            
+        }
+        
+        
+    }
+    
+    @Override
+    public ServerSocket createServerSocket(int port) throws IOException {
+        if ( hostInetAddress !=  null ) {
+            return new ServerSocket( port, 0, hostInetAddress );
+        } else {
+            return new ServerSocket( port );
+        }
+    }
+
+    @Override
+    public Socket createSocket(String host, int port) throws IOException {
+        
+        return new Socket( host, port );
+    }
+
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/RMIExtendedSocketFactory.java
            ('svn:eol-style' removed)

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ReferenceCleaner.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ReferenceCleaner.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ReferenceCleaner.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ReferenceCleaner.java Mon Aug 10 16:15:37 2015
@@ -1,89 +1,89 @@
-/*******************************************************************************
- * 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.ofbiz.base.util;
-
-import java.lang.ref.PhantomReference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
-
-public final class ReferenceCleaner {
-    public static final String module = ReferenceCleaner.class.getName();
-
-    private static final class CleanerThread extends Thread {
-        private boolean keepRunning = true;
-
-        protected CleanerThread() {
-            setDaemon(true);
-            setName("ReferenceCleaner");
-        }
-
-        protected void stopRunning() {
-            keepRunning = false;
-        }
-
-        @Override
-        public void run() {
-            while (keepRunning) {
-                try {
-                    ((Removable) QUEUE.remove()).remove();
-                } catch (Throwable t) {
-                    // ignore
-                }
-                if (interrupted()) {
-                    stopRunning();
-                    cleanerThread = new CleanerThread();
-                    cleanerThread.start();
-                }
-            }
-        }
-    }
-    private static CleanerThread cleanerThread = new CleanerThread();
-
-    static {
-        cleanerThread.start();
-    }
-
-    private ReferenceCleaner() {
-    }
-
-    private static final ReferenceQueue<Object> QUEUE = new ReferenceQueue<Object>();
-
-    public interface Removable {
-        void remove() throws Exception;
-    }
-
-    public abstract static class Soft<V> extends SoftReference<V> implements Removable {
-        public Soft(V value) {
-            super(value, QUEUE);
-        }
-    }
-
-    public abstract static class Phantom<V> extends PhantomReference<V> implements Removable {
-        public Phantom(V value) {
-            super(value, QUEUE);
-        }
-    }
-
-    public abstract static class Weak<V> extends WeakReference<V> implements Removable {
-        public Weak(V value) {
-            super(value, QUEUE);
-        }
-    }
-}
+/*******************************************************************************
+ * 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.ofbiz.base.util;
+
+import java.lang.ref.PhantomReference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.SoftReference;
+import java.lang.ref.WeakReference;
+
+public final class ReferenceCleaner {
+    public static final String module = ReferenceCleaner.class.getName();
+
+    private static final class CleanerThread extends Thread {
+        private boolean keepRunning = true;
+
+        protected CleanerThread() {
+            setDaemon(true);
+            setName("ReferenceCleaner");
+        }
+
+        protected void stopRunning() {
+            keepRunning = false;
+        }
+
+        @Override
+        public void run() {
+            while (keepRunning) {
+                try {
+                    ((Removable) QUEUE.remove()).remove();
+                } catch (Throwable t) {
+                    // ignore
+                }
+                if (interrupted()) {
+                    stopRunning();
+                    cleanerThread = new CleanerThread();
+                    cleanerThread.start();
+                }
+            }
+        }
+    }
+    private static CleanerThread cleanerThread = new CleanerThread();
+
+    static {
+        cleanerThread.start();
+    }
+
+    private ReferenceCleaner() {
+    }
+
+    private static final ReferenceQueue<Object> QUEUE = new ReferenceQueue<Object>();
+
+    public interface Removable {
+        void remove() throws Exception;
+    }
+
+    public abstract static class Soft<V> extends SoftReference<V> implements Removable {
+        public Soft(V value) {
+            super(value, QUEUE);
+        }
+    }
+
+    public abstract static class Phantom<V> extends PhantomReference<V> implements Removable {
+        public Phantom(V value) {
+            super(value, QUEUE);
+        }
+    }
+
+    public abstract static class Weak<V> extends WeakReference<V> implements Removable {
+        public Weak(V value) {
+            super(value, QUEUE);
+        }
+    }
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ReferenceCleaner.java
            ('svn:eol-style' removed)

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java Mon Aug 10 16:15:37 2015
@@ -1,318 +1,318 @@
-/*******************************************************************************
- * 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.ofbiz.base.util;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-
-import org.apache.commons.io.IOUtils;
-
-public final class UtilIO {
-    public static final Charset UTF8 = Charset.forName("UTF-8");
-    public static final String module = UtilIO.class.getName();
-
-    /** Copy an InputStream to an OutputStream, optionally closing either
-     *  the input or the output.
-     *
-     * @param in the InputStream to copy from
-     * @param closeIn whether to close the input when the copy is done
-     * @param out the OutputStream to copy to
-     * @param closeOut whether to close the output when the copy is done
-     * @throws IOException if an error occurs
-     */
-    public static void copy(InputStream in, boolean closeIn, OutputStream out, boolean closeOut) throws IOException {
-        try {
-            try {
-                IOUtils.copy(in, out);
-            } finally {
-                if (closeIn) IOUtils.closeQuietly(in);
-            }
-        } finally {
-            if (closeOut) IOUtils.closeQuietly(out);
-        }
-    }
-
-    /** Copy a Reader to a Writer, optionally closing either the input or
-     *  the output.
-     *
-     * @param reader the Reader to copy from
-     * @param closeIn whether to close the input when the copy is done
-     * @param writer the Writer to copy to
-     * @param closeOut whether to close the output when the copy is done
-     * @throws IOException if an error occurs
-     */
-    public static void copy(Reader reader, boolean closeIn, Writer writer, boolean closeOut) throws IOException {
-        try {
-            try {
-                IOUtils.copy(reader, writer);
-            } finally {
-                if (closeIn) IOUtils.closeQuietly(reader);
-            }
-        } finally {
-            if (closeOut) IOUtils.closeQuietly(writer);
-        }
-    }
-
-    /** Copy a Reader to an Appendable, optionally closing the input.
-     *
-     * @param reader the Reader to copy from
-     * @param closeIn whether to close the input when the copy is done
-     * @param out the Appendable to copy to
-     * @throws IOException if an error occurs
-     */
-    public static void copy(Reader reader, boolean closeIn, Appendable out) throws IOException {
-        try {
-            CharBuffer buffer = CharBuffer.allocate(4096);
-            while (reader.read(buffer) > 0) {
-                buffer.flip();
-                buffer.rewind();
-                out.append(buffer);
-            }
-        } finally {
-            if (closeIn) IOUtils.closeQuietly(reader);
-        }
-    }
-
-    /** Convert a byte array to a string; consistently uses \n line endings
-     * in java.  This uses a default {@link Charset UTF-8} charset.
-     *
-     * @param bytes the array of bytes to convert
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(byte[] bytes) throws IOException {
-        return readString(bytes, 0, bytes.length, UTF8);
-    }
-
-    /** Convert a byte array to a string; consistently uses \n line endings
-     * in java.  The conversion is limited to the specified offset/length
-     * pair, and uses a default {@link Charset UTF-8} charset.
-     *
-     * @param bytes the array of bytes to convert
-     * @param offset the start of the conversion
-     * @param length how many bytes to convert
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(byte[] bytes, int offset, int length) throws IOException {
-        return readString(bytes, offset, length, UTF8);
-    }
-
-    /** Convert a byte array to a string; consistently uses \n line endings
-     * in java.  The conversion is limited to the specified offset/length
-     * pair, and uses the requested charset to decode the bytes.
-     *
-     * @param bytes the array of bytes to convert
-     * @param charset the charset to use to convert the raw bytes
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(byte[] bytes, String charset) throws IOException {
-        return readString(bytes, 0, bytes.length, Charset.forName(charset));
-    }
-
-    /** Convert a byte array to a string; consistently uses \n line
-     * endings in java.  The conversion is limited to the specified
-     * offset/length  pair, and uses the requested charset to decode the
-     * bytes.
-     *
-     * @param bytes the array of bytes to convert
-     * @param offset the start of the conversion
-     * @param length how many bytes to convert
-     * @param charset the charset to use to convert the raw bytes
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(byte[] bytes, int offset, int length, String charset) throws IOException {
-        return readString(bytes, 0, bytes.length, Charset.forName(charset));
-    }
-
-    /** Convert a byte array to a string, consistently uses \n line
-     * endings in java.  The specified {@link Charset charset} is used
-     * to decode the bytes.
-     * @param bytes the array of bytes to convert
-     * @param charset the charset to use to convert the raw bytes
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(byte[] bytes, Charset charset) throws IOException {
-        return readString(bytes, 0, bytes.length, charset);
-    }
-
-    /** Convert a byte array to a string, consistently uses \n line
-     * endings in java.  The conversion is limited to the specified
-     * offset/length  pair, and uses the requested {@link Charset
-     * charset} to decode the bytes.
-     *
-     * @param bytes the array of bytes to convert
-     * @param offset the start of the conversion
-     * @param length how many bytes to convert
-     * @param charset the charset to use to convert the raw bytes
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(byte[] bytes, int offset, int length, Charset charset) throws IOException {
-        ByteBuffer buf = ByteBuffer.allocate(length);
-        buf.put(bytes, offset, length);
-        buf.flip();
-        return filterLineEndings(new StringBuilder(charset.decode(buf).toString())).toString();
-    }
-
-    /** Convert an {@link InputStream} to a string; consistently uses \n line endings
-     * in java.  This uses a default {@link Charset UTF-8} charset.
-     *
-     * @param stream the stream of bytes to convert
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(InputStream stream) throws IOException {
-        return readString(stream, UTF8);
-    }
-
-    /** Convert an {@link InputStream} to a string; consistently uses \n line endings
-     * in java.  This uses a default {@link Charset UTF-8} charset.
-     *
-     * @param stream the stream of bytes to convert
-     * @param charset the charset to use to convert the raw bytes
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(InputStream stream, String charset) throws IOException {
-        return readString(stream, Charset.forName(charset));
-    }
-
-    /** Convert an {@link InputStream} to a string; consistently uses \n line endings
-     * in java.  This uses a default {@link Charset UTF-8} charset.
-     *
-     * @param stream the stream of bytes to convert
-     * @param charset the charset to use to convert the raw bytes
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(InputStream stream, Charset charset) throws IOException {
-        return readString(new InputStreamReader(new BufferedInputStream(stream), charset));
-    }
-
-    /** Convert an {@link Reader} to a string; consistently uses \n line endings
-     * in java.
-     *
-     * @param reader the stream of characters convert
-     * @return the converted string, with platform line endings converted
-     * to \n
-     */
-    public static final String readString(Reader reader) throws IOException {
-        try {
-            StringBuilder sb = new StringBuilder();
-            char[] buf = new char[4096];
-            int r;
-            while ((r = reader.read(buf, 0, 4096)) > 0) {
-                sb.append(buf, 0, r);
-            }
-            return filterLineEndings(sb).toString();
-        } finally {
-            try {
-                reader.close();
-            } catch (IOException e) {
-                Debug.logError(e, "Error closing after reading text: " + e.toString(), module);
-            }
-        }
-    }
-
-    private static StringBuilder filterLineEndings(StringBuilder sb) {
-        String nl = System.getProperty("line.separator");
-        if (!nl.equals("\n")) {
-            int r = 0;
-            while (r < sb.length()) {
-                int i = sb.indexOf(nl, r);
-                if (i == -1) {
-                    break;
-                }
-                sb.replace(i, i + nl.length(), "\n");
-                r = i + 1;
-            }
-        }
-        return sb;
-    }
-
-    /** Convert a \n string to a platform encoding.  This uses a default
-     * {@link Charset UTF-8} charset.
-     *
-     * @param file where to write the converted bytes to
-     * @param value the value to write
-     */
-    public static void writeString(File file, String value) throws IOException {
-        writeString(new FileOutputStream(file), UTF8, value);
-    }
-
-    /** Convert a \n string to a platform encoding.  This uses a default
-     * {@link Charset UTF-8} charset.
-     *
-     * @param out where to write the converted bytes to
-     * @param value the value to write
-     */
-    public static void writeString(OutputStream out, String value) throws IOException {
-        writeString(out, UTF8, value);
-    }
-
-    /** Convert a \n string to a platform encoding.  This uses the
-     * specified charset to extract the raw bytes.
-     *
-     * @param out where to write the converted bytes to
-     * @param charset the charset to use to convert the raw bytes
-     * @param value the value to write
-     */
-    public static void writeString(OutputStream out, String charset, String value) throws IOException {
-        writeString(out, Charset.forName(charset), value);
-    }
-
-    /** Convert a \n string to a platform encoding.  This uses the
-     * specified charset to extract the raw bytes.
-     *
-     * @param out where to write the converted bytes to
-     * @param charset the charset to use to convert the raw bytes
-     * @param value the value to write
-     */
-    public static void writeString(OutputStream out, Charset charset, String value) throws IOException {
-        Writer writer = new OutputStreamWriter(out, charset);
-        String nl = System.getProperty("line.separator");
-        int r = 0;
-        while (r < value.length()) {
-            int i = value.indexOf("\n", r);
-            if (i == -1) {
-                break;
-            }
-            writer.write(value.substring(r, i));
-            writer.write(nl);
-            r = i + 1;
-        }
-        writer.write(value.substring(r));
-        writer.close();
-    }
-}
+/*******************************************************************************
+ * 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.ofbiz.base.util;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+
+import org.apache.commons.io.IOUtils;
+
+public final class UtilIO {
+    public static final Charset UTF8 = Charset.forName("UTF-8");
+    public static final String module = UtilIO.class.getName();
+
+    /** Copy an InputStream to an OutputStream, optionally closing either
+     *  the input or the output.
+     *
+     * @param in the InputStream to copy from
+     * @param closeIn whether to close the input when the copy is done
+     * @param out the OutputStream to copy to
+     * @param closeOut whether to close the output when the copy is done
+     * @throws IOException if an error occurs
+     */
+    public static void copy(InputStream in, boolean closeIn, OutputStream out, boolean closeOut) throws IOException {
+        try {
+            try {
+                IOUtils.copy(in, out);
+            } finally {
+                if (closeIn) IOUtils.closeQuietly(in);
+            }
+        } finally {
+            if (closeOut) IOUtils.closeQuietly(out);
+        }
+    }
+
+    /** Copy a Reader to a Writer, optionally closing either the input or
+     *  the output.
+     *
+     * @param reader the Reader to copy from
+     * @param closeIn whether to close the input when the copy is done
+     * @param writer the Writer to copy to
+     * @param closeOut whether to close the output when the copy is done
+     * @throws IOException if an error occurs
+     */
+    public static void copy(Reader reader, boolean closeIn, Writer writer, boolean closeOut) throws IOException {
+        try {
+            try {
+                IOUtils.copy(reader, writer);
+            } finally {
+                if (closeIn) IOUtils.closeQuietly(reader);
+            }
+        } finally {
+            if (closeOut) IOUtils.closeQuietly(writer);
+        }
+    }
+
+    /** Copy a Reader to an Appendable, optionally closing the input.
+     *
+     * @param reader the Reader to copy from
+     * @param closeIn whether to close the input when the copy is done
+     * @param out the Appendable to copy to
+     * @throws IOException if an error occurs
+     */
+    public static void copy(Reader reader, boolean closeIn, Appendable out) throws IOException {
+        try {
+            CharBuffer buffer = CharBuffer.allocate(4096);
+            while (reader.read(buffer) > 0) {
+                buffer.flip();
+                buffer.rewind();
+                out.append(buffer);
+            }
+        } finally {
+            if (closeIn) IOUtils.closeQuietly(reader);
+        }
+    }
+
+    /** Convert a byte array to a string; consistently uses \n line endings
+     * in java.  This uses a default {@link Charset UTF-8} charset.
+     *
+     * @param bytes the array of bytes to convert
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(byte[] bytes) throws IOException {
+        return readString(bytes, 0, bytes.length, UTF8);
+    }
+
+    /** Convert a byte array to a string; consistently uses \n line endings
+     * in java.  The conversion is limited to the specified offset/length
+     * pair, and uses a default {@link Charset UTF-8} charset.
+     *
+     * @param bytes the array of bytes to convert
+     * @param offset the start of the conversion
+     * @param length how many bytes to convert
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(byte[] bytes, int offset, int length) throws IOException {
+        return readString(bytes, offset, length, UTF8);
+    }
+
+    /** Convert a byte array to a string; consistently uses \n line endings
+     * in java.  The conversion is limited to the specified offset/length
+     * pair, and uses the requested charset to decode the bytes.
+     *
+     * @param bytes the array of bytes to convert
+     * @param charset the charset to use to convert the raw bytes
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(byte[] bytes, String charset) throws IOException {
+        return readString(bytes, 0, bytes.length, Charset.forName(charset));
+    }
+
+    /** Convert a byte array to a string; consistently uses \n line
+     * endings in java.  The conversion is limited to the specified
+     * offset/length  pair, and uses the requested charset to decode the
+     * bytes.
+     *
+     * @param bytes the array of bytes to convert
+     * @param offset the start of the conversion
+     * @param length how many bytes to convert
+     * @param charset the charset to use to convert the raw bytes
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(byte[] bytes, int offset, int length, String charset) throws IOException {
+        return readString(bytes, 0, bytes.length, Charset.forName(charset));
+    }
+
+    /** Convert a byte array to a string, consistently uses \n line
+     * endings in java.  The specified {@link Charset charset} is used
+     * to decode the bytes.
+     * @param bytes the array of bytes to convert
+     * @param charset the charset to use to convert the raw bytes
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(byte[] bytes, Charset charset) throws IOException {
+        return readString(bytes, 0, bytes.length, charset);
+    }
+
+    /** Convert a byte array to a string, consistently uses \n line
+     * endings in java.  The conversion is limited to the specified
+     * offset/length  pair, and uses the requested {@link Charset
+     * charset} to decode the bytes.
+     *
+     * @param bytes the array of bytes to convert
+     * @param offset the start of the conversion
+     * @param length how many bytes to convert
+     * @param charset the charset to use to convert the raw bytes
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(byte[] bytes, int offset, int length, Charset charset) throws IOException {
+        ByteBuffer buf = ByteBuffer.allocate(length);
+        buf.put(bytes, offset, length);
+        buf.flip();
+        return filterLineEndings(new StringBuilder(charset.decode(buf).toString())).toString();
+    }
+
+    /** Convert an {@link InputStream} to a string; consistently uses \n line endings
+     * in java.  This uses a default {@link Charset UTF-8} charset.
+     *
+     * @param stream the stream of bytes to convert
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(InputStream stream) throws IOException {
+        return readString(stream, UTF8);
+    }
+
+    /** Convert an {@link InputStream} to a string; consistently uses \n line endings
+     * in java.  This uses a default {@link Charset UTF-8} charset.
+     *
+     * @param stream the stream of bytes to convert
+     * @param charset the charset to use to convert the raw bytes
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(InputStream stream, String charset) throws IOException {
+        return readString(stream, Charset.forName(charset));
+    }
+
+    /** Convert an {@link InputStream} to a string; consistently uses \n line endings
+     * in java.  This uses a default {@link Charset UTF-8} charset.
+     *
+     * @param stream the stream of bytes to convert
+     * @param charset the charset to use to convert the raw bytes
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(InputStream stream, Charset charset) throws IOException {
+        return readString(new InputStreamReader(new BufferedInputStream(stream), charset));
+    }
+
+    /** Convert an {@link Reader} to a string; consistently uses \n line endings
+     * in java.
+     *
+     * @param reader the stream of characters convert
+     * @return the converted string, with platform line endings converted
+     * to \n
+     */
+    public static final String readString(Reader reader) throws IOException {
+        try {
+            StringBuilder sb = new StringBuilder();
+            char[] buf = new char[4096];
+            int r;
+            while ((r = reader.read(buf, 0, 4096)) > 0) {
+                sb.append(buf, 0, r);
+            }
+            return filterLineEndings(sb).toString();
+        } finally {
+            try {
+                reader.close();
+            } catch (IOException e) {
+                Debug.logError(e, "Error closing after reading text: " + e.toString(), module);
+            }
+        }
+    }
+
+    private static StringBuilder filterLineEndings(StringBuilder sb) {
+        String nl = System.getProperty("line.separator");
+        if (!nl.equals("\n")) {
+            int r = 0;
+            while (r < sb.length()) {
+                int i = sb.indexOf(nl, r);
+                if (i == -1) {
+                    break;
+                }
+                sb.replace(i, i + nl.length(), "\n");
+                r = i + 1;
+            }
+        }
+        return sb;
+    }
+
+    /** Convert a \n string to a platform encoding.  This uses a default
+     * {@link Charset UTF-8} charset.
+     *
+     * @param file where to write the converted bytes to
+     * @param value the value to write
+     */
+    public static void writeString(File file, String value) throws IOException {
+        writeString(new FileOutputStream(file), UTF8, value);
+    }
+
+    /** Convert a \n string to a platform encoding.  This uses a default
+     * {@link Charset UTF-8} charset.
+     *
+     * @param out where to write the converted bytes to
+     * @param value the value to write
+     */
+    public static void writeString(OutputStream out, String value) throws IOException {
+        writeString(out, UTF8, value);
+    }
+
+    /** Convert a \n string to a platform encoding.  This uses the
+     * specified charset to extract the raw bytes.
+     *
+     * @param out where to write the converted bytes to
+     * @param charset the charset to use to convert the raw bytes
+     * @param value the value to write
+     */
+    public static void writeString(OutputStream out, String charset, String value) throws IOException {
+        writeString(out, Charset.forName(charset), value);
+    }
+
+    /** Convert a \n string to a platform encoding.  This uses the
+     * specified charset to extract the raw bytes.
+     *
+     * @param out where to write the converted bytes to
+     * @param charset the charset to use to convert the raw bytes
+     * @param value the value to write
+     */
+    public static void writeString(OutputStream out, Charset charset, String value) throws IOException {
+        Writer writer = new OutputStreamWriter(out, charset);
+        String nl = System.getProperty("line.separator");
+        int r = 0;
+        while (r < value.length()) {
+            int i = value.indexOf("\n", r);
+            if (i == -1) {
+                break;
+            }
+            writer.write(value.substring(r, i));
+            writer.write(nl);
+            r = i + 1;
+        }
+        writer.write(value.substring(r));
+        writer.close();
+    }
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java
            ('svn:eol-style' removed)