01: /*
02: * JOnAS: Java(TM) Open Application Server
03: * Copyright (C) 1999 Bull S.A.
04: * Contact: jonas-team@objectweb.org
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2.1 of the License, or any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19: * USA
20: *
21: * Initial developer(s): Adriana Danes
22: *
23: * --------------------------------------------------------------------------
24: * $Id: AbsReconfigurator.java 6661 2005-04-28 08:43:27Z benoitf $
25: * --------------------------------------------------------------------------
26: */
27:
28: package org.objectweb.jonas.management;
29:
30: // general Java imports
31: import org.objectweb.jonas.common.Log;
32: import org.objectweb.util.monolog.api.Logger;
33: import org.objectweb.util.monolog.api.BasicLevel;
34:
35: /**
36: * This class allows for persistent reconfiguration of a JOnAS service or of a JOnAS resource
37: * This is an abstract class. It must be extended to handle properties or xml file
38: * @author Adriana Danes
39: * @author Florent Benoit : Add an abstract class to define ReconfiguratorXml in addition to ReconfiguratorProp
40: */
41: public abstract class AbsReconfigurator implements Reconfigurator {
42:
43: /**
44: * Name of the JOnAS service or JOnAS resource to which this object is associated
45: */
46: protected String name;
47:
48: /**
49: * Name of the file updated by the saveConfig method
50: */
51: protected String configFileName;
52:
53: /**
54: * The sequence number of the last treated management notification
55: */
56: protected long lastSequence;
57:
58: /**
59: * Logger used
60: */
61: protected static Logger logger = null;
62:
63: /**
64: * Construct a reconfigurator for a JOnAS service or a JOnAS resource
65: * @param name Name of the JOnAS service or JOnAS resource to which this object is associated
66: * @param configFileName name of the config file
67: */
68: public AbsReconfigurator(String name, String configFileName) {
69: // Get a logger for server traces
70: logger = Log.getLogger(Log.JONAS_MANAGEMENT_PREFIX);
71: this .name = name;
72: this .configFileName = configFileName;
73: this .lastSequence = 0;
74: if (logger.isLoggable(BasicLevel.DEBUG)) {
75: logger.log(BasicLevel.DEBUG, "Creating Reconfigurator for "
76: + name + " - configuration file is "
77: + configFileName);
78: }
79: }
80:
81: /**
82: * Saves the updated configuration
83: * @param sequence the sequence number of management notification producing the save (in fact store) operation
84: */
85: public abstract void saveConfig(long sequence)
86: throws ReconfigException;
87:
88: }
|