Package mondrian.util
Class MemoryMonitorFactory
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
-
Nested Class Summary
Nested classes/interfaces inherited from class mondrian.util.ObjectFactory
ObjectFactory.Context, ObjectFactory.Singleton<T>
-
Field Summary
Fields inherited from class mondrian.util.ObjectFactory.Singleton
singleInstance, testSingleInstance
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
Clears the class name (regardless of whether a class name was set).protected boolean
enabled()
Returns whether the use of aMemoryMonitor
is enabled.protected String
Get the class name set in theThreadLocal
or null.protected MemoryMonitor
getDefault
(Class[] parameterTypes, Object[] parameterValues) TheMemoryMonitorFactory
's implementation of theObjectFactory
's abstract method which returns the defaultMemoryMonitor
instance.static MemoryMonitor
Access theMemoryMonitorFactory
instance.protected org.eigenbase.util.property.StringProperty
Return theMemoryMonitorFactory</code property name.
static void
setThreadLocalClassName
(String className) Sets the class name of aMemoryMonitor
implementation.Methods inherited from class mondrian.util.ObjectFactory.Singleton
getObject, getTestObject
Methods inherited from class mondrian.util.ObjectFactory
getClassName, getObject, getObject, getObject, getObject, removeContext, restoreContext
-
Method Details
-
getMemoryMonitor
Access theMemoryMonitorFactory
instance.- Returns:
- the
MemoryMonitor
.
-
setThreadLocalClassName
Sets the class name of aMemoryMonitor
implementation. This should be called (obviously) before calling theMemoryMonitorFactory
getMemoryMonitor
method to get theMemoryMonitor
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 usingsetThreadLocalClassName
, 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 aMemoryMonitor
is enabled.- Returns:
true
if enabled andfalse
otherwise.
-
getClassName
Get the class name set in theThreadLocal
or null.- Overrides:
getClassName
in classObjectFactory<MemoryMonitor>
- Returns:
- class name or null.
-
getStringProperty
protected org.eigenbase.util.property.StringProperty getStringProperty()Return theMemoryMonitorFactory</code property name.
- Specified by:
getStringProperty
in classObjectFactory<MemoryMonitor>
- Returns:
MemoryMonitorFactory
property name
-
getDefault
protected MemoryMonitor getDefault(Class[] parameterTypes, Object[] parameterValues) throws CreationException TheMemoryMonitorFactory
's implementation of theObjectFactory
's abstract method which returns the defaultMemoryMonitor
instance. For Java4 or if theMemoryMonitorFactory
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 theNotificationMemoryMonitor
is returned.- Specified by:
getDefault
in classObjectFactory<MemoryMonitor>
- Parameters:
parameterTypes
- not usedparameterValues
- not used- Returns:
MemoryMonitor
instance- Throws:
CreationException
- if theMemoryMonitor
can not be created.
-