1 /**
2 *
3 * Copyright 2005 The Apache Software Foundation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.geronimo.kernel.config;
18
19 import org.apache.geronimo.kernel.repository.Artifact;
20
21 /**
22 * This interface can be used to monitor the progress of an operation on the
23 * configuration manager. Typically, the monitor will receive a number of
24 * calls to addConfiguration as the configuration manager decides which
25 * configurations will be effected by the operations. This is followed by a
26 * call to loading, starting, stopping or unloading and then a call to
27 * succeeded or failed for each configuration added.
28 *
29 *
30 * The one notable exception to this is the load operation which calls
31 * addConfiguration and and immediately follows it with a reading and then
32 * succeeded or failed. This is because the load operation needs to read each
33 * configuration to determine which additional configurations will need to be
34 * loaded.
35 *
36 * When an operation fails, the failed method is called with the cause. The
37 * configuration manager normally will follow the failure with compensating
38 * actions to bring the server back to the original state. For example, if it
39 * loaded a configuration, it will unload it. Each of the compensating
40 * actions will cause events to be fired.
41 *
42 * When the, operation is completed, the finished method will be called. This
43 * should be called event if the operation ultimately fails and throws an
44 * exception. It is recommended that you do not rely the finished method to
45 * be called in the case of an Exception as there are cases that will cause
46 * the configuration manager to immediately return without notification (such
47 * as an AssertionError).
48 * @version $Rev: 410741 $ $Date: 2006-05-31 21:35:48 -0700 (Wed, 31 May 2006) $
49 */
50 public interface LifecycleMonitor {
51 /**
52 * Adds a configuration to be monitored.
53 * @param configurationId the configuration identifier
54 */
55 void addConfiguration(Artifact configurationId);
56
57 /**
58 * The configuration manager has started reading the specified configuration.
59 * @param configurationId the configuration identifier
60 */
61 void reading(Artifact configurationId);
62
63 /**
64 * The configuration manager has begun loading the specified configuration.
65 * @param configurationId the configuration identifier
66 */
67 void loading(Artifact configurationId);
68
69 /**
70 * The configuration manager has begun starting the specified configuration.
71 * @param configurationId the configuration identifier
72 */
73 void starting(Artifact configurationId);
74
75 /**
76 * The configuration manager has begun stopping the specified configuration.
77 * @param configurationId the configuration identifier
78 */
79 void stopping(Artifact configurationId);
80
81 /**
82 * The configuration manager has begun unloading the specified configuration.
83 * @param configurationId the configuration identifier
84 */
85 void unloading(Artifact configurationId);
86
87 /**
88 * The previous operation on the specified configuration has completed successfully.
89 * @param configurationId the configuration identifier
90 */
91 void succeeded(Artifact configurationId);
92
93 /**
94 * The previous operation on the specified configuration has failed due to the specified exception.
95 * @param configurationId the configuration identifier
96 */
97 void failed(Artifact configurationId, Throwable cause);
98
99 /**
100 * The operation on the configuration manager has finished.
101 */
102 void finished();
103 }
104