001: /*
002: * Copyright 2006 Luca Garulli (luca.garulli@assetdata.it)
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.romaframework.core.flow;
018:
019: import org.romaframework.aspect.session.SessionInfo;
020: import org.romaframework.core.schema.SchemaElement;
021: import org.romaframework.core.schema.SchemaField;
022:
023: /**
024: * Listener interface of events. Aspects and modules can implement this interface to intercept events generated by Roma controller.
025: *
026: * @author Luca Garulli (luca.garulli@assetdata.it)
027: */
028: public interface UserObjectEventListener {
029: /**
030: * Callback invoked before the execution of any action by the Controller. Events are themselve Actions.
031: *
032: * @param iContent
033: * The User Object
034: * @param iAction
035: * The Schema Action instance
036: * @return true if the execution can proceed, false otherwise
037: */
038: public boolean onBeforeActionExecution(Object iContent,
039: SchemaElement iAction);
040:
041: /**
042: * Callback invoked after the execution of any action by the Controller. Events are themselve Actions.
043: *
044: * @param iContent
045: * The User Object
046: * @param iAction
047: * The Schema Action instance
048: */
049: public void onAfterActionExecution(Object iContent,
050: SchemaElement iAction);
051:
052: /**
053: * Callback invoked before to read a field.
054: *
055: * @param iContent
056: * Object owns the field to be read
057: * @param iField
058: * Field to be read
059: * @param iCurrentValue
060: * Current field value
061: * @return If the implementation change the value, returns the modified value, otherwise the same of iCurrentValue parameter
062: */
063: public Object onBeforeFieldRead(Object iContent,
064: SchemaField iField, Object iCurrentValue);
065:
066: /**
067: * Callback invoked after have read a field.
068: *
069: * @param iContent
070: * Object owns the field to be read
071: * @param iField
072: * Field to be read
073: * @param iCurrentValue
074: * Current field value
075: * @return If the implementation change the value, returns the modified value, otherwise the same of iCurrentValue parameter
076: */
077: public Object onAfterFieldRead(Object iContent, SchemaField iField,
078: Object iCurrentValue);
079:
080: /**
081: * Callback invoked before a field is written.
082: *
083: * @param iContent
084: * Object owns the field to be written
085: * @param iField
086: * Field to be written
087: * @param iCurrentValue
088: * Value to write in the field
089: * @return If the implementation change the value, returns the modified value, otherwise the same of iCurrentValue parameter
090: */
091: public Object onBeforeFieldWrite(Object iContent,
092: SchemaField iField, Object iCurrentValue);
093:
094: /**
095: * Callback invoked after a field is written.
096: *
097: * @param iContent
098: * Object owns the field to be written
099: * @param iField
100: * Field to be written
101: * @param iCurrentValue
102: * Value to write in the field
103: * @return If the implementation change the value, returns the modified value, otherwise the same of iCurrentValue parameter
104: */
105: public Object onAfterFieldWrite(Object iContent,
106: SchemaField iField, Object iCurrentValue);
107:
108: /**
109: * Invoked when a field is changed outside Roma, usually from the user side.
110: *
111: * @param iSession
112: * User's session
113: * @param iContent
114: * POJO refreshed
115: * @param iField
116: * Field refreshed
117: */
118: public void onFieldRefresh(SessionInfo iSession, Object iContent,
119: SchemaField iField);
120: }
|