[jboss-remoting-commits] JBoss Remoting SVN: r4047 - in remoting3/trunk: util/src/main/java/org/jboss/cx/remoting/util and 1 other directory.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Wed Apr 23 18:06:36 EDT 2008


Author: david.lloyd at jboss.com
Date: 2008-04-23 18:06:36 -0400 (Wed, 23 Apr 2008)
New Revision: 4047

Modified:
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/marshal/CompositeObjectResolver.java
   remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/CollectionUtil.java
Log:
Fix resolver order

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/marshal/CompositeObjectResolver.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/marshal/CompositeObjectResolver.java	2008-04-23 17:13:47 UTC (rev 4046)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/marshal/CompositeObjectResolver.java	2008-04-23 22:06:36 UTC (rev 4047)
@@ -26,7 +26,7 @@
     }
 
     public Object readResolve(Object object) throws IOException {
-        for (ObjectResolver resolver : resolvers) {
+        for (ObjectResolver resolver : CollectionUtil.reverse(resolvers)) {
             object = resolver.readResolve(object);
         }
         return object;

Modified: remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/CollectionUtil.java
===================================================================
--- remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/CollectionUtil.java	2008-04-23 17:13:47 UTC (rev 4046)
+++ remoting3/trunk/util/src/main/java/org/jboss/cx/remoting/util/CollectionUtil.java	2008-04-23 22:06:36 UTC (rev 4047)
@@ -17,6 +17,7 @@
 import java.util.Queue;
 import java.util.Set;
 import java.util.WeakHashMap;
+import java.util.ListIterator;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentHashMap;
@@ -565,4 +566,66 @@
         }
 
     }
+
+    public static <T> ListIterator<T> reverse(ListIterator<T> original) {
+        if (original instanceof ReverseListIterator) {
+            return ((ReverseListIterator<T>)original).original;
+        } else {
+            return new ReverseListIterator<T>(original);
+        }
+    }
+
+    public static <T> Iterable<T> reverse(final List<T> list) {
+        return new Iterable<T>() {
+            public Iterator<T> iterator() {
+                return reverse(list.listIterator());
+            }
+        };
+    }
+
+    private static final class ReverseListIterator<T> implements ListIterator<T> {
+
+        private final ListIterator<T> original;
+
+        private ReverseListIterator(final ListIterator<T> original) {
+            this.original = original;
+        }
+
+        public boolean hasNext() {
+            return original.hasPrevious();
+        }
+
+        public T next() {
+            return original.previous();
+        }
+
+        public boolean hasPrevious() {
+            return original.hasNext();
+        }
+
+        public T previous() {
+            return original.next();
+        }
+
+        public int nextIndex() {
+            return original.previousIndex();
+        }
+
+        public int previousIndex() {
+            return original.nextIndex();
+        }
+
+        public void remove() {
+            original.remove();
+        }
+
+        public void set(final T o) {
+            original.set(o);
+        }
+
+        public void add(final T o) {
+            original.add(o);
+            original.previous();
+        }
+    }
 }




More information about the jboss-remoting-commits mailing list