GigaSpaces - Open Spaces

org.openspaces.core.space
Class AbstractSpaceFactoryBean

java.lang.Object
  extended by org.openspaces.core.space.AbstractSpaceFactoryBean
All Implemented Interfaces:
EventListener, MemberAliveIndicator, DisposableBean, FactoryBean, InitializingBean, ApplicationContextAware, ApplicationListener
Direct Known Subclasses:
DirectSpaceFactoryBean, UrlSpaceFactoryBean

public abstract class AbstractSpaceFactoryBean
extends Object
implements InitializingBean, DisposableBean, FactoryBean, ApplicationContextAware, ApplicationListener, MemberAliveIndicator

Base class for most space factory beans responsible for creating/finding IJSpace implementation.

Provides support for raising Spring application events: BeforeSpaceModeChangeEvent and AfterSpaceModeChangeEvent alerting other beans of the current space mode (primary/backup). Beans that wish to be notified of it should implement Spring ApplicationListener. Note that this space mode events might be raised more than once for the same space mode, and beans that listen to it should take it into account.

The space mode event will be raised regardless of the space "type" that is used. For embedded spaces, an actual space mode event listener will be registered with the actual cluster member (if not in cluster mode, the actual space). For remote space lookups (jini/rmi), no listener will be registered and Space mode events will still be raised during context refresh with a PRIMARY mode in order to allow beans to be written regardless of how the space is looked up.

Derived classes should implement the doCreateSpace() to obtain the IJSpace.

Author:
kimchy

Field Summary
protected  Log logger
           
 
Constructor Summary
AbstractSpaceFactoryBean()
           
 
Method Summary
 void afterPropertiesSet()
          Initializes the space by calling the doCreateSpace().
 void destroy()
          Destroys the space and unregisters the internal space mode listener (if registered).
protected abstract  com.j_spaces.core.IJSpace doCreateSpace()
          Responsible for creating/finding the actual IJSpace implementation.
protected  void fireSpaceAfterBackupEvent()
          Sends AfterSpaceModeChangeEvent events with space mode SpaceMode.BACKUP to all beans in the application context that implement the SpaceAfterBackupListener interface.
protected  void fireSpaceAfterPrimaryEvent()
          Sends AfterSpaceModeChangeEvent events with space mode SpaceMode.PRIMARY to all beans in the application context that implement the SpaceAfterPrimaryListener interface.
protected  void fireSpaceBeforeBackupEvent()
          Sends BeforeSpaceModeChangeEvent events with space mode SpaceMode.BACKUP to all beans in the application context that implement the SpaceBeforeBackupListener interface.
protected  void fireSpaceBeforePrimaryEvent()
          Sends BeforeSpaceModeChangeEvent events with space mode SpaceMode.PRIMARY to all beans in the application context that implement the SpaceBeforePrimaryListener interface.
protected  ApplicationContext getApplicationContext()
           
 Object getObject()
          Spring factory bean returning the IJSpace created during the bean initialization (afterPropertiesSet()).
 Class<? extends com.j_spaces.core.IJSpace> getObjectType()
          Returns the object type of the factory bean.
protected  SecurityConfig getSecurityConfig()
           
 boolean isAlive()
          Returns if this space is alive or not by pinging the Space.
 boolean isMemberAliveEnabled()
          Returns the setEnableMemberAliveIndicator(Boolean) flag.
protected  boolean isRegisterForSpaceModeNotifications()
          Returns if the space should register for primary backup notifications.
 boolean isSingleton()
          Returns true since this factory is a singleton.
 void onApplicationEvent(ApplicationEvent applicationEvent)
          If ContextRefreshedEvent is raised will send two extra events: BeforeSpaceModeChangeEvent and AfterSpaceModeChangeEvent with the current space mode.
 void setApplicationContext(ApplicationContext applicationContext)
          Injected by Spring thanks to ApplicationContextAware.
 void setEnableMemberAliveIndicator(Boolean enableMemberAliveIndicator)
          Should this Space bean control if the cluster member is alive or not.
 void setPrimaryBackupListener(com.gigaspaces.cluster.activeelection.ISpaceModeListener primaryBackupListener)
          Sets a custom primary backup listener
 void setRegisterForSpaceModeNotifications(boolean registerForSpaceMode)
          Sets if the space should register for primary backup (mode) notifications.
 void setSecurityConfig(SecurityConfig securityConfig)
          Sets security confiugration for the Space.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected Log logger
Constructor Detail

AbstractSpaceFactoryBean

public AbstractSpaceFactoryBean()
Method Detail

setRegisterForSpaceModeNotifications

public void setRegisterForSpaceModeNotifications(boolean registerForSpaceMode)
Sets if the space should register for primary backup (mode) notifications. Default behaviour (if the flag was not set) will register to primary backup notification if the space was found using an embedded protocol, and will not register for notification if the space was found using rmi or jini protocols.


