KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > jmx > server > LogArchiverHelper


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.jmx.server;
5
6 import java.util.ArrayList JavaDoc;
7 import java.util.List JavaDoc;
8
9 import org.oddjob.logging.ConsoleArchiver;
10 import org.oddjob.logging.LogArchiver;
11 import org.oddjob.logging.LogEvent;
12 import org.oddjob.logging.LogLevel;
13 import org.oddjob.logging.LogListener;
14
15 /**
16  * Helper class for return log and console messages from an
17  * OddjobMBean.
18  */

19 public class LogArchiverHelper {
20
21     /**
22      * Listener used to gather local events.
23      *
24      */

25     static class LL implements LogListener {
26         List JavaDoc events = new ArrayList JavaDoc();
27         public void logEvent(LogEvent logEvent) {
28             events.add(logEvent);
29         }
30     }
31     
32     /**
33      * Get an array of the latest log events.
34      *
35      * @param component The componet to get log events for.
36      * @param context The context which holds the LogArchiver.
37      * @param last The sequence of the last event required.
38      * @param max The total number of events.
39      *
40      * @return An array of LogEvent objects.
41      */

42     public static LogEvent[] retrieveLogEvents(Object JavaDoc component,
43             ServerContext context, Long JavaDoc last, Integer JavaDoc max) {
44         LogArchiver archiver = context.getLogArchiver();
45         if (archiver == null) {
46             throw new NullPointerException JavaDoc("No LogArchiver availble on server.");
47         }
48         LL ll = new LL();
49         archiver.addLogListener(ll, component, LogLevel.DEBUG,
50                 last.longValue(), max.intValue());
51         archiver.removeLogListener(ll, component);
52         
53         return (LogEvent[]) ll.events.toArray(new LogEvent[0]);
54     }
55     
56     /**
57      * Get the console id.
58      *
59      * @param component The component.
60      * @param context The context.
61      *
62      * @return The console archiver id.
63      */

64     public static String JavaDoc consoleId(Object JavaDoc component,
65             ServerContext context) {
66         ConsoleArchiver archiver = context.getConsoleArchiver();
67         if (archiver == null) {
68             return null;
69         }
70         return archiver.consoleIdFor(component);
71     }
72     
73     /**
74      * Get an array of the latest console events.
75      *
76      * @param component The component.
77      * @param context The context
78      * @param last The last event number.
79      * @param max The maximum events required.
80      *
81      * @return An array of LogEvent objects.
82      */

83     public static LogEvent[] retrieveConsoleEvents(Object JavaDoc component,
84             ServerContext context, Long JavaDoc last, Integer JavaDoc max) {
85         LL ll = new LL();
86         ConsoleArchiver archiver = context.getConsoleArchiver();
87         if (archiver == null) {
88             throw new NullPointerException JavaDoc("No ConsoleArchiver availble on server.");
89         }
90         archiver.addConsoleListener(ll, component,
91                 last.longValue(), max.intValue());
92         archiver.removeConsoleListener(ll, component);
93         
94         return (LogEvent[]) ll.events.toArray(new LogEvent[0]);
95     }
96     
97 }
98
Popular Tags