|
From: Dave B. <bla...@us...> - 2012-08-17 01:10:07
|
Update of /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/logging
In directory vz-cvs-3.sog:/tmp/cvs-serv1307/src/org/sblim/cimclient/internal/logging
Modified Files:
Tag: Experimental
LogAndTraceBroker.java
Log Message:
3554738 - dump CIM xml by LogAndTraceBroker.trace()
Index: LogAndTraceBroker.java
===================================================================
RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/logging/LogAndTraceBroker.java,v
retrieving revision 1.10.2.15
retrieving revision 1.10.2.16
diff -u -d -r1.10.2.15 -r1.10.2.16
--- LogAndTraceBroker.java 29 Feb 2012 04:24:41 -0000 1.10.2.15
+++ LogAndTraceBroker.java 17 Aug 2012 01:10:05 -0000 1.10.2.16
@@ -28,6 +28,7 @@
* 3469018 2012-01-03 blaschke-oss Properties not passed to CIMIndicationHandler
* 3484014 2012-02-03 blaschke-oss Add LogAndTraceBroker.isLoggable for message/trace
* 3489638 2012-02-28 blaschke-oss PERF: Bottleneck in LogAndTraceBroker.java - getCaller()
+ * 3554738 2012-08-16 blaschke-oss dump CIM xml by LogAndTraceBroker.trace()
*/
package org.sblim.cimclient.internal.logging;
@@ -46,6 +47,7 @@
import java.util.logging.LogRecord;
import java.util.logging.Logger;
+import org.sblim.cimclient.CIMXMLTraceListener;
import org.sblim.cimclient.LogAndTraceManager;
import org.sblim.cimclient.LogListener;
import org.sblim.cimclient.TraceListener;
@@ -97,6 +99,8 @@
private volatile ArrayList<TraceListener> iTraceListeners;
+ private volatile ArrayList<CIMXMLTraceListener> iCIMXMLTraceListeners;
+
private String iProductName = "SBLIM CIM Client for Java";
private String iCopyright = "COPYRIGHT (C) 2006, 2012 IBM Corp.";
@@ -138,6 +142,7 @@
private LogAndTraceBroker() {
this.iLogListeners = new ArrayList<LogListener>();
this.iTraceListeners = new ArrayList<TraceListener>();
+ this.iCIMXMLTraceListeners = new ArrayList<CIMXMLTraceListener>();
loadVersionTxt();
registerInternalListeners();
}
@@ -523,6 +528,51 @@
}
/**
+ * Adds a listener for CIM-XML trace messages. The listener will be notified
+ * of any CIM-XML trace event.
+ *
+ * @param pListener
+ * The listener
+ */
+ public synchronized void addCIMXMLTraceListener(CIMXMLTraceListener pListener) {
+ if (pListener == null) return;
+ ArrayList<CIMXMLTraceListener> newListeners = new ArrayList<CIMXMLTraceListener>(
+ this.iCIMXMLTraceListeners);
+ newListeners.add(pListener);
+ this.iCIMXMLTraceListeners = newListeners;
+ }
+
+ /**
+ * Removes a CIM-XML trace listener. This listener will not be notified of
+ * CIM-XML trace events anymore.
+ *
+ * @param pListener
+ * The listener
+ */
+ public synchronized void removeCIMXMLTraceListener(CIMXMLTraceListener pListener) {
+ ArrayList<CIMXMLTraceListener> newListeners = new ArrayList<CIMXMLTraceListener>(
+ this.iCIMXMLTraceListeners);
+ if (!newListeners.remove(pListener)) return;
+ this.iCIMXMLTraceListeners = newListeners;
+ }
+
+ /**
+ * Removes all CIM-XML trace listeners.
+ */
+ public synchronized void clearCIMXMLTraceListeners() {
+ if (this.iCIMXMLTraceListeners.size() > 0) this.iCIMXMLTraceListeners = new ArrayList<CIMXMLTraceListener>();
+ }
+
+ /**
+ * Gets the registered CIM-XML trace listeners.
+ *
+ * @return A list of listeners
+ */
+ public List<CIMXMLTraceListener> getCIMXMLTraceListeners() {
+ return this.iCIMXMLTraceListeners;
+ }
+
+ /**
* Forwards a log/trace message to the registered log&trace listeners.
*
* @param pKey
@@ -623,6 +673,30 @@
}
/**
+ * Forwards a CIM-XML trace message to the registered CIM-XML trace
+ * listeners.
+ *
+ * @param pMessage
+ * The CIM-XML message text
+ * @param pOutgoing
+ * <code>true</code> if CIM-XML is outgoing (being sent from
+ * client to server), <code>false</code> if CIM-XML is incoming
+ * (being sent from server to client)
+ */
+ public void traceCIMXML(String pMessage, boolean pOutgoing) {
+ try {
+ if (this.iCIMXMLTraceListeners.size() > 0) {
+ final List<CIMXMLTraceListener> traceListeners = getCIMXMLTraceListeners();
+ for (int i = 0; i < traceListeners.size(); ++i) {
+ traceListeners.get(i).traceCIMXML(pMessage, pOutgoing);
+ }
+ }
+ } catch (Exception e) {
+ // don't crash for logging
+ }
+ }
+
+ /**
* Forwards a method entry message to the registered trace listeners.
*/
public void entry() {
@@ -784,4 +858,24 @@
return true;
}
+
+ /**
+ * Checks whether there are CIM-XML trace listeners installed that will log
+ * a CIM-XML trace message. Use this method to determine if a trace() method
+ * call could result in logging before preparing the information to be
+ * logged. For example:
+ *
+ * <pre>
+ * if (logger.isLoggableCIMXMLTrace() {
+ * // Prepare info for logging
+ * logger.traceCIMXML(...
+ * </pre>
+ *
+ * @return <code>true</code> if CIM-XML trace message could be logged,
+ * <code>false</code> otherwise.
+ */
+ public boolean isLoggableCIMXMLTrace() {
+ // If there are no CIM-XML trace listeners, message will not be logged
+ return this.iCIMXMLTraceListeners.size() > 0;
+ }
}
|