Here are the changes I was talking about before regarding making the
SMTPAppender friendlier to extension.  The patch is against rev 1.22 in CVS.

Specific changes:
  * Private members are declared to be private.
  * Private members that is needed by subclasses (like the CyclicBuffer,
TriggerEventEvaluator and Message objects) now have protected methods for
setting and getting them.
  * The Session member was removed as a member because it's only used in one
method, and therefore made local.

-Jim Moore

====================================

--- SMTPAppender.old    Sat May 19 17:06:16 2001
+++ SMTPAppender.java   Fri Apr 13 10:04:24 2001
@@ -48,12 +48,11 @@
 public class SMTPAppender extends AppenderSkeleton {
-  String to;
-  String from;
-  String subject;
-  String smtpHost;
-  int bufferSize = 512;
+  private String to;
+  private String from;
+  private String subject;
+  private String smtpHost;
+  private int bufferSize = 512;
 
-  CyclicBuffer cb = new CyclicBuffer(bufferSize);
-  Session session;
-  Message msg;
-  boolean locationInfo = false;
+  private CyclicBuffer _cb;
+  private Message _msg;
+  private boolean locationInfo = false;
 
@@ -166,2 +165,3 @@
     this.evaluator = evaluator;
+    setCyclicBuffer(new CyclicBuffer(bufferSize));
   }
@@ -194,5 +194,5 @@
 
-     session = Session.getDefaultInstance(props, null);
+     Session session = Session.getDefaultInstance(props, null);
      //session.setDebug(true);
-     msg = new MimeMessage(session);
+     MimeMessage msg = new MimeMessage(session);
      
@@ -210,2 +210,4 @@
      }
+
+     setMessage(msg);
   }
@@ -228,3 +230,3 @@
     }
-    cb.add(event);    
+    getCyclicBuffer().add(event);
     if(evaluator.isTriggeringEvent(event)) {
@@ -242,3 +244,3 @@
   boolean checkEntryConditions() {
-    if(this.msg == null) {
+    if(getMessage() == null) {
       errorHandler.error("Message object not configured.");
@@ -320,2 +322,3 @@
        sbuf.append(t);
+      CyclicBuffer cb = getCyclicBuffer();
       int len =  cb.length(); 
@@ -341,2 +344,3 @@
       mp.addBodyPart(part);
+      Message msg = getMessage();
       msg.setContent(mp);
@@ -350,3 +354,34 @@
   
+  /**
+   * Sets the CyclicBuffer this will use for keeping track
+   *   of {@link LoggingEvent}s.
+   * 
+   * @param cb     the CyclicBuffer to store the events in
+   */
+  protected void setCyclicBuffer(CyclicBuffer cb) {
+    _cb = cb;
+  }
+
+  /**
+   * Returns the CyclicBuffer the {@link LoggingEvent}s are stored in.
+   */
+  protected CyclicBuffer getCyclicBuffer() {
+    return _cb;
+  }
+
+  /**
+   * Sets the Message object used for sending the emails.
+   * 
+   * @param msg    the Message object to use for the emails.
+   */
+  protected void setMessage(Message msg) {
+    _msg = msg;
+  }
 
+  /**
+   * Gets the Message object used for sending the emails.
+   */
+  protected Message getMessage() {
+    return _msg;
+  }
 
@@ -361,2 +396,10 @@
   /**
+     Returns the TriggeringEventEvaluator this uses.
+   */
+  protected
+  TriggeringEventEvaluator getEvaluator() {
+    return evaluator;
+  }
+  
+  /**
      Returns value of the <b>From</b> option.
@@ -400,3 +443,3 @@
       bufferSize = OptionConverter.toInt(value, bufferSize);    
-      cb.resize(bufferSize);
+      getCyclicBuffer().resize(bufferSize);
     } else if (option.equals(LOCATION_INFO_OPTION))
@@ -437,3 +480,3 @@
     this.bufferSize = bufferSize;
-    cb.resize(bufferSize);
+    getCyclicBuffer().resize(bufferSize);
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to