ControlBean.lookupControlBeanContextFactory can be optimized
------------------------------------------------------------

                 Key: BEEHIVE-1215
                 URL: https://issues.apache.org/jira/browse/BEEHIVE-1215
             Project: Beehive
          Issue Type: Improvement
          Components: Controls
    Affects Versions: 1.0.2
            Reporter: Anand Sridharan


In ControlBean.lookupControlBeanContextFactory, everytime ControlBeanContext == 
null or context.getService(ControlBeanContextFactory.class, null) returns null, 
discoverer.find(ControlBeanContextFactory.class, 
DefaultControlBeanContextFactory.class.getName()) is called.

discoverer.find is pretty costly & takes toll on performance when multiple 
control instantiation happens at the same time under the given scenario.

Moving discoverer.find to static block will make it run only once & hence 
improve performance significantly.

--------------------------->8-------------------------
  abstract public class ControlBean
    implements org.apache.beehive.controls.api.bean.ControlBean
{
static Class factoryClass;
static DiscoverClass discoverer; 

        static {
                 discoverer = new DiscoverClass();
             factoryClass = discoverer.find(ControlBeanContextFactory.class, 
DefaultControlBeanContextFactory.class.getName());
        }

.................
.................
  private ControlBeanContextFactory lookupControlBeanContextFactory
        (org.apache.beehive.controls.api.context.ControlBeanContext context) {

        // first, try to find the CBCFactory from the container
        if(context != null) {
            ControlBeanContextFactory cbcFactory = 
context.getService(ControlBeanContextFactory.class, null);

            if(cbcFactory != null) {
                return cbcFactory;
            }
        }

        // Create the context that acts as the BeanContextProxy for this bean 
(the context that this bean _defines_).
        try
        {
            return (ControlBeanContextFactory)factoryClass.newInstance();
        }
        catch (Exception e) {
            throw new ControlException("Exception creating ControlBeanContext", 
e);
        }
    }
..................
....................
...................

}
---------------------------8<----------------------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to