Author: david.lloyd(a)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();
+ }
+ }
}
Show replies by date