openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dwo...@apache.org
Subject svn commit: r781142 - in /openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa: enhance/Reflection.java kernel/AbstractBrokerFactory.java
Date Tue, 02 Jun 2009 20:02:42 GMT
Author: dwoods
Date: Tue Jun  2 20:02:41 2009
New Revision: 781142

URL: http://svn.apache.org/viewvc?rev=781142&view=rev
Log:
OPENJPA-1113 revert from EA2 due to out of PermGen space issues on Sun JDKs

Modified:
    openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
    openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java

Modified: openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java?rev=781142&r1=781141&r2=781142&view=diff
==============================================================================
--- openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
(original)
+++ openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
Tue Jun  2 20:02:41 2009
@@ -21,24 +21,20 @@
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.security.AccessController;
-import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.WeakHashMap;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Reflectable;
-import org.apache.openjpa.util.GeneralException;
-import org.apache.openjpa.util.UserException;
+import org.apache.openjpa.util.GeneralException; 
+import org.apache.openjpa.util.UserException; 
 
 /**
  * Reflection utilities used to support and augment enhancement.  Used both
@@ -51,89 +47,14 @@
     private static final Localizer _loc = Localizer.forPackage
         (Reflection.class);
 
-    // Weak HashMap caches of getter/setter/beanProperty methods
-    private static Map<Class<?>, Map<String, Method>> getterMethodCache
= 
-        new WeakHashMap<Class<?>, Map<String, Method>>(); 
-    private static Map<Class<?>, Map<String, Method>> setterMethodCache
= 
-        new WeakHashMap<Class<?>, Map<String, Method>>(); 
-    private static Map<Class<?>, Set<String>> beanPropertiesNameCache =

-        new WeakHashMap<Class<?>, Set<String>>(); 
-    
-    private static Method getGetterMethod(Class<?> cls, String prop) {
-        Method rtnMethod = null;
-        Map<String, Method> clsMap = getterMethodCache.get(cls);
-        if (clsMap != null) {
-            rtnMethod = clsMap.get(prop);
-        }
-        return rtnMethod;
-    }
-
-    private static void setGetterMethod(Class<?> cls, String prop,
-        Method method) {
-        Map<String, Method> clsMap = getterMethodCache.get(cls);
-        if (clsMap == null) {
-            clsMap = new HashMap<String, Method>();
-            getterMethodCache.put(cls, clsMap);
-        }
-        clsMap.put(prop, method);
-    }
-
-    private static Method getSetterMethod(Class<?> cls, String prop) {
-        Method rtnMethod = null;
-        Map<String, Method> clsMap = setterMethodCache.get(cls);
-        if (clsMap != null) {
-            rtnMethod = clsMap.get(prop);
-        }
-        return rtnMethod;
-    }
-
-    private static void setSetterMethod(Class<?> cls, String prop,
-        Method method) {
-        Map<String, Method> clsMap = setterMethodCache.get(cls);
-        if (clsMap == null) {
-            clsMap = new HashMap<String, Method>();
-            setterMethodCache.put(cls, clsMap);
-        }
-        clsMap.put(prop, method);
-    }
-
-    public static void flushCaches() {
-        getterMethodCache.clear();
-        setterMethodCache.clear(); 
-        beanPropertiesNameCache.clear();
-    }
-    
-    public static void flushCaches(Collection<ClassLoader> loaders) {
-        if (loaders.size() > 0) {
-            flushCache(loaders, getterMethodCache);
-            flushCache(loaders, setterMethodCache);
-            flushCache(loaders, beanPropertiesNameCache);
-        }
-    }
-
-    private static void flushCache(Collection<ClassLoader> loaders,
-        Map<Class<?>, ?> cache) {
-        for (Iterator<Class<?>> itr = cache.keySet().iterator(); 
-            itr.hasNext();) {
-            Class<?> cls = itr.next();
-            ClassLoader sLoader = cls.getClassLoader();
-            if (loaders.contains(sLoader)) {
-                itr.remove();
-            }
-        }
-    }
-
     /**
      * Return the getter method matching the given property name, optionally
      * throwing an exception if none.
      */
     public static Method findGetter(Class cls, String prop, boolean mustExist) {
-        Method m = getGetterMethod(cls, prop);
-        if (m != null) {
-            return m;
-        }
         prop = StringUtils.capitalize(prop);
         String name = "get" + prop;
+        Method m;
         try {
             // this algorithm searches for a get<prop> or is<prop> method in
             // a breadth-first manner.
@@ -141,15 +62,12 @@
                 c = c.getSuperclass()) {
                 m = getDeclaredMethod(c, name, null);
                 if (m != null) {
-                    setGetterMethod(cls, prop, m);
                     return m;
                 } else {
                     m = getDeclaredMethod(c, "is" + prop, null);
                     if (m != null && (m.getReturnType() == boolean.class
-                        || m.getReturnType() == Boolean.class)) {
-                        setGetterMethod(cls, prop, m);
+                        || m.getReturnType() == Boolean.class))
                         return m;
-                    }
                 }
             }
         } catch (Exception e) {
@@ -177,19 +95,14 @@
      */
     public static Method findSetter(Class cls, String prop, Class param,
         boolean mustExist) {
-        Method m = getSetterMethod(cls, prop);
-        if (m != null) {
-            return m;
-        }
         String name = "set" + StringUtils.capitalize(prop);
+        Method m;
         try {
             for (Class c = cls; c != null && c != Object.class;
                 c = c.getSuperclass()) {
                 m = getDeclaredMethod(c, name, param);
-                if (m != null) {
-                    setSetterMethod(cls, prop, m);
+                if (m != null)
                     return m;
-                }
             }
         } catch (Exception e) {
             throw new GeneralException(e);
@@ -861,14 +774,10 @@
     public static Set<String> getBeanStylePropertyNames(Class c) {
         if (c == null)
             return Collections.EMPTY_SET;
-        Set<String> result = beanPropertiesNameCache.get(c);
-        if (result != null) {
-            return result;
-        }
         Method[] methods = c.getMethods();
         if (methods == null || methods.length < 2)
             return Collections.EMPTY_SET;
-        /*Set<String>*/ result = new TreeSet<String>();
+        Set<String> result = new TreeSet<String>();
         for (Method m : methods) {
             if (m.getName().startsWith("get")) {
                 if (!canReflect(m))
@@ -886,7 +795,6 @@
                 }
             }
         }
-        beanPropertiesNameCache.put(c, result);
         return result;
     }
     

Modified: openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?rev=781142&r1=781141&r2=781142&view=diff
==============================================================================
--- openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
(original)
+++ openjpa/branches/2.0.0-EA2/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
Tue Jun  2 20:02:41 2009
@@ -31,26 +31,23 @@
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.locks.ReentrantLock;
 
 import javax.transaction.Status;
 import javax.transaction.Synchronization;
 import javax.transaction.Transaction;
 import javax.transaction.TransactionManager;
 
-import org.apache.commons.collections.set.MapBackedSet;
 import org.apache.commons.lang.StringUtils;
-import org.apache.openjpa.conf.BrokerValue;
+import org.apache.commons.collections.set.MapBackedSet;
 import org.apache.openjpa.conf.OpenJPAConfiguration;
-import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
 import org.apache.openjpa.conf.OpenJPAVersion;
+import org.apache.openjpa.conf.BrokerValue;
+import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
 import org.apache.openjpa.datacache.DataCacheStoreManager;
 import org.apache.openjpa.ee.ManagedRuntime;
-import org.apache.openjpa.enhance.ManagedClassSubclasser;
 import org.apache.openjpa.enhance.PCRegistry;
 import org.apache.openjpa.enhance.PersistenceCapable;
-import org.apache.openjpa.enhance.Reflection;
+import org.apache.openjpa.enhance.ManagedClassSubclasser;
 import org.apache.openjpa.event.BrokerFactoryEvent;
 import org.apache.openjpa.event.RemoteCommitEventManager;
 import org.apache.openjpa.lib.conf.Configuration;
@@ -58,7 +55,9 @@
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
+import java.util.concurrent.ConcurrentHashMap;
 import org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashSet;
+import java.util.concurrent.locks.ReentrantLock;
 import org.apache.openjpa.meta.MetaDataRepository;
 import org.apache.openjpa.util.GeneralException;
 import org.apache.openjpa.util.InvalidStateException;
@@ -411,7 +410,7 @@
                 PCRegistry.removeRegisterClassListener
                     (_conf.getMetaDataRepositoryInstance());
             }
-            Reflection.flushCaches(_pcClassLoaders);
+
             _conf.close();
             _closed = true;
             Log log = _conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);



Mime
View raw message