You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ma...@apache.org on 2011/05/17 13:09:05 UTC

svn commit: r1104138 - in /felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm: DependencyManager.java InvocationUtil.java

Author: marrs
Date: Tue May 17 11:09:05 2011
New Revision: 1104138

URL: http://svn.apache.org/viewvc?rev=1104138&view=rev
Log:
FELIX-2953 Made the cache size configurable via a system property.

Modified:
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/InvocationUtil.java

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java?rev=1104138&r1=1104137&r2=1104138&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java Tue May 17 11:09:05 2011
@@ -58,6 +58,7 @@ import org.osgi.framework.FrameworkUtil;
 public class DependencyManager {
     public static final String ASPECT = "org.apache.felix.dependencymanager.aspect";
     public static final String SERVICEREGISTRY_CACHE_INDICES = "dm.index"; // TODO rename
+    public static final String METHOD_CACHE_SIZE = "org.apache.felix.dependencymanager.methodcache";
     private final BundleContext m_context;
     private final Logger m_logger;
     private List m_components = Collections.synchronizedList(new ArrayList());

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/InvocationUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/InvocationUtil.java?rev=1104138&r1=1104137&r2=1104138&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/InvocationUtil.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/InvocationUtil.java Tue May 17 11:09:05 2011
@@ -30,8 +30,18 @@ import java.util.Map;
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 public class InvocationUtil {
-    public static final int CACHE_SIZE = 2048;
-    private static final Map /* <Key, Method> */ m_methodCache = new LRUMap(CACHE_SIZE);
+    private static final Map /* <Key, Method> */ m_methodCache;
+    static {
+        int size = 2048;
+        try {
+            String value = System.getProperty(DependencyManager.METHOD_CACHE_SIZE);
+            if (value != null) {
+                size = Integer.parseInt(value);
+            }
+        }
+        catch (Exception e) {}
+        m_methodCache = new LRUMap(Math.max(size, 64));
+    }
     
     public static Object invokeCallbackMethod(Object instance, String methodName, Class[][] signatures, Object[][] parameters) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
         Class currentClazz = instance.getClass();