Package mondrian.util

Class MemoryMonitorFactory


  • public final class MemoryMonitorFactory
    extends ObjectFactory.Singleton<MemoryMonitor>
    The MemoryMonitorFactory is used to get the application's MemoryMonitor. The MemoryMonitorFactory is based upon the ObjectFactory.Singleton generic. The MemoryMonitorFactory implementation has a single, default MemoryMonitor per JVM instance which can be overridden using the provided ThreadLocal variable. Normally, this ThreadLocal override should only be used during JUnit testing. The JUnit test, set the ThreadLocal variable to the name of its own implementation of the MemoryMonitor interface and then calls the ObjectFactory getObject method. After doing the test, the ThreadLocal variable should be cleared.

    The ObjectFactory.Singleton permits the use of System properties to provide a class name to the factory. This can be used to create a MemoryMonitor that is not the default one. The property name is the MemoryMonitor class name, "mondrian.util.MemoryMonitor".

    Since:
    Feb 03 2007
    Author:
    Richard M. Emberson
    • Method Detail

      • getMemoryMonitor

        public static MemoryMonitor getMemoryMonitor()
        Access the MemoryMonitorFactory instance.
        Returns:
        the MemoryMonitor.
      • setThreadLocalClassName

        public static void setThreadLocalClassName​(String className)
        Sets the class name of a MemoryMonitor implementation. This should be called (obviously) before calling the MemoryMonitorFactory getMemoryMonitor method to get the MemoryMonitor implementation. Generally, this is only used for testing.
        Parameters:
        className - Class name
      • clearThreadLocalClassName

        public static void clearThreadLocalClassName()
        Clears the class name (regardless of whether a class name was set). When a class name is set using setThreadLocalClassName, the setting whould be done in a try-block and a call to this clear method should be in the finally-clause of that try-block.
      • enabled

        protected boolean enabled()
        Returns whether the use of a MemoryMonitor is enabled.
        Returns:
        true if enabled and false otherwise.
      • getStringProperty

        protected org.eigenbase.util.property.StringProperty getStringProperty()
        Return the MemoryMonitorFactory
        Specified by:
        getStringProperty in class ObjectFactory<MemoryMonitor>
        Returns:
        MemoryMonitorFactory property name
      • getDefault

        protected MemoryMonitor getDefault​(Class[] parameterTypes,
                                           Object[] parameterValues)
                                    throws CreationException
        The MemoryMonitorFactory's implementation of the ObjectFactory's abstract method which returns the default MemoryMonitor instance. For Java4 or if the MemoryMonitorFactory is not enabled then this method returns the "faux" MemoryMonitor implementation, it does nothing. When enabled and for Java5 and above JVMs, and instance of the NotificationMemoryMonitor is returned.
        Specified by:
        getDefault in class ObjectFactory<MemoryMonitor>
        Parameters:
        parameterTypes - not used
        parameterValues - not used
        Returns:
        MemoryMonitor instance
        Throws:
        CreationException - if the MemoryMonitor can not be created.