GigaSpaces XAP 9.7.2 API

org.openspaces.core.space
Class AbstractSpaceFactoryBean

java.lang.Object
  extended by org.openspaces.core.space.AbstractSpaceFactoryBean
All Implemented Interfaces:
com.gigaspaces.internal.dump.InternalDumpProcessor, EventListener, MemberAliveIndicator, ServiceDetailsProvider, Aware, BeanNameAware, DisposableBean, FactoryBean, InitializingBean, ApplicationContextAware, ApplicationListener
Direct Known Subclasses:
DirectSpaceFactoryBean, UrlSpaceFactoryBean

public abstract class AbstractSpaceFactoryBean
extends Object
implements BeanNameAware, InitializingBean, DisposableBean, FactoryBean, ApplicationContextAware, ApplicationListener, MemberAliveIndicator, ServiceDetailsProvider, com.gigaspaces.internal.dump.InternalDumpProcessor

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  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()
           
 String getName()
           
 Object getObject()
          Spring factory bean returning the IJSpace created during the bean initialization (afterPropertiesSet()).
 Class<? extends IJSpace> getObjectType()
          Returns the object type of the factory bean.
protected  SecurityConfig getSecurityConfig()
           
 ServiceDetails[] getServicesDetails()
          Retruns one or more service details that the service exposes.
 boolean isAlive()
          Returns if this space is alive or not by pinging the Space and if it is considered healthy.
 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 process(com.gigaspaces.internal.dump.InternalDump dump)
           
 void setApplicationContext(ApplicationContext applicationContext)
          Injected by Spring thanks to ApplicationContextAware.
 void setBeanName(String name)
           
 void setCredentialsProvider(CredentialsProvider credentialsProvider)
          Sets the security configuration with the provided custom credentials provider.
 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 configuration for the Space.
 void setUserDetails(UserDetails userDetails)
          Sets the security configuration with the provided custom user details.
 
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 behavior (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.


setUserDetails

public void setUserDetails(UserDetails userDetails)
Sets the security configuration with the provided custom user details.

Parameters:
userDetails - a custom user details.

setCredentialsProvider

public void setCredentialsProvider(CredentialsProvider credentialsProvider)
Sets the security configuration with the provided custom credentials provider.

Parameters:
credentialsProvider - a custom credentials provider.

setSecurityConfig

public void setSecurityConfig(SecurityConfig securityConfig)
Sets security configuration 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()

setBeanName

public void setBeanName(String name)
Specified by:
setBeanName in interface BeanNameAware

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 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()
                throws Exception
Returns if this space is alive or not by pinging the Space and if it is considered healthy.

Specified by:
isAlive in interface MemberAliveIndicator
Throws:
Exception

doCreateSpace

protected abstract 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.


getServicesDetails

public ServiceDetails[] getServicesDetails()
Description copied from interface: ServiceDetailsProvider
Retruns one or more service details that the service exposes.

Specified by:
getServicesDetails in interface ServiceDetailsProvider

getName

public String getName()
Specified by:
getName in interface com.gigaspaces.internal.dump.InternalDumpProcessor

process

public void process(com.gigaspaces.internal.dump.InternalDump dump)
             throws com.gigaspaces.internal.dump.InternalDumpProcessorFailedException
Specified by:
process in interface com.gigaspaces.internal.dump.InternalDumpProcessor
Throws:
com.gigaspaces.internal.dump.InternalDumpProcessorFailedException

GigaSpaces XAP 9.7.2 API

Copyright © GigaSpaces.