01: /*
02: * This file or a portion of this file is licensed under the terms of
03: * the Globus Toolkit Public License, found in file GTPL, or at
04: * http://www.globus.org/toolkit/download/license.html. This notice must
05: * appear in redistributions of this file, with or without modification.
06: *
07: * Redistributions of this Software, with or without modification, must
08: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
09: * some other similar material which is provided with the Software (if
10: * any).
11: *
12: * Copyright 1999-2004 University of Chicago and The University of
13: * Southern California. All rights reserved.
14: */
15: package org.griphyn.cPlanner.parser.dax;
16:
17: import org.griphyn.cPlanner.classes.SubInfo;
18:
19: /**
20: * This interfaces defines the callback calls from DAX parsing. A slim
21: * and memory-efficient parser of DAX is expected to implement these
22: * callbacks, and generate its own information on the fly.
23: *
24: * @author Karan Vahi
25: * @author Jens-S. Vöckler
26: * @version $Revision: 50 $
27: */
28: public interface Callback {
29:
30: /**
31: * Return a object that is constructed during the parsing of the object.
32: * The type of the object that is constructed is determined by the
33: * implementing callback handler. For example, it could be an Adag object
34: * used by Pegasus or a map containing the graph structure of the dax.
35: * The implementing classes should keep a boolean flag that signifies whether
36: * the corresponding object has been created by the implementing class or
37: * not. The variable should be set when the implementing callback handler
38: * deems that it has enough data to construct that object.
39: */
40: public Object getConstructedObject();
41:
42: /**
43: * Callback when the opening tag was parsed. This contains all
44: * attributes and their raw values within a map. This callback can
45: * also be used to initialize callback-specific resources.
46: *
47: * @param attributes is a map of attribute key to attribute value
48: */
49: public void cbDocument(java.util.Map attributes);
50:
51: /**
52: * Callback for the job from section 2 jobs. These jobs are completely
53: * assembled, but each is passed separately.
54: *
55: * @param job is the DAX-style job.
56: */
57: public void cbJob(SubInfo job);
58:
59: /**
60: * Callback for child and parent relationships from section 3.
61: *
62: * @param child is the IDREF of the child element.
63: * @param parents is a list of IDREFs of the included parents.
64: */
65: public void cbParents(String child, java.util.List parents);
66:
67: /**
68: * Callback when the parsing of the document is done. While this state
69: * could also be determined from the return of the invocation of the
70: * parser, that return may be hidden in another place of the code.
71: * This callback can be used to free callback-specific resources.
72: */
73: public void cbDone();
74:
75: }
|