From 5a5e67a25dce780ee0050d2bc76fa58d8437619a Mon Sep 17 00:00:00 2001 From: "liujisi@google.com" Date: Thu, 28 Apr 2011 09:37:40 +0000 Subject: Make protobuf java JDK 1.5 compatible. --- .../java/com/google/protobuf/GeneratedMessage.java | 8 ++-- .../com/google/protobuf/RepeatedFieldBuilder.java | 2 +- .../com/google/protobuf/SingleFieldBuilder.java | 2 +- .../java/com/google/protobuf/SmallSortedMap.java | 22 +++++------ .../protobuf/UnmodifiableLazyStringList.java | 30 +++++++-------- .../google/protobuf/ForceFieldBuildersPreRun.java | 2 +- .../com/google/protobuf/SmallSortedMapTest.java | 44 +++++++++++++++++++++- .../test/java/com/google/protobuf/TestUtil.java | 2 +- 8 files changed, 77 insertions(+), 35 deletions(-) diff --git a/java/src/main/java/com/google/protobuf/GeneratedMessage.java b/java/src/main/java/com/google/protobuf/GeneratedMessage.java index 2c22fcab..5e32d75c 100644 --- a/java/src/main/java/com/google/protobuf/GeneratedMessage.java +++ b/java/src/main/java/com/google/protobuf/GeneratedMessage.java @@ -421,7 +421,7 @@ public abstract class GeneratedMessage extends AbstractMessage return true; } - @Override + //@Override (Java public final UnknownFieldSet getUnknownFields() { return unknownFields; } @@ -445,7 +445,7 @@ public abstract class GeneratedMessage extends AbstractMessage */ private class BuilderParentImpl implements BuilderParent { - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void markDirty() { onChanged(); } @@ -1130,7 +1130,7 @@ public abstract class GeneratedMessage extends AbstractMessage // obtained. return new GeneratedExtension( new ExtensionDescriptorRetriever() { - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public FieldDescriptor getDescriptor() { return scope.getDescriptorForType().getExtensions() .get(descriptorIndex); @@ -1225,7 +1225,7 @@ public abstract class GeneratedMessage extends AbstractMessage throw new IllegalStateException("Already initialized."); } descriptorRetriever = new ExtensionDescriptorRetriever() { - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public FieldDescriptor getDescriptor() { return descriptor; } diff --git a/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java b/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java index 0772eaca..0024f791 100644 --- a/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java +++ b/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java @@ -573,7 +573,7 @@ public class RepeatedFieldBuilder } } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void markDirty() { onChanged(); } diff --git a/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java b/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java index a92042e8..d4475f66 100644 --- a/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java +++ b/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java @@ -234,7 +234,7 @@ public class SingleFieldBuilder } } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void markDirty() { onChanged(); } diff --git a/java/src/main/java/com/google/protobuf/SmallSortedMap.java b/java/src/main/java/com/google/protobuf/SmallSortedMap.java index ccc20163..1cf270f3 100644 --- a/java/src/main/java/com/google/protobuf/SmallSortedMap.java +++ b/java/src/main/java/com/google/protobuf/SmallSortedMap.java @@ -411,22 +411,22 @@ class SmallSortedMap, V> extends AbstractMap { this.value = value; } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public K getKey() { return key; } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public V getValue() { return value; } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public int compareTo(Entry other) { return getKey().compareTo(other.getKey()); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public V setValue(V newValue) { checkMutable(); final V oldValue = this.value; @@ -535,13 +535,13 @@ class SmallSortedMap, V> extends AbstractMap { private boolean nextCalledBeforeRemove; private Iterator> lazyOverflowIterator; - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasNext() { return (pos + 1) < entryList.size() || getOverflowIterator().hasNext(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public Map.Entry next() { nextCalledBeforeRemove = true; // Always increment pos so that we know whether the last returned value @@ -552,7 +552,7 @@ class SmallSortedMap, V> extends AbstractMap { return getOverflowIterator().next(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void remove() { if (!nextCalledBeforeRemove) { throw new IllegalStateException("remove() was called before next()"); @@ -589,22 +589,22 @@ class SmallSortedMap, V> extends AbstractMap { private static class EmptySet { private static final Iterator ITERATOR = new Iterator() { - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasNext() { return false; } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public Object next() { throw new NoSuchElementException(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void remove() { throw new UnsupportedOperationException(); } }; private static final Iterable ITERABLE = new Iterable() { - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public Iterator iterator() { return ITERATOR; } diff --git a/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java b/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java index ee8fe190..83e5c796 100644 --- a/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java +++ b/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java @@ -60,62 +60,62 @@ public class UnmodifiableLazyStringList extends AbstractList return list.size(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public ByteString getByteString(int index) { return list.getByteString(index); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void add(ByteString element) { throw new UnsupportedOperationException(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public ListIterator listIterator(final int index) { return new ListIterator() { ListIterator iter = list.listIterator(index); - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasNext() { return iter.hasNext(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public String next() { return iter.next(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasPrevious() { return iter.hasPrevious(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public String previous() { return iter.previous(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public int nextIndex() { return iter.nextIndex(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public int previousIndex() { return iter.previousIndex(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void remove() { throw new UnsupportedOperationException(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void set(String o) { throw new UnsupportedOperationException(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void add(String o) { throw new UnsupportedOperationException(); } @@ -127,17 +127,17 @@ public class UnmodifiableLazyStringList extends AbstractList return new Iterator() { Iterator iter = list.iterator(); - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public boolean hasNext() { return iter.hasNext(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public String next() { return iter.next(); } - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void remove() { throw new UnsupportedOperationException(); } diff --git a/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java b/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java index 108a28e1..8b78893d 100644 --- a/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java +++ b/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java @@ -41,7 +41,7 @@ package com.google.protobuf; */ public class ForceFieldBuildersPreRun implements Runnable { - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void run() { GeneratedMessage.enableAlwaysUseFieldBuildersForTesting(); } diff --git a/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java b/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java index 922115fc..8f77a036 100644 --- a/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java +++ b/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java @@ -32,7 +32,6 @@ package com.google.protobuf; import junit.framework.TestCase; -import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -46,6 +45,49 @@ import java.util.TreeSet; * @author darick@google.com Darick Tong */ public class SmallSortedMapTest extends TestCase { + // java.util.AbstractMap.SimpleEntry is private in JDK 1.5. We re-implement it + // here for JDK 1.5 users. + private static class SimpleEntry implements Map.Entry { + private final K key; + private V value; + + SimpleEntry(K key, V value) { + this.key = key; + this.value = value; + } + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + public V setValue(V value) { + V oldValue = this.value; + this.value = value; + return oldValue; + } + + private static boolean eq(Object o1, Object o2) { + return o1 == null ? o2 == null : o1.equals(o2); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof Map.Entry)) + return false; + Map.Entry e = (Map.Entry) o; + return eq(key, e.getKey()) && eq(value, e.getValue()); + } + + @Override + public int hashCode() { + return ((key == null) ? 0 : key.hashCode()) ^ + ((value == null) ? 0 : value.hashCode()); + } + } public void testPutAndGetArrayEntriesOnly() { runPutAndGetTest(3); diff --git a/java/src/test/java/com/google/protobuf/TestUtil.java b/java/src/test/java/com/google/protobuf/TestUtil.java index 7c458d75..9109f419 100644 --- a/java/src/test/java/com/google/protobuf/TestUtil.java +++ b/java/src/test/java/com/google/protobuf/TestUtil.java @@ -3799,7 +3799,7 @@ public final class TestUtil { private int invalidations; - @Override + //@Override (Java 1.6 override semantics, but we must support 1.5) public void markDirty() { invalidations++; } -- cgit v1.2.3