Am Mo, den 10.11.2003 schrieb Shapira, Yoav um 18:20:
> Howdy,
> A couple of things (I haven't even read the substance of the patch,
> these are just style comments):
> - I'd prefer a diff instead of the whole file,
would that be something like the appended file?
> - It looked like there were tabs in the file?
yes.. there already were tabs in the file before I edited it.
I tried to figure out what kind of formatting-style is used and
to emulate that.
--
have fun,
Sven Helmberger,
Amaris Softwareentwicklungsges. mbH
--- jakarta-log4j-1.2.8/src/java/org/apache/log4j/NDC.java 2003-02-20 02:07:34.000000000 +0100
+++ /home/sven/src/log4j/org/apache/log4j/NDC.java 2003-11-10 17:56:58.000000000 +0100
@@ -200,7 +200,22 @@
String get() {
Stack s = (Stack) ht.get(Thread.currentThread());
if(s != null && !s.isEmpty())
- return ((DiagnosticContext) s.peek()).fullMessage;
+ {
+ DiagnosticContext top=(DiagnosticContext) s.peek();
+ if (top.fullMessage == null) {
+
+ StringBuffer buf=new StringBuffer();
+
+ for (Enumeration e=s.elements(); e.hasMoreElements(); )
+ {
+ DiagnosticContext dc=(DiagnosticContext)e.nextElement();
+ buf.append(dc.message).append(' ');
+ }
+
+ top.fullMessage=buf.toString();
+ }
+ return top.fullMessage;
+ }
else
return null;
}
@@ -278,6 +293,24 @@
public
static
String pop() {
+ return popObject().toString();
+ }
+
+ /**
+ Clients should call this method before leaving a diagnostic
+ context.
+
+ <p>The returned value is the value that was pushed last. If no
+ context is available, then the empty string "" is returned.
+
+ The difference to [EMAIL PROTECTED] #pop()} is that is gives the possibility
+ to pop the context information without evaluating the String
+ representation.
+
+ @see #pop() */
+ public
+ static
+ Object popObject() {
Thread key = Thread.currentThread();
Stack stack = (Stack) ht.get(key);
if(stack != null && !stack.isEmpty())
@@ -299,10 +332,16 @@
public
static
String peek() {
+ return peekObject().toString();
+ }
+
+ public
+ static
+ Object peekObject() {
Thread key = Thread.currentThread();
Stack stack = (Stack) ht.get(key);
if(stack != null && !stack.isEmpty())
- return ((DiagnosticContext) stack.peek()).message;
+ return ((DiagnosticContext) stack.peek()).message.toString();
else
return "";
}
@@ -317,21 +356,33 @@
public
static
void push(String message) {
+
+ // Push string argument as Object
+ push((Object)message);
+ }
+
+ /**
+ Push new diagnostic context information for the current thread.
+ This variant takes an Object-message and calls the object's
+ toString() if the content is needed.
+ This late evaluation is an optimization for context information
+ which is costly to convert into a String representation.
+
+ @param message The new diagnostic context information.
+ @see #push(String) */
+ public
+ static
+ void push(Object message) {
Thread key = Thread.currentThread();
Stack stack = (Stack) ht.get(key);
-
- if(stack == null) {
- DiagnosticContext dc = new DiagnosticContext(message, null);
+ DiagnosticContext dc = new DiagnosticContext(message);
+
+ if(stack == null){
+
stack = new Stack();
ht.put(key, stack);
- stack.push(dc);
- } else if (stack.isEmpty()) {
- DiagnosticContext dc = new DiagnosticContext(message, null);
- stack.push(dc);
- } else {
- DiagnosticContext parent = (DiagnosticContext) stack.peek();
- stack.push(new DiagnosticContext(message, parent));
- }
+ }
+ stack.push(dc);
}
/**
@@ -399,17 +450,12 @@
// =====================================================================
private static class DiagnosticContext {
-
+
String fullMessage;
- String message;
+ Object message;
- DiagnosticContext(String message, DiagnosticContext parent) {
+ DiagnosticContext(Object message) {
this.message = message;
- if(parent != null) {
- fullMessage = parent.fullMessage + ' ' + message;
- } else {
- fullMessage = message;
- }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]