01: /*
02: * Licensed under the X license (see http://www.x.org/terms.htm)
03: */
04: package org.ofbiz.minerva.pool;
05:
06: import java.util.EventObject;
07:
08: /**
09: * An event caused by an object in a pool. The event indicates that the
10: * object was used, closed, or had an error occur. The typical response is
11: * to update the last used time in the pool for used events, and return the
12: * object to the pool for closed or error events.
13: *
14: * @author Aaron Mulder (ammulder@alumni.princeton.edu)
15: */
16: public class PoolEvent extends EventObject {
17:
18: /**
19: * The object has been closed and should be returned to the pool. Note this
20: * is not a final sort of closing - the object must still be able to be
21: * returned to the pool and reused.
22: */
23: public final static int OBJECT_CLOSED = -8986432;
24: /**
25: * Indicates that an error occured with the object. The object will be
26: * returned to the pool, since there will presumably be an exception
27: * thrown that precludes the client from closing it or returning it
28: * normally. This should not be used for final or destructive errors - the
29: * object must stil be able to be returned to the pool and reused.
30: */
31: public final static int OBJECT_ERROR = -8986433;
32: /**
33: * Indicates that the object was used, and its timestamp should be updated
34: * accordingly (if the pool tracks timestamps).
35: */
36: public final static int OBJECT_USED = -8986434;
37:
38: private int type;
39: private boolean catastrophic = false;
40:
41: /**
42: * Create a new event.
43: * @param source The source must be the object that was returned from the
44: * getObject method of the pool - the pool will use the source for
45: * some purpose depending on the type, so it cannot be an arbitrary
46: * object.
47: * @param type The event type.
48: */
49: public PoolEvent(Object source, int type) {
50: super (source);
51: if (type != OBJECT_CLOSED && type != OBJECT_ERROR
52: && type != OBJECT_USED)
53: throw new IllegalArgumentException("Invalid event type!");
54: this .type = type;
55: }
56:
57: /**
58: * Gets the event type.
59: * @see #OBJECT_CLOSED
60: * @see #OBJECT_USED
61: * @see #OBJECT_ERROR
62: */
63: public int getType() {
64: return type;
65: }
66:
67: /**
68: * Gets whether an object error was so bad that the object should not
69: * be reused by the pool. This is meaningful for error events only.
70: */
71: public boolean isCatastrophic() {
72: return catastrophic;
73: }
74:
75: /**
76: * Marks this as an error so severe that the object should not be reused by
77: * the pool.
78: */
79: public void setCatastrophic() {
80: catastrophic = true;
81: }
82: }
|