01: /*
02: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
03: * Distributed under the terms of either:
04: * - the common development and distribution license (CDDL), v1.0; or
05: * - the GNU Lesser General Public License, v2.1 or later
06: * $Id: ElementChildTrigger.java 3634 2007-01-08 21:42:24Z gbevin $
07: */
08: package com.uwyn.rife.engine;
09:
10: /**
11: * This interface contains all the methods that a class must implement to be
12: * able to handle child trigger events.
13: * <p>Child triggers are setup in the site structure to drill down an element
14: * inheritance hierarchy according to value changes in inputs or cookies. This
15: * will happen both when values are sent by a client and when values are set
16: * by an element.
17: * <p>By registering an instance of a <code>ElementChildTrigger</code> class,
18: * it's possible to only allow the child to be activated according to certain
19: * conditions. This can for instance be used to validate an authentication
20: * session identifier, and only allow the child activation if the identifier
21: * is valid and not expired.
22: *
23: * @author Geert Bevin (gbevin[remove] at uwyn dot com)
24: * @version $Revision: 3634 $
25: * @see ElementSupport#setChildTrigger
26: * @since 1.0
27: */
28: public interface ElementChildTrigger {
29: /**
30: * This method will be called when a child trigger instance is registered
31: * and a value is provided for an input or cookie that is setup as a child
32: * trigger.
33: * <p>You are not allowed to access any information of the element context
34: * state besides the name and values of the child trigger variable. These
35: * are provided to you as method arguments. If you do try to access other
36: * state information, the engine will throw a {@link
37: * com.uwyn.rife.engine.exceptions.RequestAccessDeniedException}
38: * exception. This is needed to be able to record all the child triggers
39: * that occurred. The engine uses this information to replay child
40: * triggers automatically during subsequent requests and access a child
41: * element directly if all child triggers are still successful.
42: *
43: * @param name the name of the child trigger variable
44: * @param values the values of the child trigger variable
45: * @return <code>true</code> if the child element can be executed; or
46: * <p><code>false</code> if the logic should continue in the element that
47: * activated the child trigger
48: * @since 1.0
49: */
50: public boolean childTriggered(String name, String[] values);
51: }
|