View Javadoc
1   /*
2     (C) Copyright IBM Corp. 2006, 2012
3   
4     THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5     ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6     CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7   
8     You can obtain a current copy of the Eclipse Public License from
9     http://www.opensource.org/licenses/eclipse-1.0.php
10  
11    @author : Alexander Wolf-Reber, IBM, a.wolf-reber@de.ibm.com
12   * 
13   * Change History
14   * Flag       Date        Prog         Description
15   *------------------------------------------------------------------------------- 
16   * 1565892    2006-11-13  lupusalex    Make SBLIM client JSR48 compliant
17   * 2003590    2008-06-30  blaschke-oss Change licensing from CPL to EPL
18   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
19   * 2531371    2009-02-10  raman_arora  Upgrade client to JDK 1.5 (Phase 2)
20   * 3554738    2012-08-16  blaschke-oss dump CIM xml by LogAndTraceBroker.trace()
21   */
22  
23  package org.metricshub.wbem.sblim.cimclient;
24  
25  /*-
26   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
27   * WBEM Java Client
28   * ჻჻჻჻჻჻
29   * Copyright 2023 - 2025 MetricsHub
30   * ჻჻჻჻჻჻
31   * Licensed under the Apache License, Version 2.0 (the "License");
32   * you may not use this file except in compliance with the License.
33   * You may obtain a copy of the License at
34   *
35   *      http://www.apache.org/licenses/LICENSE-2.0
36   *
37   * Unless required by applicable law or agreed to in writing, software
38   * distributed under the License is distributed on an "AS IS" BASIS,
39   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40   * See the License for the specific language governing permissions and
41   * limitations under the License.
42   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
43   */
44  
45  import java.io.OutputStream;
46  import java.util.Collections;
47  import java.util.List;
48  import org.metricshub.wbem.sblim.cimclient.internal.logging.LogAndTraceBroker;
49  
50  /**
51   * Class LogAndTraceManager provides the means to register/unregister log and
52   * trace listeners. It is the entry point for application that want to redirect
53   * the CIM Client's log and trace messages into their own logging framework.
54   *
55   */
56  public class LogAndTraceManager {
57  	private static LogAndTraceManager cManager = new LogAndTraceManager();
58  
59  	/**
60  	 * Returns the singleton instance of the manager.
61  	 *
62  	 * @return The manager
63  	 */
64  	public static LogAndTraceManager getManager() {
65  		return cManager;
66  	}
67  
68  	private LogAndTraceManager() {
69  		super();
70  	}
71  
72  	/**
73  	 * Adds a listener for log messages. The listener will be notified of any
74  	 * log event.
75  	 *
76  	 * @param pListener
77  	 *            The listener
78  	 */
79  	public void addLogListener(LogListener pListener) {
80  		LogAndTraceBroker.getBroker().addLogListener(pListener);
81  	}
82  
83  	/**
84  	 * Remove a listener. This listener will not be notified of log events
85  	 * anymore.
86  	 *
87  	 * @param pListener
88  	 *            The listener
89  	 */
90  	public void removeLogListener(LogListener pListener) {
91  		LogAndTraceBroker.getBroker().removeLogListener(pListener);
92  	}
93  
94  	/**
95  	 * Removes all listeners. Caution: This will also remove the internal
96  	 * console and file loggers.
97  	 */
98  	public void clearLogListeners() {
99  		LogAndTraceBroker.getBroker().clearLogListeners();
100 	}
101 
102 	/**
103 	 * Gets the registered log listeners including the internal console and file
104 	 * loggers.
105 	 *
106 	 * @return An unmodifiable list of listeners
107 	 */
108 	public List<LogListener> getLogListeners() {
109 		return Collections.unmodifiableList(LogAndTraceBroker.getBroker().getLogListeners());
110 	}
111 
112 	/**
113 	 * Adds a listener for log messages. The listener will be notified of any
114 	 * trace event.
115 	 *
116 	 * @param pListener
117 	 *            The listener
118 	 */
119 	public void addTraceListener(TraceListener pListener) {
120 		LogAndTraceBroker.getBroker().addTraceListener(pListener);
121 	}
122 
123 	/**
124 	 * Removes a listener. This listener will not be notified of trace events
125 	 * anymore.
126 	 *
127 	 * @param pListener
128 	 *            The listener
129 	 */
130 	public void removeTraceListener(TraceListener pListener) {
131 		LogAndTraceBroker.getBroker().removeTraceListener(pListener);
132 	}
133 
134 	/**
135 	 * Removes all listeners. Caution this will also remove the internal trace
136 	 * file listener.
137 	 */
138 	public void clearTraceListeners() {
139 		LogAndTraceBroker.getBroker().clearTraceListeners();
140 	}
141 
142 	/**
143 	 * Gets the registered trace listeners including the internal console and
144 	 * file loggers.
145 	 *
146 	 * @return A unmodifiable list of listeners
147 	 */
148 	public List<TraceListener> getTraceListeners() {
149 		return Collections.unmodifiableList(LogAndTraceBroker.getBroker().getTraceListeners());
150 	}
151 
152 	/**
153 	 * Adds a listener for CIM-XML trace messages. The listener will be notified
154 	 * of any CIM-XML trace event.
155 	 *
156 	 * @param pListener
157 	 *            The listener
158 	 */
159 	public void addCIMXMLTraceListener(CIMXMLTraceListener pListener) {
160 		LogAndTraceBroker.getBroker().addCIMXMLTraceListener(pListener);
161 	}
162 
163 	/**
164 	 * Removes a CIM-XML trace listener. This listener will not be notified of
165 	 * CIM-XML trace events anymore.
166 	 *
167 	 * @param pListener
168 	 *            The listener
169 	 */
170 	public void removeCIMXMLTraceListener(CIMXMLTraceListener pListener) {
171 		LogAndTraceBroker.getBroker().removeCIMXMLTraceListener(pListener);
172 	}
173 
174 	/**
175 	 * Removes all CIM-XML trace listeners.
176 	 */
177 	public void clearCIMXMLTraceListeners() {
178 		LogAndTraceBroker.getBroker().clearCIMXMLTraceListeners();
179 	}
180 
181 	/**
182 	 * Gets the registered CIM-XML trace listeners.
183 	 *
184 	 * @return A unmodifiable list of listeners
185 	 */
186 	public List<CIMXMLTraceListener> getCIMXMLTraceListeners() {
187 		return Collections.unmodifiableList(LogAndTraceBroker.getBroker().getCIMXMLTraceListeners());
188 	}
189 
190 	/**
191 	 * Returns the stream to which the CIM-XML traces are sent. A value of
192 	 * <code>null</code> means that tracing is effectively disabled. Otherwise
193 	 * the CIM-XML tracing can be activated either globally or per-connection
194 	 * via the &quot;sblim.wbem.cimxmlTracing&quot; configuration property.
195 	 *
196 	 * @return The CIM-XML trace stream
197 	 */
198 	public OutputStream getXmlTraceStream() {
199 		return LogAndTraceBroker.getBroker().getXmlTraceStream();
200 	}
201 
202 	/**
203 	 * Sets the stream to which the CIM-XML traces are sent. A value of
204 	 * <code>null</code> means that tracing is effectively disabled. Otherwise
205 	 * the CIM-XML tracing can be activated either globally or per-connection
206 	 * via the &quot;sblim.wbem.cimxmlTracing&quot; configuration property.
207 	 *
208 	 * @param pStream
209 	 *            The CIM-XML trace stream
210 	 */
211 	public void setXmlTraceStream(OutputStream pStream) {
212 		LogAndTraceBroker.getBroker().setXmlTraceStream(pStream);
213 	}
214 }