Author: curtisr7
Date: Mon Jul 23 15:35:01 2012
New Revision: 1364683
URL: http://svn.apache.org/viewvc?rev=1364683&view=rev
Log:
OPENJPA-2238: Don't create custom proxies for default scoped classes.
Added:
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeList.java
(with props)
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeType.java
(with props)
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java?rev=1364683&r1=1364682&r2=1364683&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
Mon Jul 23 15:35:01 2012
@@ -291,6 +291,9 @@ public class ProxyManagerImpl
return (Proxy) orig;
if (ImplHelper.isManageable(orig))
return null;
+ if (!isProxyable(orig.getClass()))
+ return null;
+
if (orig instanceof Collection) {
Comparator comp = (orig instanceof SortedSet)
? ((SortedSet) orig).comparator() : null;
@@ -598,6 +601,21 @@ public class ProxyManagerImpl
if (Modifier.isFinal(type.getModifiers()))
throw new UnsupportedException(_loc.get("no-proxy-final", type));
}
+
+ private static boolean isProxyable(Class<?> cls){
+ int mod = cls.getModifiers();
+ if(Modifier.isFinal(mod))
+ return false;
+ if(Modifier.isProtected(mod) || Modifier.isPublic(mod))
+ return true;
+ // Default scoped class, we can only extend if it is in the same
package as the generated proxy. Ideally
+ // we'd fix the code gen portion and place proxies in the same pacakge
as the types being proxied.
+ if(cls.getPackage().getName().equals("org.apache.openjpa.util"))
+ return true;
+
+ return false;
+
+ }
/**
* Generate the bytecode for a map proxy for the given type.
Modified:
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java?rev=1364683&r1=1364682&r2=1364683&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
Mon Jul 23 15:35:01 2012
@@ -19,6 +19,7 @@
package org.apache.openjpa.util;
import java.io.InputStream;
+import java.lang.reflect.Method;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.AbstractMap;
@@ -27,6 +28,7 @@ import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
+import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -52,11 +54,10 @@ import junit.textui.TestRunner;
/**
* Test proxies generated by the proxy manager.
- *
+ *
* @author Abe White
*/
-public class TestProxyManager
- extends TestCase {
+public class TestProxyManager extends TestCase {
private ProxyManagerImpl _mgr;
@@ -97,13 +98,13 @@ public class TestProxyManager
assertEquals(l1.size(), l2.size());
for (int i = 0; i < l1.size(); i++)
assertTrue(l1.get(i) + " != " + l2.get(i), l1.get(i) == l2.get(i));
- }
+ }
public void testCopySets() {
Set orig = new HashSet();
populate(orig);
assertSetsEqual(orig, (Set) _mgr.copyCollection(orig));
-
+
orig = new CustomSet();
populate(orig);
assertSetsEqual(orig, (Set) _mgr.copyCollection(orig));
@@ -116,7 +117,7 @@ public class TestProxyManager
assertTrue(s1.getClass() == s2.getClass());
assertEquals(s1.size(), s2.size());
assertEquals(s1, s2);
- }
+ }
public void testCopySortedSets() {
SortedSet orig = new TreeSet();
@@ -126,7 +127,7 @@ public class TestProxyManager
orig = new TreeSet(new CustomComparator());
populate(orig);
assertSortedSetsEqual(orig, (SortedSet) _mgr.copyCollection(orig));
-
+
orig = new CustomSortedSet();
populate(orig);
assertSortedSetsEqual(orig, (SortedSet) _mgr.copyCollection(orig));
@@ -153,7 +154,7 @@ public class TestProxyManager
private static void assertSortedSetsEqual(SortedSet s1, SortedSet s2) {
assertTrue(s1.getClass() == s2.getClass());
assertSortedSetsEquals(s1, s2);
- }
+ }
/**
* Assert that the given sets are exactly the same (minus the class).
@@ -166,68 +167,56 @@ public class TestProxyManager
while (itr1.hasNext())
assertTrue(itr1.next() == itr2.next());
assertTrue(s1.equals(s2));
- }
+ }
public void testCopyNullCollection() {
assertNull(_mgr.copyCollection(null));
}
public void testCopyProxyCollection() {
- List orig = (List) _mgr.newCollectionProxy(ArrayList.class, null,
null,true);
+ List orig = (List) _mgr.newCollectionProxy(ArrayList.class, null,
null, true);
populate(orig);
assertListsEqual(new ArrayList(orig), (List)
_mgr.copyCollection(orig));
- TreeSet torig = (TreeSet) _mgr.newCollectionProxy(TreeSet.class, null,
- new CustomComparator(),true);
+ TreeSet torig = (TreeSet) _mgr.newCollectionProxy(TreeSet.class, null,
new CustomComparator(), true);
assertTrue(torig.comparator() instanceof CustomComparator);
populate(torig);
- assertSortedSetsEqual(new TreeSet(torig), (SortedSet)
- _mgr.copyCollection(torig));
+ assertSortedSetsEqual(new TreeSet(torig), (SortedSet)
_mgr.copyCollection(torig));
}
public void testCloneProxyCollection() {
// List doesn't support clone()
-
- TreeSet torig = (TreeSet) _mgr.newCollectionProxy(TreeSet.class, null,
- new CustomComparator(),true);
+
+ TreeSet torig = (TreeSet) _mgr.newCollectionProxy(TreeSet.class, null,
new CustomComparator(), true);
assertTrue(torig.comparator() instanceof CustomComparator);
populate(torig);
assertSortedSetsEquals(new TreeSet(torig), (SortedSet) torig.clone());
}
- public void testListMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newCollectionProxy(ArrayList.class, null,
null,true).
- getClass();
+ public void testListMethodsProxied() throws Exception {
+ Class proxy = _mgr.newCollectionProxy(ArrayList.class, null, null,
true).getClass();
assertListMethodsProxied(proxy);
- proxy = _mgr.newCollectionProxy(CustomList.class, null, null,true).
- getClass();
+ proxy = _mgr.newCollectionProxy(CustomList.class, null, null,
true).getClass();
assertListMethodsProxied(proxy);
}
/**
- * Assert that the methods we need to override to dirty the collection are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the collection are
proxied appropriately.
*/
- private void assertCollectionMethodsProxied(Class cls)
- throws Exception {
- assertNotNull(cls.getDeclaredMethod("add", new Class[]
{Object.class}));
- assertNotNull(cls.getDeclaredMethod("addAll",
- new Class[] {Collection.class}));
+ private void assertCollectionMethodsProxied(Class cls) throws Exception {
+ assertNotNull(cls.getDeclaredMethod("add", new Class[] { Object.class
}));
+ assertNotNull(cls.getDeclaredMethod("addAll", new Class[] {
Collection.class }));
assertNotNull(cls.getDeclaredMethod("clear", (Class[]) null));
assertNotNull(cls.getDeclaredMethod("iterator", (Class[]) null));
- assertNotNull(cls.getDeclaredMethod("remove",
- new Class[] {Object.class}));
- assertNotNull(cls.getDeclaredMethod("removeAll",
- new Class[] {Collection.class}));
- assertNotNull(cls.getDeclaredMethod("retainAll",
- new Class[] {Collection.class}));
+ assertNotNull(cls.getDeclaredMethod("remove", new Class[] {
Object.class }));
+ assertNotNull(cls.getDeclaredMethod("removeAll", new Class[] {
Collection.class }));
+ assertNotNull(cls.getDeclaredMethod("retainAll", new Class[] {
Collection.class }));
// check a non-mutating method to make sure we're not just proxying
- // everything
+ // everything
try {
- cls.getDeclaredMethod("contains", new Class[] {Object.class});
+ cls.getDeclaredMethod("contains", new Class[] { Object.class });
fail("Proxied non-mutating method.");
} catch (NoSuchMethodException nsme) {
// expected
@@ -235,56 +224,43 @@ public class TestProxyManager
}
/**
- * Assert that the methods we need to override to dirty the list are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the list are
proxied appropriately.
*/
- private void assertListMethodsProxied(Class cls)
- throws Exception {
+ private void assertListMethodsProxied(Class cls) throws Exception {
assertCollectionMethodsProxied(cls);
- assertNotNull(cls.getDeclaredMethod("add",
- new Class[] {int.class, Object.class}));
- assertNotNull(cls.getDeclaredMethod("addAll",
- new Class[] {int.class, Collection.class}));
- assertNotNull(cls.getDeclaredMethod("listIterator", (Class[]) null));
- assertNotNull(cls.getDeclaredMethod("listIterator",
- new Class[] {int.class}));
- assertNotNull(cls.getDeclaredMethod("remove", new Class[]
{int.class}));
- assertNotNull(cls.getDeclaredMethod("set",
- new Class[] {int.class, Object.class}));
- }
-
- public void testSetMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newCollectionProxy(HashSet.class, null, null,true).
- getClass();
+ assertNotNull(cls.getDeclaredMethod("add", new Class[] { int.class,
Object.class }));
+ assertNotNull(cls.getDeclaredMethod("addAll", new Class[] { int.class,
Collection.class }));
+ assertNotNull(cls.getDeclaredMethod("listIterator", (Class[]) null));
+ assertNotNull(cls.getDeclaredMethod("listIterator", new Class[] {
int.class }));
+ assertNotNull(cls.getDeclaredMethod("remove", new Class[] { int.class
}));
+ assertNotNull(cls.getDeclaredMethod("set", new Class[] { int.class,
Object.class }));
+ }
+
+ public void testSetMethodsProxied() throws Exception {
+ Class proxy = _mgr.newCollectionProxy(HashSet.class, null, null,
true).getClass();
assertCollectionMethodsProxied(proxy);
- proxy = _mgr.newCollectionProxy(CustomSet.class, null,
null,true).getClass();
+ proxy = _mgr.newCollectionProxy(CustomSet.class, null, null,
true).getClass();
assertCollectionMethodsProxied(proxy);
- proxy = _mgr.newCollectionProxy(CustomSortedSet.class, null,
null,true).
- getClass();
+ proxy = _mgr.newCollectionProxy(CustomSortedSet.class, null, null,
true).getClass();
assertCollectionMethodsProxied(proxy);
- proxy = _mgr.newCollectionProxy(CustomComparatorSortedSet.class, null,
- new CustomComparator(),true).getClass();
+ proxy = _mgr.newCollectionProxy(CustomComparatorSortedSet.class, null,
new CustomComparator(), true).getClass();
assertCollectionMethodsProxied(proxy);
}
- public void testQueueMethodsProxied()
- throws Exception {
+ public void testQueueMethodsProxied() throws Exception {
Class queue = getQueueClass();
if (queue == null)
return;
- Class proxy = _mgr.newCollectionProxy(LinkedList.class, null,
null,true).
- getClass();
- assertTrue(queue.isAssignableFrom(proxy));
+ Class proxy = _mgr.newCollectionProxy(LinkedList.class, null, null,
true).getClass();
+ assertTrue(queue.isAssignableFrom(proxy));
assertCollectionMethodsProxied(proxy);
- assertNotNull(proxy.getDeclaredMethod("offer",
- new Class[] {Object.class}));
- assertNotNull(proxy.getDeclaredMethod("poll", (Class[]) null));
- assertNotNull(proxy.getDeclaredMethod("remove", (Class[]) null));
+ assertNotNull(proxy.getDeclaredMethod("offer", new Class[] {
Object.class }));
+ assertNotNull(proxy.getDeclaredMethod("poll", (Class[]) null));
+ assertNotNull(proxy.getDeclaredMethod("remove", (Class[]) null));
try {
proxy.getDeclaredMethod("peek", (Class[]) null);
fail("Proxied non-mutating method.");
@@ -293,82 +269,66 @@ public class TestProxyManager
}
}
- public void testLinkedListMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newCollectionProxy(LinkedList.class, null,
null,true).
- getClass();
+ public void testLinkedListMethodsProxied() throws Exception {
+ Class proxy = _mgr.newCollectionProxy(LinkedList.class, null, null,
true).getClass();
assertListMethodsProxied(proxy);
- assertNotNull(proxy.getDeclaredMethod("addFirst",
- new Class[] {Object.class}));
- assertNotNull(proxy.getDeclaredMethod("addLast",
- new Class[] {Object.class}));
- assertNotNull(proxy.getDeclaredMethod("removeFirst", (Class[]) null));
- assertNotNull(proxy.getDeclaredMethod("removeLast", (Class[]) null));
+ assertNotNull(proxy.getDeclaredMethod("addFirst", new Class[] {
Object.class }));
+ assertNotNull(proxy.getDeclaredMethod("addLast", new Class[] {
Object.class }));
+ assertNotNull(proxy.getDeclaredMethod("removeFirst", (Class[]) null));
+ assertNotNull(proxy.getDeclaredMethod("removeLast", (Class[]) null));
}
- public void testVectorMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newCollectionProxy(Vector.class, null, null,true).
- getClass();
+ public void testVectorMethodsProxied() throws Exception {
+ Class proxy = _mgr.newCollectionProxy(Vector.class, null, null,
true).getClass();
assertListMethodsProxied(proxy);
- assertNotNull(proxy.getDeclaredMethod("addElement",
- new Class[] {Object.class}));
- assertNotNull(proxy.getDeclaredMethod("insertElementAt",
- new Class[] {Object.class, int.class}));
- assertNotNull(proxy.getDeclaredMethod("removeAllElements",
- (Class[]) null));
- assertNotNull(proxy.getDeclaredMethod("removeElement",
- new Class[] {Object.class}));
- assertNotNull(proxy.getDeclaredMethod("removeElementAt",
- new Class[] {int.class}));
- assertNotNull(proxy.getDeclaredMethod("setElementAt",
- new Class[] {Object.class, int.class}));
+ assertNotNull(proxy.getDeclaredMethod("addElement", new Class[] {
Object.class }));
+ assertNotNull(proxy.getDeclaredMethod("insertElementAt", new Class[] {
Object.class, int.class }));
+ assertNotNull(proxy.getDeclaredMethod("removeAllElements", (Class[])
null));
+ assertNotNull(proxy.getDeclaredMethod("removeElement", new Class[] {
Object.class }));
+ assertNotNull(proxy.getDeclaredMethod("removeElementAt", new Class[] {
int.class }));
+ assertNotNull(proxy.getDeclaredMethod("setElementAt", new Class[] {
Object.class, int.class }));
}
public void testListChangeTracker() {
- Proxy coll = _mgr.newCollectionProxy(ArrayList.class, null, null,true);
+ Proxy coll = _mgr.newCollectionProxy(ArrayList.class, null, null,
true);
assertNotNull(coll);
assertNotNull(coll.getChangeTracker());
- assertTrue(coll.getChangeTracker()
- instanceof CollectionChangeTrackerImpl);
- CollectionChangeTrackerImpl ct = (CollectionChangeTrackerImpl)
- coll.getChangeTracker();
+ assertTrue(coll.getChangeTracker() instanceof
CollectionChangeTrackerImpl);
+ CollectionChangeTrackerImpl ct = (CollectionChangeTrackerImpl)
coll.getChangeTracker();
assertTrue(ct.allowsDuplicates());
assertTrue(ct.isOrdered());
}
-
+
public void testSetChangeTracker() {
- Proxy coll = _mgr.newCollectionProxy(HashSet.class, null, null,true);
+ Proxy coll = _mgr.newCollectionProxy(HashSet.class, null, null, true);
assertNotNull(coll);
assertNotNull(coll.getChangeTracker());
- assertTrue(coll.getChangeTracker()
- instanceof CollectionChangeTrackerImpl);
- CollectionChangeTrackerImpl ct = (CollectionChangeTrackerImpl)
- coll.getChangeTracker();
+ assertTrue(coll.getChangeTracker() instanceof
CollectionChangeTrackerImpl);
+ CollectionChangeTrackerImpl ct = (CollectionChangeTrackerImpl)
coll.getChangeTracker();
assertFalse(ct.allowsDuplicates());
assertFalse(ct.isOrdered());
}
-
+
public void testCollectionInterfaceProxy() {
- Proxy coll = _mgr.newCollectionProxy(Collection.class, null,
null,true);
+ Proxy coll = _mgr.newCollectionProxy(Collection.class, null, null,
true);
assertNotNull(coll);
}
public void testListInterfaceProxy() {
- Proxy coll = _mgr.newCollectionProxy(List.class, null, null,true);
+ Proxy coll = _mgr.newCollectionProxy(List.class, null, null, true);
assertNotNull(coll);
assertTrue(coll instanceof List);
}
public void testSetInterfaceProxy() {
- Proxy coll = _mgr.newCollectionProxy(Set.class, null, null,true);
+ Proxy coll = _mgr.newCollectionProxy(Set.class, null, null, true);
assertNotNull(coll);
assertTrue(coll instanceof Set);
assertFalse(coll instanceof SortedSet);
}
public void testSortedSetInterfaceProxy() {
- Proxy coll = _mgr.newCollectionProxy(SortedSet.class, null, null,true);
+ Proxy coll = _mgr.newCollectionProxy(SortedSet.class, null, null,
true);
assertNotNull(coll);
assertTrue(coll instanceof SortedSet);
}
@@ -378,11 +338,37 @@ public class TestProxyManager
if (queue == null)
return;
- Proxy coll = _mgr.newCollectionProxy(queue, null, null,true);
+ Proxy coll = _mgr.newCollectionProxy(queue, null, null, true);
assertNotNull(coll);
assertTrue(queue.isInstance(coll));
}
+ public void testProxyCustomDefaultScopedType() throws Exception {
+ // Use reflection to instantiate a type that isn't in the current
package.
+ Class<?> cls =
Class.forName("org.apache.openjpa.util.custom.CustomProxyDefaultScopeType");
+ assertNotNull(cls);
+ Method meth = cls.getMethod("instance", new Class[0]);
+ assertNotNull(meth);
+
+ meth.setAccessible(true);
+ Object obj = meth.invoke(cls, new Object[0]);
+ assertNotNull(obj);
+ assertNull(_mgr.newCustomProxy(obj, true));
+ }
+
+ public void testProxyCustomDefaultScopedList() throws Exception {
+ // Use reflection to instantiate a type that isn't in the current
package.
+ Class<?> cls =
Class.forName("org.apache.openjpa.util.custom.CustomProxyDefaultScopeList");
+ assertNotNull(cls);
+ Method meth = cls.getMethod("instance", new Class[0]);
+ assertNotNull(meth);
+
+ meth.setAccessible(true);
+ Object obj = meth.invoke(cls, new Object[0]);
+ assertNotNull(obj);
+ assertNull(_mgr.newCustomProxy(obj, true));
+ }
+
/**
* Return the {@link java.util.Queue} class if avaialble.
*/
@@ -427,7 +413,7 @@ public class TestProxyManager
assertTrue(m1.getClass() == m2.getClass());
assertEquals(m1.size(), m2.size());
assertEquals(m1, m2);
- }
+ }
public void testCopySortedMaps() {
SortedMap orig = new TreeMap();
@@ -453,7 +439,7 @@ public class TestProxyManager
private static void assertSortedMapsEqual(SortedMap m1, SortedMap m2) {
assertTrue(m1.getClass() == m2.getClass());
assertSortedMapsEquals(m1, m2);
- }
+ }
/**
* Assert that the given maps are exactly the same (minus the class).
@@ -472,98 +458,81 @@ public class TestProxyManager
assertTrue(entry1.getValue() == entry2.getValue());
}
assertTrue(m1.equals(m2));
- }
+ }
public void testCopyNullMap() {
assertNull(_mgr.copyMap(null));
}
public void testCopyProxyMap() {
- Map orig = (Map) _mgr.newMapProxy(HashMap.class, null, null,
null,true);
+ Map orig = (Map) _mgr.newMapProxy(HashMap.class, null, null, null,
true);
populate(orig);
assertMapsEqual(new HashMap(orig), (Map) _mgr.copyMap(orig));
- TreeMap torig = (TreeMap) _mgr.newMapProxy(TreeMap.class, null, null,
- new CustomComparator(),true);
+ TreeMap torig = (TreeMap) _mgr.newMapProxy(TreeMap.class, null, null,
new CustomComparator(), true);
assertTrue(torig.comparator() instanceof CustomComparator);
populate(torig);
- assertSortedMapsEqual(new TreeMap(torig), (SortedMap)
- _mgr.copyMap(torig));
+ assertSortedMapsEqual(new TreeMap(torig), (SortedMap)
_mgr.copyMap(torig));
}
public void testCloneProxyMap() {
// Map does not support clone()
-
- TreeMap torig = (TreeMap) _mgr.newMapProxy(TreeMap.class, null, null,
- new CustomComparator(),true);
+
+ TreeMap torig = (TreeMap) _mgr.newMapProxy(TreeMap.class, null, null,
new CustomComparator(), true);
assertTrue(torig.comparator() instanceof CustomComparator);
populate(torig);
assertSortedMapsEquals(new TreeMap(torig), (SortedMap) torig.clone());
}
- public void testMapMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newMapProxy(HashMap.class, null, null, null,true).
- getClass();
+ public void testMapMethodsProxied() throws Exception {
+ Class proxy = _mgr.newMapProxy(HashMap.class, null, null, null,
true).getClass();
assertMapMethodsProxied(proxy);
- proxy = _mgr.newMapProxy(TreeMap.class, null, null,
null,true).getClass();
+ proxy = _mgr.newMapProxy(TreeMap.class, null, null, null,
true).getClass();
assertMapMethodsProxied(proxy);
- proxy = _mgr.newMapProxy(TreeMap.class, null, null,
- new CustomComparator(),true).getClass();
+ proxy = _mgr.newMapProxy(TreeMap.class, null, null, new
CustomComparator(), true).getClass();
assertMapMethodsProxied(proxy);
- proxy = _mgr.newMapProxy(CustomMap.class, null, null,
null,true).getClass();
+ proxy = _mgr.newMapProxy(CustomMap.class, null, null, null,
true).getClass();
assertMapMethodsProxied(proxy);
- proxy = _mgr.newMapProxy(CustomSortedMap.class, null, null, null,true).
- getClass();
+ proxy = _mgr.newMapProxy(CustomSortedMap.class, null, null, null,
true).getClass();
assertMapMethodsProxied(proxy);
- proxy = _mgr.newMapProxy(CustomComparatorSortedMap.class, null, null,
- new CustomComparator(),true).getClass();
+ proxy = _mgr.newMapProxy(CustomComparatorSortedMap.class, null, null,
new CustomComparator(), true).getClass();
assertMapMethodsProxied(proxy);
}
/**
- * Assert that the methods we need to override to dirty the collection are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the collection are
proxied appropriately.
*/
- private void assertMapMethodsProxied(Class cls)
- throws Exception {
- assertNotNull(cls.getDeclaredMethod("put",
- new Class[] {Object.class, Object.class}));
- assertNotNull(cls.getDeclaredMethod("putAll", new Class[]
{Map.class}));
+ private void assertMapMethodsProxied(Class cls) throws Exception {
+ assertNotNull(cls.getDeclaredMethod("put", new Class[] { Object.class,
Object.class }));
+ assertNotNull(cls.getDeclaredMethod("putAll", new Class[] { Map.class
}));
assertNotNull(cls.getDeclaredMethod("clear", (Class[]) null));
- assertNotNull(cls.getDeclaredMethod("remove",
- new Class[] {Object.class}));
+ assertNotNull(cls.getDeclaredMethod("remove", new Class[] {
Object.class }));
assertNotNull(cls.getDeclaredMethod("keySet", (Class[]) null));
assertNotNull(cls.getDeclaredMethod("values", (Class[]) null));
assertNotNull(cls.getDeclaredMethod("entrySet", (Class[]) null));
// check a non-mutating method to make sure we're not just proxying
- // everything
+ // everything
try {
- cls.getDeclaredMethod("containsKey", new Class[] {Object.class});
+ cls.getDeclaredMethod("containsKey", new Class[] { Object.class });
fail("Proxied non-mutating method.");
} catch (NoSuchMethodException nsme) {
// expected
}
}
- public void testPropertiesMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newMapProxy(Properties.class, null, null,
null,true).
- getClass();
+ public void testPropertiesMethodsProxied() throws Exception {
+ Class proxy = _mgr.newMapProxy(Properties.class, null, null, null,
true).getClass();
assertMapMethodsProxied(proxy);
- assertNotNull(proxy.getDeclaredMethod("setProperty",
- new Class[] {String.class, String.class}));
- assertNotNull(proxy.getDeclaredMethod("load",
- new Class[] {InputStream.class}));
- assertNotNull(proxy.getDeclaredMethod("loadFromXML",
- new Class[] {InputStream.class}));
- }
+ assertNotNull(proxy.getDeclaredMethod("setProperty", new Class[] {
String.class, String.class }));
+ assertNotNull(proxy.getDeclaredMethod("load", new Class[] {
InputStream.class }));
+ assertNotNull(proxy.getDeclaredMethod("loadFromXML", new Class[] {
InputStream.class }));
+ }
public void testCopyDates() {
Date orig = new Date(1999);
@@ -590,14 +559,14 @@ public class TestProxyManager
private static void assertDatesEqual(Date d1, Date d2) {
assertTrue(d1.getClass() == d2.getClass());
assertDatesEquals(d1, d2);
- }
+ }
/**
* Assert that the given dates are exactly the same (minus the class).
*/
private static void assertDatesEquals(Date d1, Date d2) {
assertTrue(d1.equals(d2));
- }
+ }
public void testCopyNullDate() {
assertNull(_mgr.copyDate(null));
@@ -615,8 +584,7 @@ public class TestProxyManager
assertDatesEquals(new Time(orig.getTime()), (Date) orig.clone());
}
- public void testDateMethodsProxied()
- throws Exception {
+ public void testDateMethodsProxied() throws Exception {
Class proxy = _mgr.newDateProxy(Date.class).getClass();
assertDateMethodsProxied(proxy);
@@ -634,28 +602,19 @@ public class TestProxyManager
}
/**
- * Assert that the methods we need to override to dirty the date are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the date are
proxied appropriately.
*/
- private void assertDateMethodsProxied(Class cls)
- throws Exception {
- assertNotNull(cls.getDeclaredMethod("setDate",
- new Class[] {int.class}));
- assertNotNull(cls.getDeclaredMethod("setHours",
- new Class[] {int.class}));
- assertNotNull(cls.getDeclaredMethod("setMinutes",
- new Class[] {int.class}));
- assertNotNull(cls.getDeclaredMethod("setMonth",
- new Class[] {int.class}));
- assertNotNull(cls.getDeclaredMethod("setSeconds",
- new Class[] {int.class}));
- assertNotNull(cls.getDeclaredMethod("setTime",
- new Class[] {long.class}));
- assertNotNull(cls.getDeclaredMethod("setYear",
- new Class[] {int.class}));
+ private void assertDateMethodsProxied(Class cls) throws Exception {
+ assertNotNull(cls.getDeclaredMethod("setDate", new Class[] { int.class
}));
+ assertNotNull(cls.getDeclaredMethod("setHours", new Class[] {
int.class }));
+ assertNotNull(cls.getDeclaredMethod("setMinutes", new Class[] {
int.class }));
+ assertNotNull(cls.getDeclaredMethod("setMonth", new Class[] {
int.class }));
+ assertNotNull(cls.getDeclaredMethod("setSeconds", new Class[] {
int.class }));
+ assertNotNull(cls.getDeclaredMethod("setTime", new Class[] {
long.class }));
+ assertNotNull(cls.getDeclaredMethod("setYear", new Class[] { int.class
}));
// check a non-mutating method to make sure we're not just proxying
- // everything
+ // everything
try {
cls.getDeclaredMethod("getTime", (Class[]) null);
fail("Proxied non-mutating method.");
@@ -665,14 +624,11 @@ public class TestProxyManager
}
/**
- * Assert that the methods we need to override to dirty the timestamp are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the timestamp are
proxied appropriately.
*/
- private void assertTimestampMethodsProxied(Class cls)
- throws Exception {
+ private void assertTimestampMethodsProxied(Class cls) throws Exception {
assertDateMethodsProxied(cls);
- assertNotNull(cls.getDeclaredMethod("setNanos",
- new Class[] {int.class}));
+ assertNotNull(cls.getDeclaredMethod("setNanos", new Class[] {
int.class }));
}
public void testCopyCalendars() {
@@ -699,22 +655,21 @@ public class TestProxyManager
private static void assertCalendarsEqual(Calendar c1, Calendar c2) {
assertTrue(c1.getClass() == c2.getClass());
assertCalendarsEquals(c1, c2);
- }
+ }
/**
* Assert that the given dates are exactly the same (minus the class).
*/
private static void assertCalendarsEquals(Calendar c1, Calendar c2) {
assertTrue(c1.equals(c2));
- }
+ }
public void testCopyNullCalendar() {
assertNull(_mgr.copyCalendar(null));
}
public void testCopyProxyCalendar() {
- Calendar orig = (Calendar) _mgr.newCalendarProxy
- (GregorianCalendar.class, TimeZone.getTimeZone("CST"));
+ Calendar orig = (Calendar)
_mgr.newCalendarProxy(GregorianCalendar.class, TimeZone.getTimeZone("CST"));
populate(orig);
Calendar cal = new GregorianCalendar();
populate(cal);
@@ -722,12 +677,11 @@ public class TestProxyManager
}
public void testCloneProxyCalendar() {
- Calendar orig = (Calendar) _mgr.newCalendarProxy
- (GregorianCalendar.class, TimeZone.getTimeZone("CST"));
+ Calendar orig = (Calendar)
_mgr.newCalendarProxy(GregorianCalendar.class, TimeZone.getTimeZone("CST"));
populate(orig);
Calendar cal = new GregorianCalendar();
populate(cal);
- assertCalendarsEquals(cal, (Calendar)orig.clone());
+ assertCalendarsEquals(cal, (Calendar) orig.clone());
}
public void testCalendarAbstractClassProxy() {
@@ -735,39 +689,29 @@ public class TestProxyManager
assertNotNull(cal);
}
- public void testCalendarMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newCalendarProxy(GregorianCalendar.class,
- TimeZone.getDefault()).getClass();
+ public void testCalendarMethodsProxied() throws Exception {
+ Class proxy = _mgr.newCalendarProxy(GregorianCalendar.class,
TimeZone.getDefault()).getClass();
assertCalendarMethodsProxied(proxy);
- proxy = _mgr.newCalendarProxy(CustomCalendar.class,
- TimeZone.getDefault()).getClass();
+ proxy = _mgr.newCalendarProxy(CustomCalendar.class,
TimeZone.getDefault()).getClass();
assertCalendarMethodsProxied(proxy);
- proxy = _mgr.newCalendarProxy(Calendar.class,
- TimeZone.getDefault()).getClass();
+ proxy = _mgr.newCalendarProxy(Calendar.class,
TimeZone.getDefault()).getClass();
assertCalendarMethodsProxied(proxy);
}
/**
- * Assert that the methods we need to override to dirty the calendar are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the calendar are
proxied appropriately.
*/
- private void assertCalendarMethodsProxied(Class cls)
- throws Exception {
- assertNotNull(cls.getDeclaredMethod("set",
- new Class[] {int.class, int.class}));
- assertNotNull(cls.getDeclaredMethod("roll",
- new Class[] {int.class, int.class}));
- assertNotNull(cls.getDeclaredMethod("setTimeInMillis",
- new Class[] {long.class}));
- assertNotNull(cls.getDeclaredMethod("setTimeZone",
- new Class[] {TimeZone.class}));
+ private void assertCalendarMethodsProxied(Class cls) throws Exception {
+ assertNotNull(cls.getDeclaredMethod("set", new Class[] { int.class,
int.class }));
+ assertNotNull(cls.getDeclaredMethod("roll", new Class[] { int.class,
int.class }));
+ assertNotNull(cls.getDeclaredMethod("setTimeInMillis", new Class[] {
long.class }));
+ assertNotNull(cls.getDeclaredMethod("setTimeZone", new Class[] {
TimeZone.class }));
assertNotNull(cls.getDeclaredMethod("computeFields", (Class[]) null));
// check a non-mutating method to make sure we're not just proxying
- // everything
+ // everything
try {
cls.getDeclaredMethod("getTimeInMillis", (Class[]) null);
fail("Proxied non-mutating method.");
@@ -797,10 +741,9 @@ public class TestProxyManager
NonproxyableBean orig = new NonproxyableBean(1);
populate(orig);
assertNull(_mgr.copyCustom(orig));
- assertNull(_mgr.newCustomProxy(orig,true));
+ assertNull(_mgr.newCustomProxy(orig, true));
}
-
/**
* Assert that the given beans are exactly the same.
*/
@@ -808,43 +751,37 @@ public class TestProxyManager
assertTrue(b1.getClass() == b2.getClass());
assertTrue(b1.getString() == b2.getString());
assertTrue(b1.getNumber() == b2.getNumber());
- }
+ }
public void testCopyNullBean() {
assertNull(_mgr.copyCustom(null));
}
public void testCopyProxyBean() {
- CustomBean orig = (CustomBean) _mgr.newCustomProxy(new
CustomBean(),true);
+ CustomBean orig = (CustomBean) _mgr.newCustomProxy(new CustomBean(),
true);
populate(orig);
CustomBean comp = new CustomBean();
populate(comp);
assertBeansEqual(comp, (CustomBean) _mgr.copyCustom(orig));
}
- public void testBeanMethodsProxied()
- throws Exception {
- Class proxy = _mgr.newCustomProxy(new CustomBean(),true).getClass();
+ public void testBeanMethodsProxied() throws Exception {
+ Class proxy = _mgr.newCustomProxy(new CustomBean(), true).getClass();
assertBeanMethodsProxied(proxy);
- proxy = _mgr.newCustomProxy(new CustomCopyConstructorBean
- (new CustomBean()),true).getClass();
+ proxy = _mgr.newCustomProxy(new CustomCopyConstructorBean(new
CustomBean()), true).getClass();
assertBeanMethodsProxied(proxy);
}
/**
- * Assert that the methods we need to override to dirty the bean are
- * proxied appropriately.
+ * Assert that the methods we need to override to dirty the bean are
proxied appropriately.
*/
- private void assertBeanMethodsProxied(Class cls)
- throws Exception {
- assertNotNull(cls.getDeclaredMethod("setString",
- new Class[] {String.class}));
- assertNotNull(cls.getDeclaredMethod("setNumber",
- new Class[] {int.class}));
+ private void assertBeanMethodsProxied(Class cls) throws Exception {
+ assertNotNull(cls.getDeclaredMethod("setString", new Class[] {
String.class }));
+ assertNotNull(cls.getDeclaredMethod("setNumber", new Class[] {
int.class }));
// check a non-mutating method to make sure we're not just proxying
- // everything
+ // everything
try {
cls.getDeclaredMethod("getString", (Class[]) null);
fail("Proxied non-mutating method.");
@@ -858,14 +795,12 @@ public class TestProxyManager
}
/**
- * Used to test custom list handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom list handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomList
- extends AbstractSequentialList {
+ public static class CustomList extends AbstractSequentialList {
private final List _delegate = new ArrayList();
-
+
public int size() {
return _delegate.size();
}
@@ -876,14 +811,12 @@ public class TestProxyManager
}
/**
- * Used to test custom set handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom set handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomSet
- extends AbstractSet {
+ public static class CustomSet extends AbstractSet {
private final Set _delegate = new HashSet();
-
+
public int size() {
return _delegate.size();
}
@@ -898,19 +831,15 @@ public class TestProxyManager
}
/**
- * Used to test custom set handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom set handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomSortedSet
- extends TreeSet {
+ public static class CustomSortedSet extends TreeSet {
}
/**
- * Used to test custom set handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom set handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomComparatorSortedSet
- extends TreeSet {
+ public static class CustomComparatorSortedSet extends TreeSet {
public CustomComparatorSortedSet() {
}
@@ -921,37 +850,31 @@ public class TestProxyManager
}
/**
- * Used to test custom map handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom map handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomMap
- extends AbstractMap {
+ public static class CustomMap extends AbstractMap {
private final Map _delegate = new HashMap();
public Object put(Object key, Object value) {
return _delegate.put(key, value);
}
-
+
public Set entrySet() {
return _delegate.entrySet();
}
}
/**
- * Used to test custom map handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom map handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomSortedMap
- extends TreeMap {
+ public static class CustomSortedMap extends TreeMap {
}
/**
- * Used to test custom map handling. Copy constructor intentionally
- * ommitted.
+ * Used to test custom map handling. Copy constructor intentionally
ommitted.
*/
- public static class CustomComparatorSortedMap
- extends TreeMap {
+ public static class CustomComparatorSortedMap extends TreeMap {
public CustomComparatorSortedMap() {
}
@@ -964,8 +887,7 @@ public class TestProxyManager
/**
* Used to test transfer of comparators to proxies.
*/
- private static class CustomComparator
- implements Comparator {
+ private static class CustomComparator implements Comparator {
public int compare(Object o1, Object o2) {
return ((Comparable) o1).compareTo(o2);
@@ -975,8 +897,7 @@ public class TestProxyManager
/**
* Used to test custom date handling.
*/
- public static class CustomDate
- extends Timestamp {
+ public static class CustomDate extends Timestamp {
public CustomDate(long time) {
super(time);
@@ -998,7 +919,7 @@ public class TestProxyManager
_string = str;
}
- public int getNumber() {
+ public int getNumber() {
return _number;
}
@@ -1010,8 +931,7 @@ public class TestProxyManager
/**
* Used to test custom bean handling.
*/
- public static class CustomCopyConstructorBean
- extends CustomBean {
+ public static class CustomCopyConstructorBean extends CustomBean {
public CustomCopyConstructorBean(CustomBean bean) {
setString(bean.getString());
@@ -1022,8 +942,7 @@ public class TestProxyManager
/**
* Used to non-proxyable custom bean handling.
*/
- public static class NonproxyableBean
- extends CustomBean {
+ public static class NonproxyableBean extends CustomBean {
public NonproxyableBean(long x) {
// single non-default, non-copy constructor
@@ -1033,7 +952,6 @@ public class TestProxyManager
/**
* Used to test custom calendar handling.
*/
- public static class CustomCalendar
- extends GregorianCalendar {
+ public static class CustomCalendar extends GregorianCalendar {
}
}
Added:
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeList.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeList.java?rev=1364683&view=auto
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeList.java
(added)
+++
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeList.java
Mon Jul 23 15:35:01 2012
@@ -0,0 +1,41 @@
+/*
+ * 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.apache.openjpa.util.custom;
+
+import java.util.AbstractSequentialList;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
+class CustomProxyDefaultScopeList<E> extends AbstractSequentialList<E> {
+
+ private final List<E> _delegate = new ArrayList<E>();
+
+ public int size() {
+ return _delegate.size();
+ }
+
+ public ListIterator<E> listIterator(int idx) {
+ return _delegate.listIterator(idx);
+ }
+
+ public static Object instance() {
+ return new CustomProxyDefaultScopeList<Integer>();
+ };
+}
Propchange:
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeList.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeType.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeType.java?rev=1364683&view=auto
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeType.java
(added)
+++
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeType.java
Mon Jul 23 15:35:01 2012
@@ -0,0 +1,44 @@
+/*
+ * 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.apache.openjpa.util.custom;
+
+class CustomProxyDefaultScopeType {
+
+ int data;
+
+ public CustomProxyDefaultScopeType() {
+
+ }
+
+ public CustomProxyDefaultScopeType(CustomProxyDefaultScopeType c) {
+ data = c.data;
+ }
+
+ public int getData() {
+ return data;
+ }
+
+ public void setData(int data) {
+ this.data = data;
+ }
+
+ public static Object instance() {
+ return new CustomProxyDefaultScopeType();
+ };
+}
Propchange:
openjpa/trunk/openjpa-kernel/src/test/java/org/apache/openjpa/util/custom/CustomProxyDefaultScopeType.java
------------------------------------------------------------------------------
svn:eol-style = native