You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2016/03/01 00:08:10 UTC

svn commit: r1732968 - /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java

Author: lu4242
Date: Mon Feb 29 23:08:09 2016
New Revision: 1732968

URL: http://svn.apache.org/viewvc?rev=1732968&view=rev
Log:
MYFACES-3497 [perf] Improve EventHandler

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java?rev=1732968&r1=1732967&r2=1732968&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java Mon Feb 29 23:08:09 2016
@@ -77,6 +77,8 @@ public final class EventHandler extends
             deferredValueType="java.lang.String")
     private TagAttribute type;
     
+    private Class<?> eventClassLiteral;
+    
     private boolean listenerIsCompositeComponentME;
     
     public EventHandler (TagConfig tagConfig)
@@ -166,6 +168,13 @@ public final class EventHandler extends
     {
         Class<?> eventClass = null;
         String value = null;
+        
+        if (type.isLiteral() && eventClassLiteral != null)
+        {
+            // if type is literal it does not change, avoid Reflection and use cached value
+            return (Class<? extends ComponentSystemEvent>) eventClassLiteral;
+        }
+        
         if (type.isLiteral())
         {
             value = type.getValue();
@@ -189,6 +198,10 @@ public final class EventHandler extends
             try
             {
                 eventClass = ReflectionUtil.forName (value);
+                if (type.isLiteral())
+                {
+                    eventClassLiteral = eventClass;
+                }
             }
             catch (Throwable e)
             {