01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * 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.commons.configuration.event;
18:
19: /**
20: * <p>
21: * An event class that is used for reporting errors that occurred while
22: * processing configuration properties.
23: * </p>
24: * <p>
25: * Some configuration implementations (e.g.
26: * <code>{@link org.apache.commons.configuration.DatabaseConfiguration}</code>
27: * or <code>{@link org.apache.commons.configuration.JNDIConfiguration}</code>
28: * use an underlying storage that can throw an exception on each property
29: * access. In earlier versions of this library such exceptions were logged and
30: * then silently ignored. This makes it impossible for a client to find out that
31: * something went wrong.
32: * </p>
33: * <p>
34: * To give clients better control over the handling of errors that occur during
35: * access of a configuration object a new event listener mechanism specific for
36: * exceptions is introduced: Clients can register itself at a configuration
37: * object as an <em>error listener</em> and are then notified about all
38: * internal errors related to the source configuration object.
39: * </p>
40: * <p>
41: * By inheriting from <code>ConfigurationEvent</code> this event class
42: * supports all properties that describe an operation on a configuration
43: * instance. In addition a <code>Throwable</code> object is available
44: * representing the occurred error. The event's type determines the operation
45: * that caused the error. Note that depending on the event type and the occurred
46: * exception not all of the other properties (e.g. name of the affected property
47: * or its value) may be available.
48: * </p>
49: *
50: * @author <a
51: * href="http://jakarta.apache.org/commons/configuration/team-list.html">Commons
52: * Configuration team</a>
53: * @version $Id: ConfigurationErrorEvent.java 495926 2007-01-13 17:06:29Z oheger $
54: * @since 1.4
55: * @see ConfigurationEvent
56: */
57: public class ConfigurationErrorEvent extends ConfigurationEvent {
58: /**
59: * The serial version UID.
60: */
61: private static final long serialVersionUID = -7433184493062648409L;
62:
63: /** Stores the exception that caused this event. */
64: private Throwable cause;
65:
66: /**
67: * Creates a new instance of <code>ConfigurationErrorEvent</code> and
68: * initializes it.
69: *
70: * @param source the event source
71: * @param type the event's type
72: * @param propertyName the name of the affected property
73: * @param propertyValue the value of the affected property
74: * @param cause the exception object that caused this event
75: */
76: public ConfigurationErrorEvent(Object source, int type,
77: String propertyName, Object propertyValue, Throwable cause) {
78: super (source, type, propertyName, propertyValue, true);
79: this .cause = cause;
80: }
81:
82: /**
83: * Returns the cause of this error event. This is the <code>Throwable</code>
84: * object that caused this event to be fired.
85: *
86: * @return the cause of this error event
87: */
88: public Throwable getCause() {
89: return cause;
90: }
91: }
|