ome.system
Class OmeroContext

java.lang.Object
  extended by org.springframework.core.io.DefaultResourceLoader
      extended by org.springframework.context.support.AbstractApplicationContext
          extended by org.springframework.context.support.AbstractRefreshableApplicationContext
              extended by org.springframework.context.support.AbstractRefreshableConfigApplicationContext
                  extended by org.springframework.context.support.AbstractXmlApplicationContext
                      extended by org.springframework.context.support.ClassPathXmlApplicationContext
                          extended by ome.system.OmeroContext
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactory, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.HierarchicalBeanFactory, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.ListableBeanFactory, org.springframework.context.ApplicationContext, org.springframework.context.ApplicationEventPublisher, org.springframework.context.ConfigurableApplicationContext, org.springframework.context.Lifecycle, org.springframework.context.MessageSource, org.springframework.core.io.ResourceLoader, org.springframework.core.io.support.ResourcePatternResolver

public class OmeroContext
extends org.springframework.context.support.ClassPathXmlApplicationContext

Provides static access for the creation of singleton and non-singleton application contexts. Also provides context names as constant fields which can be used for the lookup of particular contexts, through either getInstance(String) or ServiceFactory.ServiceFactory(String). By passing a Properties instance into the getClientContext(Properties) method, a non-static version is created. Currently this is only supported for the client context.

Since:
OME3.0
Author:

Josh Moore      josh.moore@gmx.de

Nested Class Summary
protected static class OmeroContext.Locator
          provides access to the protected methods of ContextSingletonBeanFactoryLocator which cannot be used externally.
 
Field Summary
static String CLIENT_CONTEXT
          identifier for an OmeroContext configured in classpath*:beanRefContext.xml for use by remote (via JNDI/RMI) clients.
static String MANAGED_CONTEXT
          identifier for an OmeroContext configured in classpath*:beanRefContext.xml for use by server-side processes.
 
Fields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
 
Fields inherited from interface org.springframework.context.ConfigurableApplicationContext
CONFIG_LOCATION_DELIMITERS, LOAD_TIME_WEAVER_BEAN_NAME
 
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
 
Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX
 
Fields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
 
Constructor Summary
OmeroContext(String configLocation)
           
OmeroContext(String[] configLocations)
           
OmeroContext(String[] configLocations, org.springframework.context.ApplicationContext parent)
           
OmeroContext(String[] configLocations, boolean refresh)
           
OmeroContext(String[] configLocations, boolean refresh, org.springframework.context.ApplicationContext parent)
           
 
Method Summary
 void applyBeanPropertyValues(Object target, Class<? extends ServiceInterface> beanInterface)
          Uses the methods of this context's BeanFactory to autowire any Object based on the service class.
 void applyBeanPropertyValues(Object target, String beanName)
          Uses the methods of this context's BeanFactory to autowire any Object based on the given beanName.
 void closeAll()
          closes all the nested OmeroContexts within this instance.
static OmeroContext getClientContext()
          create (if necessary) and return the single default client OmeroContext.
static OmeroContext getClientContext(Properties props)
          initialize a new client OmeroContext (named CLIENT_CONTEXT), using the getContext(Properties, String) method.
