View Javadoc
1 /* ====================================================================
2 * License:
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The end-user documentation included with the redistribution,
17 * if any, must include the following acknowledgment:
18 * "This product includes software developed by
19 * Robert Half International (http://www.rhi.com/)."
20 * Alternately, this acknowledgment may appear in the software itself,
21 * if and wherever such third-party acknowledgments normally appear.
22 *
23 * 4. The names "Parc", "RHI", and "Robert Half International" must
24 * not be used to endorse or promote products derived from this
25 * software without prior written permission. For written
26 * permission, please contact pete.mckinstry@rhi.com.
27 *
28 * 5. Products derived from this software may not be called "PARC",
29 * nor may "PARC" appear in their name, without prior written
30 * permission of Robert Half International.
31 *
32 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
33 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
36 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
39 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
40 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
41 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
42 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 * ====================================================================
45 *
46 */
47 package com.rhi.architecture.parc;
48
49 import com.rhi.architecture.resource.InitializationException;
50
51 import java.util.Properties;
52
53 /***
54 * The OutputAdapter is responsible for taking a completed
55 * work set and storing it.
56 *
57 * @author Pete McKinstry
58 * @copyright 2002, Robert Half Int'l., Inc. All rights reserved.
59 *
60 * @since 1.0
61 */
62 public interface OutputAdapter extends Adapter, Runnable {
63
64 /***
65 * key in configuration that can be used to set the thread mode for the
66 * output adapter.
67 */
68 public static final String RUN_AS_THREAD_KEY =
69 "OutputAdapter.RunAsThread";
70 /***
71 * RUN_AS_THREAD = 'Y' means multi-threaded.
72 */
73 public static final String RUN_AS_THREAD = "Y";
74 /***
75 * DEFAULT_THREAD_MODE is multi-threaded
76 */
77 public static final String DEFAULT_THREAD_MODE = RUN_AS_THREAD;
78
79 /***
80 * Initialization. This method can acquire resources that will
81 * be needed for record processing, and/or configure settings.
82 *
83 * @param props
84 *
85 * @throws InitializationException - an error occured while
86 * configuring the output adapter. This will cause the
87 * application to shutdown.
88 *
89 * @since 1.0
90 */
91 public void init(Properties props) throws InitializationException;
92
93 /***
94 * Processing method for the output adapter. Opens the possibility
95 * of processing completed records asynchronously while the pipeline
96 * is running. It can also be run directly by the exec strategy from
97 * within the main thread. Both modes are supported and reasonable.
98 *
99 * @see java.lang.Runnable#run()
100 */
101 public void run();
102
103 /***
104 * Mark output adapter complete
105 */
106 public void markComplete();
107
108 /***
109 * Close is called outside of the strategy to allow the output
110 * adapter to commit any work that should only be done once per
111 * interface run. NOT once per batch cycle like flush().
112 *
113 * @throws ProcessingException Signals a fatal error. The
114 * application will shutdown if this exception is thrown.
115 *
116 * @since 1.1
117 */
118 public void close() throws ProcessingException;
119
120 /***
121 * Perform any cleanup. Called by the PARCApplication during
122 * application shutdown. This should do any final cleanup and
123 * closing of resources. Note: It is not called during repeated
124 * batch cycles, so it's only useful for true shutdown logic.
125 * If you need something to happen during each pipeline
126 * execution, use <code>flush()</code>. Since the application
127 * is shutting down when cleanup is called, there are no
128 * checked exceptions thrown from this method. Cleanup failures
129 * should be able to be ignored.
130 *
131 * @since 1.0
132 */
133 public void cleanup();
134
135 /***
136 * Set valid record channel
137 *
138 * @param ch
139 */
140 public void setValidChannel(Channel ch);
141
142 /***
143 * Set error record channel
144 *
145 * @param ch
146 */
147 public void setErrorChannel(Channel ch);
148
149 /***
150 * Set the handler used for reporting fatal errors during
151 * Filter processing. Since each Filter is run w/in a
152 * thread, the call stack is not an appropriate mechanism
153 * for reporting critical processing errors. Therefore, a
154 * Handler object is provided for the Filter to use for
155 * logging unrecoverable processing errors.
156 * Note: This handler must assume that any error is fatal.
157 * Non-fatal errors should be handled by adding errors to
158 * the record(s) being processed.
159 *
160 * @param h - the exception handler that should be used.
161 *
162 * @since 1.0
163 */
164 public void setExceptionHandler(ExceptionHandler h);
165
166 }
This page was automatically generated by Maven