public synchronized void setRuntimeServices()

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");
        }
    }