static OmeroContext getContext(Properties props, String context)
          initialize a new client OmeroContext using the Properties provided as values for property (e.g.
static OmeroContext getInstance(String beanFactoryName)
          create (if necessary) and return the single default OmeroContext named by the beanFactoryName parameter.
static OmeroContext getManagedServerContext()
          create (if necessary) and return the single default managed OmeroContext.
 String getProperty(String propertyName)
           
protected  void onRefresh()
           
 void publishEvent(org.springframework.context.ApplicationEvent event)
           
 void publishMessage(InternalMessage msg)
          Convenience method around publishEvent(org.springframework.context.ApplicationEvent) which catches all MessageException and unwraps the contained Throwable instance and rethrows.
 void refreshAll()
          refreshes all the nested OmeroContexts within this instance.
 void refreshAllIfNecessary()
          Calls #refreshAll() if {@link #isRunning()} throws an {@link IllegalStateException}.
 
Methods inherited from class org.springframework.context.support.ClassPathXmlApplicationContext
getConfigResources
 
Methods inherited from class org.springframework.context.support.AbstractXmlApplicationContext
initBeanDefinitionReader, loadBeanDefinitions, loadBeanDefinitions
 
Methods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
afterPropertiesSet, getConfigLocations, getDefaultConfigLocations, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
 
Methods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext
closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
 
Methods inherited from class org.springframework.context.support.AbstractApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addListener, cancelRefresh, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getDisplayName, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResourcePatternResolver, getResources, getStartupDate, getType, initApplicationEventMulticaster, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, obtainFreshBeanFactory, onClose, postProcessBeanFactory, prepareBeanFactory, prepareRefresh, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, setDisplayName, setParent, start, stop, toString
 
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
getClassLoader, getResource, getResourceByPath, setClassLoader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResource
 

Field Detail

CLIENT_CONTEXT

public static final String CLIENT_CONTEXT
identifier for an OmeroContext configured in classpath*:beanRefContext.xml for use by remote (via JNDI/RMI) clients.

See Also:
Constant Field Values

MANAGED_CONTEXT

public static final String MANAGED_CONTEXT
identifier for an OmeroContext configured in classpath*:beanRefContext.xml for use by server-side processes. All objects obtained from the context are in a state for immediate use.

See Also:
Constant Field Values
Constructor Detail

OmeroContext

public OmeroContext(String configLocation)
             throws org.springframework.beans.BeansException
Throws:
org.springframework.beans.BeansException

OmeroContext

public OmeroContext(String[] configLocations)
             throws org.springframework.beans.BeansException
Throws:
org.springframework.beans.BeansException

OmeroContext

public OmeroContext(String[] configLocations,
                    boolean refresh)
             throws org.springframework.beans.BeansException
Throws:
org.springframework.beans.BeansException

OmeroContext

public OmeroContext(String[] configLocations,
                    org.springframework.context.ApplicationContext parent)
             throws org.springframework.beans.BeansException
Throws:
org.springframework.beans.BeansException

OmeroContext

public OmeroContext(String[] configLocations,
                    boolean refresh,
                    org.springframework.context.ApplicationContext parent)
             throws org.springframework.beans.BeansException
Throws:
org.springframework.beans.BeansException
Method Detail

getClientContext

public static OmeroContext getClientContext()
create (if necessary) and return the single default client OmeroContext. Any two calls to this method will return the same (==) context instance.

See Also:
CLIENT_CONTEXT

getClientContext

public static OmeroContext getClientContext(Properties props)
initialize a new client OmeroContext (named CLIENT_CONTEXT), using the getContext(Properties, String) method.

See Also:
getContext(Properties, String), CLIENT_CONTEXT, ServiceFactory.ServiceFactory(Login), ServiceFactory.ServiceFactory(Server), ServiceFactory.ServiceFactory(Properties)

getContext

public static OmeroContext getContext(Properties props,
                                      String context)
initialize a new client OmeroContext using the Properties provided as values for property (e.g. ${name}) replacement in Spring. Two calls to this method with the same argument will return different ( =! ) contexts.

Parameters:
props - Non-null properties for replacement.
context - Non-null name of context to find in beanRefContext.xml
See Also:
ServiceFactory.ServiceFactory(Login), ServiceFactory.ServiceFactory(Server), ServiceFactory.ServiceFactory(Properties)

getManagedServerContext

public static OmeroContext getManagedServerContext()
create (if necessary) and return the single default managed OmeroContext. Any two calls to this method will return the same (==) context instance. Managed means that the services are fully wrapped by interceptors, and are essentially the services made available remotely.

See Also:
#INTERNAL_CONTEXT

getInstance

public static OmeroContext getInstance(String beanFactoryName)
create (if necessary) and return the single default OmeroContext named by the beanFactoryName parameter. Any two calls to this method with the same parameter will return the same (==) context instance.

See Also:
getClientContext(), #getInternalServerContext(), getManagedServerContext()

applyBeanPropertyValues

public void applyBeanPropertyValues(Object target,
                                    String beanName)
Uses the methods of this context's BeanFactory to autowire any Object based on the given beanName.

See Also:
AutowireCapableBeanFactory.applyBeanPropertyValues(java.lang.Object, java.lang.String)

applyBeanPropertyValues

public void applyBeanPropertyValues(Object target,
                                    Class<? extends ServiceInterface> beanInterface)
Uses the methods of this context's BeanFactory to autowire any Object based on the service class. This is used by SelfConfigurableService instances to acquire dependencies.

See Also:
SelfConfigurableService, AutowireCapableBeanFactory.applyBeanPropertyValues(java.lang.Object, java.lang.String)

refreshAll

public void refreshAll()
refreshes all the nested OmeroContexts within this instance. This is useful when using a static context, and Properties which were pulled from System.getProperties() have been changed. If this is a server-side instance (MANAGED_CONTEXT or OmeroContext#INTERNAL_CONTEXT), this may take a significant amount of time.

See Also:
ConfigurableApplicationContext.refresh()

refreshAllIfNecessary

public void refreshAllIfNecessary()
Calls #refreshAll() if {@link #isRunning()} throws an {@link IllegalStateException}.


closeAll

public void closeAll()
closes all the nested OmeroContexts within this instance. If this is a server-side instance (MANAGED_CONTEXT or OmeroContext#INTERNAL_CONTEXT), this may take a significant amount of time.

See Also:
ConfigurableApplicationContext.close()

getProperty

public String getProperty(String propertyName)

publishEvent

public void publishEvent(org.springframework.context.ApplicationEvent event)
Specified by:
publishEvent in interface org.springframework.context.ApplicationEventPublisher
Overrides:
publishEvent in class org.springframework.context.support.AbstractApplicationContext

publishMessage

public void publishMessage(InternalMessage msg)
                    throws Throwable
Convenience method around publishEvent(org.springframework.context.ApplicationEvent) which catches all MessageException and unwraps the contained Throwable instance and rethrows.

Parameters:
msg -
Throws:
Throwable

onRefresh

protected void onRefresh()
                  throws org.springframework.beans.BeansException
Overrides:
onRefresh in class org.springframework.context.support.AbstractApplicationContext
Throws:
org.springframework.beans.BeansException


OmeroJava Api

Version: Beta-4.1.1-r5927-b91

Copyright © 2009 The University of Dundee. All Rights Reserved.