You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/01/24 08:17:55 UTC

svn commit: r902530 - in /geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el: BeanELResolver.java CompositeELResolver.java ELContext.java ELUtils.java ExpressionFactory.java

Author: xuhaihong
Date: Sun Jan 24 07:17:54 2010
New Revision: 902530

URL: http://svn.apache.org/viewvc?rev=902530&view=rev
Log:
Still think that a cached ExpressionFactory is need to improve efficiency, now use ELUtils to hold the cached expressionFactory

Added:
    geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java   (with props)
Modified:
    geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/BeanELResolver.java
    geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/CompositeELResolver.java
    geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELContext.java
    geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ExpressionFactory.java

Modified: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/BeanELResolver.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/BeanELResolver.java?rev=902530&r1=902529&r2=902530&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/BeanELResolver.java (original)
+++ geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/BeanELResolver.java Sun Jan 24 07:17:54 2010
@@ -357,7 +357,10 @@
         if (params == null) {
             params = new Object[0];
         }
-        ExpressionFactory expressionFactory = (ExpressionFactory) context.getContext(ExpressionFactory.class);
+        ExpressionFactory expressionFactory = null;
+        if (ELUtils.isCachedExpressionFactoryEnabled()) {
+            expressionFactory = ELUtils.getCachedExpressionFactory();
+        }
         if (expressionFactory == null) {
             expressionFactory = ExpressionFactory.newInstance();
         }

Modified: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/CompositeELResolver.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/CompositeELResolver.java?rev=902530&r1=902529&r2=902530&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/CompositeELResolver.java (original)
+++ geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/CompositeELResolver.java Sun Jan 24 07:17:54 2010
@@ -205,7 +205,10 @@
         if (method == null || base == null) {
             return null;
         }
-        ExpressionFactory expressionFactory = (ExpressionFactory) context.getContext(ExpressionFactory.class);
+        ExpressionFactory expressionFactory = null;
+        if (ELUtils.isCachedExpressionFactoryEnabled()) {
+            expressionFactory = ELUtils.getCachedExpressionFactory();
+        }
         if (expressionFactory == null) {
             expressionFactory = ExpressionFactory.newInstance();
         }

Modified: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELContext.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELContext.java?rev=902530&r1=902529&r2=902530&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELContext.java (original)
+++ geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELContext.java Sun Jan 24 07:17:54 2010
@@ -32,28 +32,11 @@
 
     private boolean resolved;
 
-    private static ExpressionFactory expressionFactory;
-
-    private static boolean useCachedExpressionFactory;
-
-    static{
-        useCachedExpressionFactory = Boolean.valueOf(System.getProperty("org.apache.geronimo.spec.el.useCachedExpressionFactory","true"));
-        if (useCachedExpressionFactory) {
-            try {
-                expressionFactory = ExpressionFactory.newInstance();
-            } catch (Exception e) {
-            }
-        }
-    }
-
     /**
      *
      */
     public ELContext() {
         this.resolved = false;
-        if (useCachedExpressionFactory) {
-            putContext(ExpressionFactory.class, expressionFactory);
-        }
     }
 
     public Object getContext(Class key) {

Added: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java?rev=902530&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java (added)
+++ geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java Sun Jan 24 07:17:54 2010
@@ -0,0 +1,38 @@
+/**
+ *  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 javax.el;
+
+public class ELUtils {
+
+    private static volatile ExpressionFactory cachedExpressionFactory;
+
+    private static volatile boolean cachedExpressionFactoryEnabled = Boolean.valueOf(System.getProperty("org.apache.geronimo.spec.el.useCachedExpressionFactory", "true"));
+
+    public static ExpressionFactory getCachedExpressionFactory() {
+        return cachedExpressionFactory;
+    }
+
+    public static boolean isCachedExpressionFactoryEnabled() {
+        return cachedExpressionFactoryEnabled;
+    }
+
+    public static void setCachedExpressionFactory(ExpressionFactory expressionFactory) {
+        cachedExpressionFactory = expressionFactory;
+    }
+
+}

Propchange: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ELUtils.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ExpressionFactory.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ExpressionFactory.java?rev=902530&r1=902529&r2=902530&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ExpressionFactory.java (original)
+++ geronimo/specs/trunk/geronimo-el_2.2_spec/src/main/java/javax/el/ExpressionFactory.java Sun Jan 24 07:17:54 2010
@@ -42,6 +42,13 @@
 
     private static final String JAVA_RUNTIME_PROPERTY_FILE_LOCATION = "lib" + File.separator + "el.properties";
 
+    static {
+        try {
+            ELUtils.setCachedExpressionFactory(newInstance());
+        } catch (Exception e) {
+        }
+    }
+
     public abstract Object coerceToType(Object obj, Class<?> expectedType) throws ELException;
 
     public abstract ValueExpression createValueExpression(ELContext context, String expression, Class<?> expectedType) throws NullPointerException, ELException;