setSecurityConfig

public void setSecurityConfig(SecurityConfig securityConfig)
Sets security confiugration for the Space. If not set, no security will be used.


getSecurityConfig

protected SecurityConfig getSecurityConfig()

setApplicationContext

public void setApplicationContext(ApplicationContext applicationContext)
                           throws BeansException
Injected by Spring thanks to ApplicationContextAware.

Specified by:
setApplicationContext in interface ApplicationContextAware
Throws:
BeansException

getApplicationContext

protected ApplicationContext getApplicationContext()

setPrimaryBackupListener

public void setPrimaryBackupListener(com.gigaspaces.cluster.activeelection.ISpaceModeListener primaryBackupListener)
Sets a custom primary backup listener


setEnableMemberAliveIndicator

public void setEnableMemberAliveIndicator(Boolean enableMemberAliveIndicator)
Should this Space bean control if the cluster member is alive or not. Defaults to true if the Space started is an embedded Space, and false if the it is connected to a remote Space.


afterPropertiesSet

public void afterPropertiesSet()
                        throws DataAccessException
Initializes the space by calling the doCreateSpace().

Registers with the Space an internal space mode listener in order to be able to send Spring level BeforeSpaceModeChangeEvent and AfterSpaceModeChangeEvent for primary and backup handling of different beans within the context. The registration is based on isRegisterForSpaceModeNotifications().

Specified by:
afterPropertiesSet in interface InitializingBean
Throws:
DataAccessException

destroy

public void destroy()
             throws Exception
Destroys the space and unregisters the internal space mode listener (if registered).

Specified by:
destroy in interface DisposableBean
Throws:
Exception

onApplicationEvent

public void onApplicationEvent(ApplicationEvent applicationEvent)
If ContextRefreshedEvent is raised will send two extra events: BeforeSpaceModeChangeEvent and AfterSpaceModeChangeEvent with the current space mode. This is done since other beans that use this events might not catch them while the context is constructed.

Note, this will mean that events with the same Space mode might be raised, one after the other, and Spring beans that listens for them should take it into account.

Specified by:
onApplicationEvent in interface ApplicationListener

getObject

public Object getObject()
Spring factory bean returning the IJSpace created during the bean initialization (afterPropertiesSet()).

Specified by:
getObject in interface FactoryBean
Returns:
The IJSpace implementation

getObjectType

public Class<? extends com.j_spaces.core.IJSpace> getObjectType()
Returns the object type of the factory bean. Defaults to IJSpace class or the actual IJSpace implementation class.

Specified by:
getObjectType in interface FactoryBean

isSingleton

public boolean isSingleton()
Returns true since this factory is a singleton.

Specified by:
isSingleton in interface FactoryBean

isMemberAliveEnabled

public boolean isMemberAliveEnabled()
Returns the setEnableMemberAliveIndicator(Boolean) flag.

Specified by:
isMemberAliveEnabled in interface MemberAliveIndicator

isAlive

public boolean isAlive()
Returns if this space is alive or not by pinging the Space.

Specified by:
isAlive in interface MemberAliveIndicator

doCreateSpace

protected abstract com.j_spaces.core.IJSpace doCreateSpace()
                                                    throws DataAccessException
Responsible for creating/finding the actual IJSpace implementation.

Returns:
The IJSpace implementation used for the factory bean
Throws:
DataAccessException

isRegisterForSpaceModeNotifications

protected boolean isRegisterForSpaceModeNotifications()
Returns if the space should register for primary backup notifications. If setRegisterForSpaceModeNotifications(boolean) was set, will return this flag. If not, will register to primary backup notification if the space was found using an embedded protocol, and will not register for notification if the space was found using rmi or jini protocols.


fireSpaceBeforeBackupEvent

protected void fireSpaceBeforeBackupEvent()
Sends BeforeSpaceModeChangeEvent events with space mode SpaceMode.BACKUP to all beans in the application context that implement the SpaceBeforeBackupListener interface.


fireSpaceAfterBackupEvent

protected void fireSpaceAfterBackupEvent()
Sends AfterSpaceModeChangeEvent events with space mode SpaceMode.BACKUP to all beans in the application context that implement the SpaceAfterBackupListener interface.


fireSpaceBeforePrimaryEvent

protected void fireSpaceBeforePrimaryEvent()
Sends BeforeSpaceModeChangeEvent events with space mode SpaceMode.PRIMARY to all beans in the application context that implement the SpaceBeforePrimaryListener interface.


fireSpaceAfterPrimaryEvent

protected void fireSpaceAfterPrimaryEvent()
Sends AfterSpaceModeChangeEvent events with space mode SpaceMode.PRIMARY to all beans in the application context that implement the SpaceAfterPrimaryListener interface.


GigaSpaces - Open Spaces

Copyright © GigaSpaces.