org.loom.mapping
Class ReloadableActionMappingRepository

java.lang.Object
  extended by org.loom.mapping.ReloadableActionMappingRepository
All Implemented Interfaces:
ActionMappingRepository, org.zeroturnaround.javarebel.ClassEventListener

@Singleton
public class ReloadableActionMappingRepository
extends java.lang.Object
implements ActionMappingRepository, org.zeroturnaround.javarebel.ClassEventListener

ActionMappingRepository that detects changes to classes in the background. To be used with JavaRebel. The current implementation supports modifications to any Action class or dependent classes (classes with annotations that have created validators in any action). Class additions or deletions are not yet supported.


Field Summary
 
Fields inherited from interface org.zeroturnaround.javarebel.ClassEventListener
EVENT_LOADED, EVENT_RELOADED, PRIORITY_CORE, PRIORITY_DEFAULT, PRIORITY_WEB
 
Constructor Summary
ReloadableActionMappingRepository()
           
ReloadableActionMappingRepository(ActionMappingRepository delegate)
           
 
Method Summary
 void addActionMapping(ActionMapping mapping)
           
 ActionMapping getActionMappingByClass(java.lang.Class<? extends Action> actionClass)
           
 ActionMapping getActionMappingByName(java.lang.String actionClassName)
           
 Event getEvent(java.lang.String uri, LoomServletRequest request)
           
 java.lang.String getHandle(java.lang.String uri)
           
 java.util.Collection<java.lang.String> getMappings()
           
static boolean isAction(java.lang.Class<?> clazz)
           
 void onClassEvent(int eventType, java.lang.Class clazz)
          Load/Reload an action mapping
 int priority()
           
 ActionMapping removeActionMapping(java.lang.Class<? extends Action> actionClass)
          Remove the action mapping for one action class
 void setActionMappingFactory(ActionMappingFactory actionMappingFactory)
           
 void setCatchReloadingExceptions(boolean catchReloadingExceptions)
           
 void setDelegate(ActionMappingRepository delegate)
           
 void validateActionMappings()
          Validate the registered ActionMappings to check that there are no two overlapping events that may produce the same URL
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReloadableActionMappingRepository

public ReloadableActionMappingRepository(ActionMappingRepository delegate)

ReloadableActionMappingRepository

public ReloadableActionMappingRepository()
Method Detail

priority

public int priority()
Specified by:
priority in interface org.zeroturnaround.javarebel.ClassEventListener

onClassEvent

public void onClassEvent(int eventType,
                         java.lang.Class clazz)
Load/Reload an action mapping

Specified by:
onClassEvent in interface org.zeroturnaround.javarebel.ClassEventListener

isAction

public static boolean isAction(java.lang.Class<?> clazz)
Returns:
true if it's a valid Action class, false otherwise

getEvent

public Event getEvent(java.lang.String uri,
                      LoomServletRequest request)
Specified by:
getEvent in interface ActionMappingRepository
Parameters:
uri - the uri as returned by request.getServletPath()
request - the current request object
Returns:
the ActionMapping corresponding to this request, null if no Action was a match

getActionMappingByName

public ActionMapping getActionMappingByName(java.lang.String actionClassName)
Specified by:
getActionMappingByName in interface ActionMappingRepository
Parameters:
actionClassName - the class name OR the unqualified class name (without the package path)
Returns:
the actionMapping

removeActionMapping

public ActionMapping removeActionMapping(java.lang.Class<? extends Action> actionClass)
Description copied from interface: ActionMappingRepository
Remove the action mapping for one action class

Specified by:
removeActionMapping in interface ActionMappingRepository
Parameters:
actionClass - the action class to be removed
Returns:
the removed ActionMapping instance, null if not found

addActionMapping

public void addActionMapping(ActionMapping mapping)
Specified by:
addActionMapping in interface ActionMappingRepository

setCatchReloadingExceptions

public void setCatchReloadingExceptions(boolean catchReloadingExceptions)

getMappings

public java.util.Collection<java.lang.String> getMappings()
Specified by:
getMappings in interface ActionMappingRepository

getHandle

public java.lang.String getHandle(java.lang.String uri)
Specified by:
getHandle in interface ActionMappingRepository

getActionMappingByClass

public ActionMapping getActionMappingByClass(java.lang.Class<? extends Action> actionClass)
Specified by:
getActionMappingByClass in interface ActionMappingRepository
Parameters:
actionClass - the action class
Returns:
the required actionMapping

validateActionMappings

public void validateActionMappings()
Description copied from interface: ActionMappingRepository
Validate the registered ActionMappings to check that there are no two overlapping events that may produce the same URL

Specified by:
validateActionMappings in interface ActionMappingRepository

setActionMappingFactory

public void setActionMappingFactory(ActionMappingFactory actionMappingFactory)

setDelegate

@Inject
public void setDelegate(@Delegate
                               ActionMappingRepository delegate)