in velocity-engine-core/src/main/java/org/apache/velocity/app/event/EventCartridge.java [81:123]
public synchronized void setRuntimeServices(RuntimeServices rs)
{
if (rsvc == null)
{
rsvc = rs;
/* allow for this method to be called *after* adding event handlers */
for (EventHandler handler : referenceHandlers)
{
if (handler instanceof RuntimeServicesAware && !initializedHandlers.contains(handler))
{
((RuntimeServicesAware) handler).setRuntimeServices(rs);
initializedHandlers.add(handler);
}
}
if (methodExceptionHandler != null &&
methodExceptionHandler instanceof RuntimeServicesAware &&
!initializedHandlers.contains(methodExceptionHandler))
{
((RuntimeServicesAware) methodExceptionHandler).setRuntimeServices(rs);
initializedHandlers.add(methodExceptionHandler);
}
for (EventHandler handler : includeHandlers)
{
if (handler instanceof RuntimeServicesAware && !initializedHandlers.contains(handler))
{
((RuntimeServicesAware) handler).setRuntimeServices(rs);
initializedHandlers.add(handler);
}
}
for (EventHandler handler : invalidReferenceHandlers)
{
if (handler instanceof RuntimeServicesAware && !initializedHandlers.contains(handler))
{
((RuntimeServicesAware) handler).setRuntimeServices(rs);
initializedHandlers.add(handler);
}
}
}
else if (rsvc != rs)
{
throw new VelocityException("an event cartridge cannot be used by several different runtime services instances");
}
}