Package mondrian.util
Class MemoryMonitorFactory
- java.lang.Object
-
- mondrian.util.ObjectFactory<T>
-
- mondrian.util.ObjectFactory.Singleton<MemoryMonitor>
-
- mondrian.util.MemoryMonitorFactory
-
public final class MemoryMonitorFactory extends ObjectFactory.Singleton<MemoryMonitor>
TheMemoryMonitorFactoryis used to get the application'sMemoryMonitor. TheMemoryMonitorFactoryis based upon theObjectFactory.Singletongeneric. TheMemoryMonitorFactoryimplementation has a single, defaultMemoryMonitorper JVM instance which can be overridden using the providedThreadLocalvariable. Normally, thisThreadLocaloverride should only be used during JUnit testing. The JUnit test, set theThreadLocalvariable to the name of its own implementation of theMemoryMonitorinterface and then calls theObjectFactorygetObjectmethod. After doing the test, theThreadLocalvariable should be cleared.The
ObjectFactory.Singletonpermits the use ofSystemproperties to provide a class name to the factory. This can be used to create aMemoryMonitorthat is not the default one. The property name is theMemoryMonitorclass 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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidclearThreadLocalClassName()Clears the class name (regardless of whether a class name was set).protected booleanenabled()Returns whether the use of aMemoryMonitoris enabled.protected StringgetClassName()Get the class name set in theThreadLocalor null.protected MemoryMonitorgetDefault(Class[] parameterTypes, Object[] parameterValues)TheMemoryMonitorFactory's implementation of theObjectFactory's abstract method which returns the defaultMemoryMonitorinstance.static MemoryMonitorgetMemoryMonitor()Access theMemoryMonitorFactoryinstance.protected org.eigenbase.util.property.StringPropertygetStringProperty()Return theMemoryMonitorFactorystatic voidsetThreadLocalClassName(String className)Sets the class name of aMemoryMonitorimplementation.-
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 Detail
-
getMemoryMonitor
public static MemoryMonitor getMemoryMonitor()
Access theMemoryMonitorFactoryinstance.- Returns:
- the
MemoryMonitor.
-
setThreadLocalClassName
public static void setThreadLocalClassName(String className)
Sets the class name of aMemoryMonitorimplementation. This should be called (obviously) before calling theMemoryMonitorFactorygetMemoryMonitormethod to get theMemoryMonitorimplementation. 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 aMemoryMonitoris enabled.- Returns:
trueif enabled andfalseotherwise.
-
getClassName
protected String getClassName()
Get the class name set in theThreadLocalor null.- Overrides:
getClassNamein classObjectFactory<MemoryMonitor>- Returns:
- class name or null.
-
getStringProperty
protected org.eigenbase.util.property.StringProperty getStringProperty()
Return theMemoryMonitorFactory- Specified by:
getStringPropertyin classObjectFactory<MemoryMonitor>- Returns:
MemoryMonitorFactoryproperty name
-
getDefault
protected MemoryMonitor getDefault(Class[] parameterTypes, Object[] parameterValues) throws CreationException
TheMemoryMonitorFactory's implementation of theObjectFactory's abstract method which returns the defaultMemoryMonitorinstance. For Java4 or if theMemoryMonitorFactoryis not enabled then this method returns the "faux"MemoryMonitorimplementation, it does nothing. When enabled and for Java5 and above JVMs, and instance of theNotificationMemoryMonitoris returned.- Specified by:
getDefaultin classObjectFactory<MemoryMonitor>- Parameters:
parameterTypes- not usedparameterValues- not used- Returns:
MemoryMonitorinstance- Throws:
CreationException- if theMemoryMonitorcan not be created.
-
-