Remove directory that was created (inadvertently?) in commit r1022963:
r1022963 | zhoukevin | 2010-10-15 16:17:01 +0100 (Fri, 15 Oct 2010) | 2 lines
For objects of types generated by methods of java.util.Collections class,
like java.util.Collections$UnmodifiableCollection generated by
java.util.Collections.unmodifiableCollection(Collection) method etc,
HARMONY has problem to encode and decode them while Oracle JDK doesn't.
This patch also adds several test cases to reproduce those problems.
git-svn-id: https://svn.apache.org/repos/asf/harmony/enhanced/java/trunk@1029773 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/classlib/modules/beans/main/java/java/beans/UtilCollectionsPersistenceDelegate.java b/classlib/modules/beans/main/java/java/beans/UtilCollectionsPersistenceDelegate.java
deleted file mode 100644
index 3390e11..0000000
--- a/classlib/modules/beans/main/java/java/beans/UtilCollectionsPersistenceDelegate.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.beans;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.apache.harmony.beans.BeansUtils;
-
-public class UtilCollectionsPersistenceDelegate extends PersistenceDelegate {
-
- static String CLASS_PREFIX = "java.util.Collections$"; //$NON-NLS-1$
-
- private static final String COLLECTIONS_TYPE = "type"; //$NON-NLS-1$
-
- private static final String MAP_KEY_TYPE = "keyType"; //$NON-NLS-1$
-
- private static final String MAP_VALUE_TYPE = "valueType"; //$NON-NLS-1$
-
- protected boolean mutatesTo(Object o1, Object o2) {
- if (BeansUtils.declaredEquals(o1.getClass())) {
- return o1.equals(o2);
- }
- if (o1 instanceof Collection<?>) {
- Collection<?> c1 = (Collection<?>) o1;
- Collection<?> c2 = (Collection<?>) o2;
- return c1.size() == c2.size() && c1.containsAll(c2);
- }
- if (o1 instanceof Map<?, ?>) {
- Map<?, ?> m1 = (Map<?, ?>) o1;
- Map<?, ?> m2 = (Map<?, ?>) o2;
- return m1.size() == m2.size()
- && m1.entrySet().containsAll(m2.entrySet());
- }
- return super.mutatesTo(o1, o2);
- }
-
- @SuppressWarnings({ "rawtypes", "unchecked" })
- @Override
- protected Expression instantiate(Object oldInstance, Encoder enc) {
- String className = oldInstance.getClass().getName();
- if (className.endsWith("UnmodifiableCollection")) { //$NON-NLS-1$
- // Collections.unmodifiableCollection(Collection);
- return new Expression(oldInstance, Collections.class,
- "unmodifiableCollection", new Object[] { new ArrayList( //$NON-NLS-1$
- (Collection) oldInstance) });
- } else if (className.endsWith("UnmodifiableList")) { //$NON-NLS-1$
- // Collections.unmodifiableList(List);
- return new Expression(oldInstance, Collections.class,
- "unmodifiableList", new Object[] { new LinkedList(
- (Collection) oldInstance) });
- } else if (className.endsWith("UnmodifiableRandomAccessList")) { //$NON-NLS-1$
- // Collections.unmodifiableList(List);
- return new Expression(oldInstance, Collections.class,
- "unmodifiableList", new Object[] { new ArrayList( //$NON-NLS-1$
- (Collection) oldInstance) });
- } else if (className.endsWith("UnmodifiableSet")) { //$NON-NLS-1$
- // Collections.unmodifiableSet(Set);
- return new Expression(oldInstance, Collections.class,
- "unmodifiableSet", new Object[] { new HashSet( //$NON-NLS-1$
- (Set) oldInstance) });
- } else if (className.endsWith("UnmodifiableSortedSet")) { //$NON-NLS-1$
- // Collections.unmodifiableSortedSet(set)
- return new Expression(oldInstance, Collections.class,
- "unmodifiableSortedSet", new Object[] { new TreeSet( //$NON-NLS-1$
- (SortedSet) oldInstance) });
- } else if (className.endsWith("UnmodifiableMap")) { //$NON-NLS-1$
- return new Expression(oldInstance, Collections.class,
- "unmodifiableMap", new Object[] { new HashMap( //$NON-NLS-1$
- (Map) oldInstance) });
- } else if (className.endsWith("UnmodifiableSortedMap")) { //$NON-NLS-1$
- // Collections.unmodifiableSortedMap(SortedMap);
- return new Expression(oldInstance, Collections.class,
- "unmodifiableSortedMap", new Object[] { new TreeMap( //$NON-NLS-1$
- (Map) oldInstance) });
- } else if (className.endsWith("SynchronizedCollection")) { //$NON-NLS-1$
- // Collections.synchronizedCollection(Collection);
- return new Expression(oldInstance, Collections.class,
- "synchronizedCollection", new Object[] { new ArrayList( //$NON-NLS-1$
- (Collection) oldInstance) });
- } else if (className.endsWith("SynchronizedList")) { //$NON-NLS-1$
- // Collections.synchronizedList(List);
- return new Expression(oldInstance, Collections.class,
- "synchronizedList", new Object[] { new LinkedList( //$NON-NLS-1$
- (List) oldInstance) });
- } else if (className.endsWith("SynchronizedRandomAccessList")) { //$NON-NLS-1$
- // Collections.synchronizedList(List);
- return new Expression(oldInstance, Collections.class,
- "synchronizedList", new Object[] { new ArrayList( //$NON-NLS-1$
- (List) oldInstance) });
- } else if (className.endsWith("SynchronizedSet")) { //$NON-NLS-1$
- // Collections.synchronizedSet(Set);
- return new Expression(oldInstance, Collections.class,
- "synchronizedSet", new Object[] { new HashSet( //$NON-NLS-1$
- (Set) oldInstance) });
- } else if (className.endsWith("SynchronizedSortedSet")) { //$NON-NLS-1$
- // Collections.synchronizedSortedSet(SortedSet);
- return new Expression(oldInstance, Collections.class,
- "synchronizedSortedSet", new Object[] { new TreeSet( //$NON-NLS-1$
- (SortedSet) oldInstance) });
- } else if (className.endsWith("SynchronizedMap")) { //$NON-NLS-1$
- // Collections.synchronizedMap(Map);
- return new Expression(oldInstance, Collections.class,
- "synchronizedMap", new Object[] { new HashMap( //$NON-NLS-1$
- (Map) oldInstance) });
- } else if (className.endsWith("SynchronizedSortedMap")) { //$NON-NLS-1$
- // Collections.synchronizedSortedMap(SortedMap)
- return new Expression(oldInstance, Collections.class,
- "synchronizedSortedMap", new Object[] { new TreeMap( //$NON-NLS-1$
- (SortedMap) oldInstance) });
- } else if (className.endsWith("CheckedCollection")) { //$NON-NLS-1$
- // Collections.checkedCollection(Collection, Class);
- return new Expression(oldInstance, Collections.class,
- "checkedCollection", new Object[] { //$NON-NLS-1$
- new ArrayList((Collection) oldInstance),
- valueOfField(oldInstance, COLLECTIONS_TYPE) });
- } else if (className.endsWith("CheckedList")) { //$NON-NLS-1$
- // Collections.checkedList(List, Class);
- return new Expression(oldInstance, Collections.class,
- "checkedList", new Object[] {
- new LinkedList((Collection) oldInstance),
- valueOfField(oldInstance, COLLECTIONS_TYPE) });
- } else if (className.endsWith("CheckedRandomAccessList")) { //$NON-NLS-1$
- // Collections.checkedList(List, Class);
- return new Expression(oldInstance, Collections.class,
- "checkedList", new Object[] { //$NON-NLS-1$
- new ArrayList((Collection) oldInstance),
- valueOfField(oldInstance, COLLECTIONS_TYPE) });
- } else if (className.endsWith("CheckedSet")) { //$NON-NLS-1$
- // Collections.checkedSet(Set, Class);
- return new Expression(oldInstance, Collections.class, "checkedSet", //$NON-NLS-1$
- new Object[] { new HashSet((Set) oldInstance),
- valueOfField(oldInstance, COLLECTIONS_TYPE) });
- } else if (className.endsWith("CheckedSortedSet")) { //$NON-NLS-1$
- // Collections.checkedSortedSet(SortedSet, Class);
- return new Expression(oldInstance, Collections.class,
- "checkedSortedSet", new Object[] { //$NON-NLS-1$
- new TreeSet((Set) oldInstance),
- valueOfField(oldInstance, COLLECTIONS_TYPE) });
- } else if (className.endsWith("CheckedMap")) { //$NON-NLS-1$
- // Collections.checkedMap(Map, keyType, valueType);
- return new Expression(oldInstance, Collections.class, "checkedMap", //$NON-NLS-1$
- new Object[] { new HashMap((Map) oldInstance),
- valueOfField(oldInstance, MAP_KEY_TYPE),
- valueOfField(oldInstance, MAP_VALUE_TYPE) });
- } else if (className.endsWith("CheckedSortedMap")) { //$NON-NLS-1$
- // Collections.checkedSortedMap(SortedMap, keyType, valueType);
- return new Expression(oldInstance, Collections.class,
- "checkedSortedMap", new Object[] { //$NON-NLS-1$
- new TreeMap((Map) oldInstance),
- valueOfField(oldInstance, MAP_KEY_TYPE),
- valueOfField(oldInstance, MAP_VALUE_TYPE) });
- }
- return null;
- }
-
- private static Object valueOfField(Object obj, String fieldName) {
- Class<?> clazz = obj.getClass();
- Field field = null;
- while (clazz != null) {
- for (Field declaredField : clazz.getDeclaredFields()) {
- if (fieldName.equals(declaredField.getName())) {
- field = declaredField;
- break;
- }
- }
- clazz = clazz.getSuperclass();
- }
- if (field != null) {
- if (!field.isAccessible()) {
- field.setAccessible(true);
- }
- try {
- return field.get(obj);
- } catch (Exception e) {
- // Ignored
- }
- }
- return null;
- }
-}