public final class MemoryMonitorFactory extends ObjectFactory.Singleton<MemoryMonitor>
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".
ObjectFactory.Context, ObjectFactory.Singleton<T>singleInstance, testSingleInstance| Modifier and Type | Method and Description |
|---|---|
static void |
clearThreadLocalClassName()
Clears the class name (regardless of whether a class name was set).
|
protected boolean |
enabled()
Returns whether the use of a
MemoryMonitor is enabled. |
protected String |
getClassName()
Get the class name set in the
ThreadLocal or null. |
protected MemoryMonitor |
getDefault(Class[] parameterTypes,
Object[] parameterValues)
The
MemoryMonitorFactory's implementation of the
ObjectFactory's abstract method which returns
the default MemoryMonitor instance. |
static MemoryMonitor |
getMemoryMonitor()
Access the
MemoryMonitorFactory instance. |
protected org.eigenbase.util.property.StringProperty |
getStringProperty()
Return the MemoryMonitorFactory
|
static void |
setThreadLocalClassName(String className)
Sets the class name of a
MemoryMonitor implementation. |
getObject, getTestObjectgetClassName, getObject, getObject, getObject, getObject, removeContext, restoreContextpublic static MemoryMonitor getMemoryMonitor()
MemoryMonitorFactory instance.MemoryMonitor.public static void setThreadLocalClassName(String className)
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.className - Class namepublic static void clearThreadLocalClassName()
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.protected boolean enabled()
MemoryMonitor is enabled.true if enabled and false otherwise.protected String getClassName()
ThreadLocal or null.getClassName in class ObjectFactory<MemoryMonitor>protected org.eigenbase.util.property.StringProperty getStringProperty()
MemoryMonitorFactory
getStringProperty in class ObjectFactory<MemoryMonitor>MemoryMonitorFactory property nameprotected MemoryMonitor getDefault(Class[] parameterTypes, Object[] parameterValues) throws CreationException
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.getDefault in class ObjectFactory<MemoryMonitor>parameterTypes - not usedparameterValues - not usedMemoryMonitor instanceCreationException - if the MemoryMonitor can not be
created.Copyright © 2018 Hitachi Vantara. All rights reserved.